AFE4900: AFE4900 PPG+ECG

Prodigy 10 points

Replies: 0

Views: 29

Part Number: AFE4900


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;