This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] LMP90080: CRC function in LMP90080

Part Number: LMP90080
Other Parts Discussed in Thread: LMP90100, LMP90099, LMP90098, LMP90097, LMP90079, LMP90078, LMP90077,

Tool/software:

Hi,

I’m trying to use CRC to ensure integrity of data on my LMP90080, but my externally calculated value does not match the CRC value provided by the ADC.

What could be the reason?

  • Hi,

    The LMP90080 is a 16-bit ADC, and the conversion data is stored in register addresses 0x1A and 0x1B. Address 0x1C is reserved for the LMP90100 family of devices, which are the 24-bit ADC versions of the device:

    However, the CRC calculation on the LMP90080 uses the same protocol as the 24-bit devices and the CRC is performed on all 0x1A, 0x1B AND 0x1C. 

    The registers 0x1A (Data MSB), 0x1B (Data LSB), 0x1C, and 0x1D (register SPI_CRC_DAT, where the CRC value is stored) should all be read together in the same SPI frame for proper operation once the CRC has been enabled (by writing to the SPI_CRC_CN field, register address 0x13).

    The CRC polynomial is x^8 + x^5 + x^4 + 1. The reset value of the SPI_CRC_DAT register is zero, and the final value is ones-complemented before it is sent out. 

    Example CRC calculation:

    Best Regards,

    Angel

  • This information is relevant to the entire family of devices, which includes:

    • LMP90100
    • LMP90099
    • LMP90098
    • LMP90097
    • LMP90080
    • LMP90079
    • LMP90078
    • LMP90077
    • LMP90080-Q1

    Best Regards,

    Angel