Post Go back to editing

The ADE9103 intermittently returns the incorrect CRC16 Checksum.

Category: Hardware
Product Number: ADE9103

While reading data back from the ADE9103 we are seeing intermittent CRC errors on the Read response packets.  While reading data back from the ADE9103 we are seeing intermittent CRC errors on the Read response packets. The CRC errors intermittently on both Short Reads and Long Read operations.

The example below shows a short read to STATUS0 Register that fails CRC.

 

  1. <info> OB SPI (MOSI): 00, 00, 80, 20, 00, F0
  2. <info> IB SPI (MISO): 00, 00, 00, 00, 00, 00
  3. <info> OB SPI (MOSI): 00, 00, 80, 00, 00, 5E
  4. <info> IB SPI (MISO): 80, 09, 00, 01, 07, 44
  5. <debug> ade9113_read() Second SPI Bus transfer RESPONSE[0x80]
  6. <debug> ade9113_read() Second SPI Bus transfer  STATUS0[0x09]
  7. <debug> ade9113_read() Second SPI Bus transfer  REG+1  [0x00]
  8. <debug> ade9113_read() Second SPI Bus transfer  REG    [0x01]
  9. <debug> ade9113_read() Second SPI Bus transfer  CRC_LO [0x07]
  10. <debug> ade9113_read() Second SPI Bus transfer  CRC_HI [0x44]
  11. <debug>
  12. <debug> =====================================
  13. <debug> CHECK THE CRC16 RECEIVED FROM THE SPI
  14. <debug> =====================================
  15. <debug> ade9113_read() Calculated CRC16[0xd748] position[a] no_of_read_bytes[6]
  16. <debug> ade9113_read() Received CRC16[0x4407] position[a] no_of_read_bytes[6]

 

The yellow Highlighted area shows the response data, and the blue shows the CRC16 for that data.

Line 15: shows the Expected CRC16 [0xd748] we generated in firmware using the data (80, 09, 00, 01) returned.

Line 16: shows the Actual CRC16 [0x4407] the ADE9103 returned with the response data.

You can see the Expected and Actual CRC do not match.

I used an online CRC16 generation tool using CRC16_CCITT_FALSE to verify which CRC is correct.  The page is located at the following link. https://www.sunshine2k.de/coding/javascript/crc/crc_js.html  See below:

I entered the data (80, 09, 00, 01) and the tool calculated a CRC of 0xd748 which matches the CRC calculated by the firmware. So, it appears that the CRC calculated by the ADE9103 is incorrect while the CRC calculated by the Firmware matches the online CRC tool (see blue arrow below).

This seems to be an intermittent failure, just wondering if you might have some insight on what could cause this failure.  Are there any register settings that could affect the CRC generation? 

Thanks - mike