Part Number: AFE4900
Hi,
I'm trying to use AFE4900 Develop a 3 PPG + ECG device, and I have two issue need help.
1. I can't get the ECG signal.
I can see the different by raw data when I put on or take off my finge , but It just no ECG signal (whether Gain =12 or Gain=2).
2. The PPG raw data MSB always the same value(like 0x0A or 0x0D).
I'm using internal oscillator then division ratio to 32KHz and set PRF to 250Hz, no FIFO.
Here is my AFE4900 setting :
{0x00, 0x000020}, /*CONTROL0*/
{0x01, 0x000013},/*LED2STC*/
{0x02, 0x000014}, /*LED2ENDC*/
{0x03, 0x000019},/*LED1LEDSTC*/
{0x04, 0x00001C}, /*LED1LEDENDC*/
{0x05, 0x000017},/*ALED2STC*/
{0x06, 0x000018}, /*ALED2ENDC*/
{0x07, 0x00001B}, /*LED1STC*/
{0x08, 0x00001C},/*LED1ENDC*/
{0x09, 0x000011}, /*LED2LEDSTC*/
{0x0A, 0x000014},/*LED2LEDENDC*/
{0x0B, 0x00001F}, /*ALED1STC*/
{0x0C, 0x000020},/*ALED1ENDC*/
{0x0D, 0x000015},/*LED2CONVST*/
{0x0E, 0x000017},/*LED2CONVEND*/
{0x0F, 0x000019},/*ALED2CONVST*/
{0x10, 0x00001B},/*ALED2CONVEND*/
{0x11, 0x00001D}, /*LED1CONVST*/
{0x12, 0x00001F}, /*LED1CONVEND*/
{0x13, 0x000021}, /*ALED1CONVST*/
{0x14, 0x000022}, /*ALED1CONVEND*/
{0x1D, 0x000080}, /*PRPCOUNT*/
{0x1E, 0x000000}, /*CONTROL1*/
{0x1F, 0x000D0D}, /*TIAGAIN_2_3*/
{0x20, 0x008015}, /*TIAGAIN*/
{0x21, 0x005001}, /*TIA_AMB_GAIN*/
{0x22, 0xF59659}, /*LEDCNTRL1*/
{0x23, 0x12C218}, /*CONTROL2*/
{0x24, 0x000000},/*LEDCNTRL2*/
{0x29, 0x000000}, /*CLKDIV1*/
{0x31, 0x000020}, /*CONTROL3*/
{0x34, 0x000000}, /*PROG_INT2_STC*/
{0x35, 0x000000}, /*PROG_INT2_ENDC*/
{0x36, 0x000015},/*LED3LEDSTC*/
{0x37, 0x000018},/*LED3LEDENDC*/
{0x39, 0x000005}, /*CLKDIV2*/
{0x3A, 0x194214}, /*OFFDAC*/
{0x3B, 0x000000}, /*THRDETLOW*/
{0x3C, 0x000000}, /*THRDETHIGH*/
{0x3D, 0x000000}, /*THRDET*/
{0x3E, 0x0008C1}, /*I_OFFDAC*/
{0x42, 0x000000}, /*FIFO*/
{0x43, 0x00001D}, /*LED4LEDSTC*/
{0x44, 0x000020}, /*LED4LEDENDC*/
{0x45, 0x000000}, /*TG_PD1STC*/
{0x46, 0x000000}, /*TG_PD1ENDC*/
{0x47, 0x000000}, /*TG_PD2STC*/
{0x48, 0x000000}, /*TG_PD2ENDC*/
{0x49, 0x000000}, /*TG_PD3STC*/
{0x4A, 0x000000}, /*TG_PD3ENDC*/
{0x4B, 0x000000}, /*CONTROL4*/
{0x4E, 0x000004}, /*DUAL_PD*/
{0x50, 0x180008}, /*CONTROL5*/
{0x51, 0x000000}, /*FIFO_OFFSET*/
{0x52, 0x000028}, /*DATA_RDY_STC*/
{0x53, 0x000028},/*DATA_RDY_ENDC*/
{0x54, 0x000000}, /*MASK_PPG*/
{0x57, 0x000000}, /*PROG_INT1_STC*/
{0x58, 0x000000}, /*PROG_INT1_ENDC*/
{0x61, 0x000000},/*ECG_CHOP*/
{0x62, 0x800000},/*ECG_RLD*/
{0x64, 0x000007}, /*DYN_TIA_STC*/
{0x65, 0x00002A}, /*DYN_TIA_ENDC*/
{0x66, 0x000007},/*DYN_ADC_STC*/
{0x67, 0x00002A},/*DYN_ADC_ENDC*/
{0x68, 0x000007},/*DYN_CLOCK_STC*/
{0x69, 0x00002A},/*DYN_CLOCK_ENDC*/
{0x6A, 0x00002E},/*DEEP_SLEEP_STC*/
{0x6B, 0x000080}, /*DEEP_SLEEP_ENDC*/
{0x6C, 0x000000}, /*PD_SHORT*/
{0x72, 0x000008}, /*LED_DRIVER_CONTROL*/
{0x73, 0x000000}, /*THR_DETECT_LOGIC*/
And this is how I get data:
Buff_ptr[ADC_DataCnt] = SPI_READfromAFE(0x2A) & 0x1FFFFF; // Read register 0x2A from AFE
Buff_ptr[ADC_DataCnt + 1] = SPI_READfromAFE(0x2B) & 0x1FFFFF; //Read register 0x2B from AFE
Buff_ptr[ADC_DataCnt + 2] = SPI_READfromAFE(0x2C) & 0x1FFFFF; //Read register 0x2C from AFE
Buff_ptr[ADC_DataCnt + 3] = SPI_READfromAFE(0x2D) & 0x1FFFFF; //Read register 0x2D from AFE
ADC_DataCnt += 4;
Thanks.