ADE7858A Checksum calculation


I'm trying to calculate checksum in software to verify it against the one calculated by the metering IC.

I have received a spreadsheet of registers used for calculating checksum for ADE7858A and have a couple of questions about it.

I’ll try to cover everything thoroughly since I’m trying to understand it myself, and don’t want to make any erroneous assumptions.

There are 2344 bits total that are fed into LFSR that generates a CRC-32 checksum for ADE7858A.

The default checksum should be 0xE908F4D0

Internal registers (refer to spreadsheet) make a total of 48 bits long,  and in hex the default array of bits looks like this: 000020000400
Those are fed into LFSR first, starting with 0 then 0, 4, 0, etc

There are 48 bits above, so that works out.

Next we have configuration registers. In hex the array is 000000000000000001ff00000e88000000000000000000000000000003bd1c00780000
There are 280 bits in here so documentation on page 66 showing configuration registers are a total of 280 bits works out.
Those are fed into LFSR starting from register CFG_REVA as least significant

Then we get to DSP data memory ram registers.
There are a total of 63 registers between address 0x4380 and 0x43BE. All initial values are 0 so I won’t bother pasting that array in here.
They are mainly 24 bit registers with exception of Reserved-32 registers in that excel sheet you’ve provided.

However the total number of bits here is 1568
56 24 bit registers and 7 32 bit registers

The number of bits I expect based on datasheet is 2064 for that section.
Even if I assume all registers are 32 bits long, that still lands 2016, a bit short of expected.

What am I missing? Is the way I count them wrong? Is the way I assume they are fed into lfsr okay?
Do you have any sample code that performs this crc calculation I can take a look at?

I’ve attached a spreadsheet I am using as reference, plus some modifications I made

Thank you for your patience,
Denis Sazhaev

  • 0
    •  Analog Employees 
    on Mar 1, 2017 2:11 AM over 3 years ago

    Hi Denis,

    I apologize for the delay in the response, your message slipped by. First off, make sure that you are using the description of checksum from page 65 of the ADE7858A data sheet. In terms of you excel, I have the following corrections:

    • You are missing two internal 8-bit registers
    • I am not sure what MOD_SLOT-16 is but it should not be there
    • You have to assume every 24 bit register is 32 bits and every 10 bit register is 16 bits
    • With that, the bits add up to 2344 like mentioned in the data sheet on Page 66 (bits [a2343 to a0]).

    With that fix and the information from page 65 and 66 of the data sheet, you should be able to calculate the checksum. From your description it seems that you have a good understanding of how it works, try again with the corrections above.



  • Thank you for your response and sorry for the late reply.

    To clarify, what are the values of two internal 8 bit registers you've mentioned? Where are they placed relative to other internal registers? As I'm assuming ordering of registers is important to calculate the proper checksum.

    Regarding excel, I got it from email support. It's possible they have erroneously provided it for the wrong chip, but I'm not sure.

    Thank you in advance.