Part Number: AFE4404
Other Parts Discussed in Thread: AFE4403
Hi,
We have integrated the AFE4404 with SFH7060 on our device.
We are able to drive Green, RED and IR led intensity from SFH7060, configure clock ...
When a measure is started, we receive interrupt from AFE4404 as expected, but when we read registers we get this :
LED2VAL : 00 00 00
LED3VAL : 00 00 00
LED1VAL : 00 00 00
ALED1VAL : 00 00 00
LED2_ALED2VAL : 00 00 00
LED1_ALED1VAL : 00 00 XX
Where XX are random values.
For testing purpose, we put a white light source on the sensors XX becomes 00.
On I2C, the AFE4404 send ACK for all frames.
If we put the finger on the sensors, the values does not reflect the presence or not of the finger.
Here the configurations we used :
Config 1 : (based on MSP430 code from TI)
AFE4404_Reg_Write(1, 100); //AFE_LED2STC
AFE4404_Reg_Write(2, 399); //AFE_LED2ENDC
AFE4404_Reg_Write(3, 802); //AFE_LED1LEDSTC
AFE4404_Reg_Write(4, 1201); //AFE_LED1LEDENDC
AFE4404_Reg_Write(5, 501); //AFE_ALED2STC
AFE4404_Reg_Write(6, 800); //AFE_ALED2ENDC
AFE4404_Reg_Write(7, 902); //AFE_LED1STC
AFE4404_Reg_Write(8, 1201); //AFE_LED1ENDC
AFE4404_Reg_Write(9, 0); //AFE_LED2LEDSTC
AFE4404_Reg_Write(10, 399); //AFE_LED2LEDENDC
AFE4404_Reg_Write(11, 1303); //AFE_ALED1STC
AFE4404_Reg_Write(12, 1602); //AFE_ALED1ENDC
AFE4404_Reg_Write(13, 409); //AFE_LED2CONVST
AFE4404_Reg_Write(14, 1468); //AFE_LED2CONVEND
AFE4404_Reg_Write(15, 1478); //AFE_ALED2CONVST
AFE4404_Reg_Write(16, 2537); //AFE_ALED2CONVEND
AFE4404_Reg_Write(17, 2547); //AFE_LED1CONVST
AFE4404_Reg_Write(18, 3606); //AFE_LED1CONVEND
AFE4404_Reg_Write(19, 3616); //AFE_ALED1CONVST
AFE4404_Reg_Write(20, 4675); //AFE_ALED1CONVEND
AFE4404_Reg_Write(21, 401); //AFE_ADCRSTSTCT0
AFE4404_Reg_Write(22, 407); //AFE_ADCRSTENDCT0
AFE4404_Reg_Write(23, 1470); //AFE_ADCRSTSTCT1
AFE4404_Reg_Write(24, 1476); //AFE_ADCRSTENDCT1
AFE4404_Reg_Write(25, 2539); //AFE_ADCRSTSTCT2
AFE4404_Reg_Write(26, 2545); //AFE_ADCRSTENDCT2
AFE4404_Reg_Write(27, 3608); //AFE_ADCRSTSTCT3
AFE4404_Reg_Write(28, 3614); //AFE_ADCRSTENDCT3
AFE4404_Reg_Write(54, 401); //AFE_LED3LEDSTC
AFE4404_Reg_Write(55, 800); //AFE_LED3LEDENDC
AFE4404_Reg_Write(29, 39999); //AFE_PRPCOUNT
AFE4404_Reg_Write(30, 0x000100); //AFE_CONTROL1 TimerEN = 1; NUMAV = 3
AFE4404_Reg_Write(32, 0x008003); //AFE_TIA_SEP_GAIN (LED2) ENSEPGAIN = 1; LED2/LED3 gain = 50K
AFE4404_Reg_Write(33, 0x000003); //AFE_TIA_GAIN (LED1) LED1/LED1AMB gain = 50K
AFE4404_Reg_Write(58, 0x000000); //AFE_DAC_SETTING_REG
AFE4404_Reg_Write(34, 0x0030CF); //LED3 - 3.125mA; LED2 - 3.125mA; LED1 - 12.5mA
AFE4404_Reg_Write(35, 0x124018 | (1 << 9)); //DYN1, LEDCurr, DYN2, Ext CLK, DYN3, DYN4 //0x000200); - 0x200 Osc mode //AFE_CONTROL2
AFE4404_Reg_Write(49, 0x000020); //ENABLE_INPUT_SHORT
AFE4404_Reg_Write(57, 0); //CLKDIV_PRF
AFE4404_Reg_Write(50, 5475); //AFE_DPD1STC
AFE4404_Reg_Write(51, 39199); //AFE_DPD1ENDC
Config 2 (based on AFE4403 GUI application) :
AFE4404_Reg_Write(AFE_CONTROL0,0x000000);
AFE4404_Reg_Write(AFE_LED2STC,0x0017C0);
AFE4404_Reg_Write(AFE_LED2ENDC, 0x01F3E);
AFE4404_Reg_Write(AFE_LED2LEDSTC, 0x01770);
AFE4404_Reg_Write(AFE_LED2LEDENDC, 0x01F3F);
AFE4404_Reg_Write(AFE_ALED2STC, 0x00050);
AFE4404_Reg_Write(AFE_ALED2ENDC, 0x007CE);
AFE4404_Reg_Write(AFE_LED1STC, 0x00820);
AFE4404_Reg_Write(AFE_LED1ENDC, 0x00F9E);
AFE4404_Reg_Write(AFE_LED1LEDSTC, 0x007D0);
AFE4404_Reg_Write(AFE_LED1LEDENDC, 0x00F9F);
AFE4404_Reg_Write(AFE_ALED1STC, 0x00FF0);
AFE4404_Reg_Write(AFE_ALED1ENDC, 0x0176E);
AFE4404_Reg_Write(AFE_LED2CONVST, 0x00006);
AFE4404_Reg_Write(AFE_LED2CONVEND, 0x007CF);
AFE4404_Reg_Write(AFE_ALED2CONVST, 0x007D6);
AFE4404_Reg_Write(AFE_ALED2CONVEND, 0x00F9F);
AFE4404_Reg_Write(AFE_LED1CONVST, 0x00FA6);
AFE4404_Reg_Write(AFE_LED1CONVEND, 0x0176F);
AFE4404_Reg_Write(AFE_ALED1CONVST, 0x01776);
AFE4404_Reg_Write(AFE_ALED1CONVEND, 0x01F3F);
AFE4404_Reg_Write(AFE_ADCRSTSTCT0, 0x00000);
AFE4404_Reg_Write(AFE_ADCRSTENDCT0, 0x00005);
AFE4404_Reg_Write(AFE_ADCRSTSTCT1, 0x007D0);
AFE4404_Reg_Write(AFE_ADCRSTENDCT1, 0x007D5);
AFE4404_Reg_Write(AFE_ADCRSTSTCT2, 0x00FA0);
AFE4404_Reg_Write(AFE_ADCRSTENDCT2, 0x00FA5);
AFE4404_Reg_Write(AFE_ADCRSTSTCT3, 0x01770);
AFE4404_Reg_Write(AFE_ADCRSTENDCT3, 0x01775);
AFE4404_Reg_Write(AFE_PRPCOUNT, 0x01F3F);
AFE4404_Reg_Write(AFE_CONTROL1, 0x00101);
AFE4404_Reg_Write(AFE_SPARE1, 0x00000);
AFE4404_Reg_Write(AFE_TIAGAIN, 0x00000);
AFE4404_Reg_Write(AFE_TIAAMBGAIN, 0x00002); // 0x21
AFE4404_Reg_Write(AFE_LEDCNTRL, 0x11414);
AFE4404_Reg_Write(AFE_CONTROL2, 0x00000);
AFE4404_Reg_Write(AFE_SPARE2, 0x00000);
AFE4404_Reg_Write(AFE_SPARE3, 0x00000);
AFE4404_Reg_Write(AFE_SPARE4, 0x00000);
AFE4404_Reg_Write(AFE_RESERVED1, 0x00000);
AFE4404_Reg_Write(AFE_RESERVED2, 0x00000);
AFE4404_Reg_Write(AFE_ALARM, 0x00000);
AFE4404_Reg_Write(AFE_LED2VAL, 0x00000);
AFE4404_Reg_Write(AFE_ALED2VAL, 0x00000);
AFE4404_Reg_Write(AFE_LED1VAL, 0x00000);
AFE4404_Reg_Write(AFE_ALED1VAL, 0x00000);
AFE4404_Reg_Write(AFE_PDNCYCLESTC, 0x00000);
AFE4404_Reg_Write(AFE_PDNCYCLEENDC, 0x00000);
AFE4404_Reg_Write(35, (1 << 9));
Same result with both configurations. I also tried with configuration from AFE4404 linux driver source code, with exact same result.
Any help would be appreciate.
Best regards.




