SBAA106A June   2020  – August 2021 ADS112C04 , ADS112U04 , ADS114S06 , ADS114S08 , ADS122C04 , ADS122U04 , ADS1235 , ADS1235-Q1 , ADS124S06 , ADS124S08 , ADS1259 , ADS1259-Q1 , ADS125H01 , ADS125H02 , ADS1260 , ADS1260-Q1 , ADS1261 , ADS1262 , ADS1263 , ADS127L01 , ADS131A02 , ADS131A04 , ADS131M04 , ADS131M06 , ADS131M08

 

  1.   Trademarks
  2. 1Introduction
  3. 2Simple Checksum
    1. 2.1 Checksum Code Example
  4. 3CRC
    1. 3.1 CRC Generic Computations
      1. 3.1.1 Using XOR Bitwise Computation
      2. 3.1.2 Using Lookup Tables
        1. 3.1.2.1 Table Initialization
        2. 3.1.2.2 CRC Computation
      3. 3.1.3 CRC Computation Differences Between the ADS122U04 and ADS122C04
        1. 3.1.3.1 Byte Reflection Example
        2. 3.1.3.2 Reassembling Data Using Byte Reflection for CRC Computation
  5. 4Hamming Code
    1. 4.1 Hamming Code Computation
      1. 4.1.1 Hamming Code Computation Example
        1. 4.1.1.1 Counting Bits for Parity and Checksum Computations
          1. 4.1.1.1.1 Example of Counting Set Bits in the Data
          2. 4.1.1.1.2 Example of Counting Set Bits Using a Lookup Table
      2. 4.1.2 Validation of Transmitted Data
        1. 4.1.2.1 Hamming Validation
        2. 4.1.2.2 Checksum Validation
        3. 4.1.2.3 Error Correction
  6. 5Summary
  7. 6References
  8. 7Revision History

Byte Reflection Example

The following code example is a method to reverse, or reflect, the order of bits within a byte. The order of b7, b6, b5, b4, b3, b2, b1, b0 is reflected to the returned bit order of b0, b1, b2, b3, b4, b5, b6, b7.

/**
 * Reverses the bit order of a byte.
 *
 * \details Reorders the bits in reverse order of byte submitted
 * and returns byte as unsigned byte. This is required as the data is always
 * transmitted out the UART lsb first when comparing TX and RX data.
 *
 * \param    uint8_t u8Byte data byte to be reversed.
 *
 * \returns  uint8_t u8RevByte.
 */
uint8_t revByte(uint8_t u8Byte)
{
    uint8_t u8i, u8RevByte = 0;        // For each bit in the byte, starting with bit 0
    for (u8i = 0; u8i < 8; u8i++)
    {
        u8RevByte |= (u8Byte & 0x01);  // Take one bit of the input byte and store it 
                                       //    in the new byte
        u8Byte >>= 1;                  // Get the next bit
        if (u8i < 7) u8RevByte <<= 1;  // Do not shift the last bit of the new byte
    }
    return u8RevByte;
}