Netduino home hardware projects downloads community

Jump to content


The Netduino forums have been replaced by new forums at community.wildernesslabs.co. This site has been preserved for archival purposes only and the ability to make new accounts or posts has been turned off.
Photo

C# code for Maxim CRC8

Maxim CRC8

  • Please log in to reply
2 replies to this topic

#1 blearyeye

blearyeye

    New Member

  • Members
  • Pip
  • 1 posts

Posted 30 January 2014 - 07:03 PM

I'm using the Maxim DS18s20 temperature sensor. It calculates CRC using a CRC8 algorithm that involves either table lookup or bit shifting. I haven't seen any example in C#. Any pointers?



#2 Mario Vernari

Mario Vernari

    Advanced Member

  • Members
  • PipPipPip
  • 1768 posts
  • LocationVenezia, Italia

Posted 31 January 2014 - 04:44 AM

Here is a possible way:

http://www.codeproje...8-CRC-Algorithm


Biggest fault of Netduino? It runs by electricity.

#3 asciiman

asciiman

    Advanced Member

  • Members
  • PipPipPip
  • 56 posts
  • LocationTurkey

Posted 13 February 2014 - 12:15 AM

hi 

i read some topic from this site. and combine its for me. And i found excel for crc calculating and i convert it to c#. Excel is not perfect but i fix it. :)

 

 

[font="'courier new', courier, monospace;"]        /// <summary><para></para>[/font]
[font="'courier new', courier, monospace;"]        /// http://www.maximinte...dex.mvp/id/4600[/font]
[font="'courier new', courier, monospace;"]        /// </summary>[/font]
[font="'courier new', courier, monospace;"]        /// <param name="pScratchpadBytes">8 byte Scratchpad value</param>[/font]
[font="'courier new', courier, monospace;"]        /// <param name="pCRCByte">1 byte CRC (Cyclic Redundancy Check)</param>[/font]
[font="'courier new', courier, monospace;"]        private static Boolean ScratchpadCRC(byte[] pScratchpadBytes, byte pCRCByte)[/font]
[font="'courier new', courier, monospace;"]        {[/font]
[font="'courier new', courier, monospace;"]            string xBinarySequence = "";[/font]
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 8; xIndex++)[/font]
[font="'courier new', courier, monospace;"]                xBinarySequence += AsciiWhite.Core.DecimalToBinary(pScratchpadBytes[7 - xIndex]);[/font]
 
[font="'courier new', courier, monospace;"]            var xReversedBinaryArray = new byte[64];[/font]
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 64; xIndex++)[/font]
[font="'courier new', courier, monospace;"]                xReversedBinaryArray[63 - xIndex] = Convert.ToByte(xBinarySequence[xIndex].ToString());[/font]
 
[font="'courier new', courier, monospace;"]            // Calculate CRC[/font]
[font="'courier new', courier, monospace;"]            int tmpCRC = 0;[/font]
[font="'courier new', courier, monospace;"]            int[] xCRCBits = new int[8];[/font]
 
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 64; xIndex++)[/font]
[font="'courier new', courier, monospace;"]            {[/font]
[font="'courier new', courier, monospace;"]                tmpCRC = xCRCBits[0] ^ xReversedBinaryArray[xIndex];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[0] = xCRCBits[1];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[1] = xCRCBits[2];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[2] = xCRCBits[3] ^ tmpCRC;[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[3] = xCRCBits[4] ^ tmpCRC;[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[4] = xCRCBits[5];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[5] = xCRCBits[6];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[6] = xCRCBits[7];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[7] = tmpCRC;[/font]
[font="'courier new', courier, monospace;"]            }[/font]
 
[font="'courier new', courier, monospace;"]            string tmpCRCBinary = "";[/font]
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 8; xIndex++)[/font]
[font="'courier new', courier, monospace;"]                tmpCRCBinary += xCRCBits[7 - xIndex].ToString();[/font]
 
[font="'courier new', courier, monospace;"]            int xDecimalCRC = AsciiWhite.Core.BinaryToDecimal(tmpCRCBinary);[/font]
[font="'courier new', courier, monospace;"]            return (xDecimalCRC == pCRCByte);[/font]
[font="'courier new', courier, monospace;"]        }[/font]
 
[font="'courier new', courier, monospace;"]        /// <summary><para></para>[/font]
[font="'courier new', courier, monospace;"]        /// http://www.maximinte...dex.mvp/id/4600[/font]
[font="'courier new', courier, monospace;"]        /// </summary>[/font]
[font="'courier new', courier, monospace;"]        /// <param name="pFamilyCode">1 byte FamilyCode (0x28)</param>[/font]
[font="'courier new', courier, monospace;"]        /// <param name="pROMBytes">6 byte UniqueID</param>[/font]
[font="'courier new', courier, monospace;"]        /// <param name="pCRCByte">1 byte CRC (Cyclic Redundancy Check)</param>[/font]
[font="'courier new', courier, monospace;"]        private static Boolean ROMCRC(byte pFamilyCode, byte[] pROMBytes, byte pCRCByte)[/font]
[font="'courier new', courier, monospace;"]        {[/font]
[font="'courier new', courier, monospace;"]            string xBinarySequence = "";[/font]
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 6; xIndex++)[/font]
[font="'courier new', courier, monospace;"]                xBinarySequence += AsciiWhite.Core.DecimalToBinary(pROMBytes[5 - xIndex]);[/font]
 
[font="'courier new', courier, monospace;"]            xBinarySequence += AsciiWhite.Core.DecimalToBinary(pFamilyCode);[/font]
 
[font="'courier new', courier, monospace;"]            var xReversedBinaryArray = new byte[56];[/font]
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 56; xIndex++)[/font]
[font="'courier new', courier, monospace;"]                xReversedBinaryArray[55 - xIndex] = Convert.ToByte(xBinarySequence[xIndex].ToString());[/font]
 
[font="'courier new', courier, monospace;"]            // Calculate CRC[/font]
[font="'courier new', courier, monospace;"]            int tmpCRC = 0;[/font]
[font="'courier new', courier, monospace;"]            int[] xCRCBits = new int[8];[/font]
 
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 56; xIndex++)[/font]
[font="'courier new', courier, monospace;"]            {[/font]
[font="'courier new', courier, monospace;"]                tmpCRC = xCRCBits[0] ^ xReversedBinaryArray[xIndex];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[0] = xCRCBits[1];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[1] = xCRCBits[2];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[2] = xCRCBits[3] ^ tmpCRC;[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[3] = xCRCBits[4] ^ tmpCRC;[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[4] = xCRCBits[5];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[5] = xCRCBits[6];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[6] = xCRCBits[7];[/font]
[font="'courier new', courier, monospace;"]                xCRCBits[7] = tmpCRC;[/font]
[font="'courier new', courier, monospace;"]            }[/font]
 
[font="'courier new', courier, monospace;"]            string tmpCRCBinary = "";[/font]
[font="'courier new', courier, monospace;"]            for (int xIndex = 0; xIndex < 8; xIndex++)[/font]
[font="'courier new', courier, monospace;"]                tmpCRCBinary += xCRCBits[7 - xIndex].ToString();[/font]
 
[font="'courier new', courier, monospace;"]            int xDecimalCRC = AsciiWhite.Core.BinaryToDecimal(tmpCRCBinary);[/font]
[font="'courier new', courier, monospace;"]            return (xDecimalCRC == pCRCByte);[/font]
[font="'courier new', courier, monospace;"]        }[/font]

Attached Files






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.