Hi Shao,
1. The MC33771 device datasheet tells you that all raw measurements are done in mVolts in the range [CTx_UV_TH .. CTx_OV_TH]. The MEAS_xxxx registers contain the measured values as a result of on-demand conversions.
Therefore the driver also stores the mVolt values to not waste time for conversion to float. It is up to the application to do float calculation based on those integer values.
2. Yes, the first index [15] means up to 15 MC33771 nodes, or clusters, where cluster ID = 0..14 is assigned to the device during initialization phase (enumeration).
The second index [24] means measurements obtained from the MC337771.
[0] = VStack
[1~14] = VCellx
[15~21] = Vtemperature
[22,23] = store Vadc-a, Vadc-b in debugging purpuse code, but no longer used in this code.
3. ECC signature is a 32-bit word, so you are right, is must be uint32_t. There is a copy/paste bug in the structure definition. Be cautious to change this in the *.h to uint32_t. Otherwise in case we have two or more clusters every next ECC value would overwrite the previous one because of this bug.
Best regards,
Tomas