ADE7880 hardware and real world value conversion questions

Helo,

We are using ADE7880 for a smart meter design and i have few question regarding the implementation and conversion to real world values. We are using rogowski coils for current and direct connection for voltage.

On the hardware side i checked another board based on ADE7880 and noticed a part differing from reference design, present on both current and voltage side, which i at first assumed was a BAV99S (quad diode in two serie) due to the laser marking KI, but after checking datasheet it doesnt seem to match with the pinout. Here are some pictures of the current and voltage circuits with the part in question, maked D2 and D3. I shown the underneath traces with red lines. Below is the schematic of what it would be give if it was a BAV99S and it doesnt seems to make much sense. So what could be this part and what would be it function? Is it a simple ovevoltage protection? which reference is advised?

 

On the firmware side my question is how to translate registers readings to real world values, i have a set of known goodcalibration data for the current circuit, i can read the registers of interrest, but i am not sure how they should be converted to real world values. Below are my calibration datas: 

unsigned char D_AIGAIN[4]={0x92,0x6A,0xFD,0x0F};
unsigned char D_AVGAIN[4]={0xEF,0xE3,0xFC,0x0F};
unsigned char D_BIGAIN[4]={0xCE,0xFE,0xFD,0x0F};
unsigned char D_BVGAIN[4]={0x93,0x5D,0xFC,0x0F};
unsigned char D_CIGAIN[4]={0x45,0x8B,0xFD,0x0F};
unsigned char D_CVGAIN[4]={0x17,0xEB,0xFC,0x0F};
unsigned char D_NIGAIN[4]={0x00,0x00,0x00,0x00};
unsigned char D_DICOEFF[4]={0x00,0x80,0xFF,0x0F};
unsigned char D_VLEVEL[4]={0xCF,0x52,0x00,0x00};
unsigned char D_Gain[2]={0x01,0x00};
unsigned char D_CFMODE[2]={0xA0,0x0E};
unsigned char D_APHCAL[2]={0x2A,0x01};
unsigned char D_BPHCAL[2]={0x2A,0x01};
unsigned char D_CPHCAL[2]={0x2A,0x01};
unsigned char D_PHSIGN[2]={0x77,0x00};
unsigned char D_CONFIG[2]={0x03,0x00};
unsigned char D_ACCMODE[1]={0x80};
unsigned char D_LCYCMODE[1]={0x8F};
unsigned char D_CFCYC[1]={0x01};
unsigned char D_HCONFIG[2]={0x08,0x00};
unsigned char D_CONFIG3[1]={0x03}; 
unsigned char D_WTHR[1]={0x07};
unsigned char D_VARTHR[1]={0x07};
unsigned char D_VATHR[1]={0x07};
unsigned char D_HX_reg[1]={0x02};
unsigned char D_HY_reg[1]={0x03};
unsigned char D_HZ_reg[1]={0x04};
unsigned char D_LPOILVL[1]={0x07};
unsigned char D_CONFIG2[1]={0x00};

All omitted registers are at 0x00.

Any help will be much appreciated.

Thanks



typo
[edited by: Hoel at 12:02 AM (GMT 0) on 8 Nov 2019]