This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AFE4900: I have problems with the AFE 4900 program

Part Number: AFE4900

Does this header file cause the AFE 4900 not to work?

一:AFE4900.h
#define PRF 100
#define DUTYCYCLE 20
#define AFECLK (4000000ul)
#define CONTROL1_VAL (TIMEREN + NUMAV)
#define NUMAV (0x000007ul) //Number of averages-1 (8 bits [LSB
//--------------------------------------------------------------------------
#define PRPCOUNT 0x1D
#define PRP ((AFECLK/PRF)-1) // for 100HZ - 39999

#define DELTA (((PRP+1)*DUTYCYCLE)/100) // for 100HZ - 8000
#define CONV_DELTA ((PRP+1)/4) // for 100HZ - 10000
#define ADCRESET_DELAY 5

#define LED2STC 0x01
#define LED2STC_VAL ((((PRP+1)*3)/4)+80) // for 100HZ - 30080

#define LED2ENDC 0x02
#define LED2ENDC_VAL (LED2STC_VAL-80+DELTA-2) // for 100HZ - 37998

#define LED2LEDSTC 0x09
#define LED2LEDSTC_VAL (LED2STC_VAL-80) // for 100HZ - 30000

#define LED2LEDENDC 0x0A
#define LED2LEDENDC_VAL (LED2ENDC_VAL+1) // for 100HZ - 37999

#define ALED2STC 0x05
#define ALED2STC_VAL 80 // for 100HZ - 80

#define ALED2ENDC 0x06
#define ALED2ENDC_VAL (DELTA-2) // for 100HZ - 7998

#define LED1STC 0x07
#define LED1STC_VAL (((PRP+1)/4)+80) // for 100HZ - 10080

#define LED1ENDC 0x08
#define LED1ENDC_VAL (LED1STC_VAL-80+DELTA-2) // for 100HZ - 17998

#define LED1LEDSTC 0x03
#define LED1LEDSTC_VAL (LED1STC_VAL-80) // for 100HZ - 10000

#define LED1LEDENDC 0x04
#define LED1LEDENDC_VAL (LED1ENDC_VAL+1) // for 100HZ - 17999

#define ALED1STC 0x0B
#define ALED1STC_VAL (((PRP+1)/2)+80) // for 100HZ - 20080

#define ALED1ENDC 0x0C
#define ALED1ENDC_VAL (ALED1STC_VAL-80+DELTA-2) // for 100HZ - 27998

#define LED2CONVST 0x0D
#define LED2CONVST_VAL (ADCRESET_DELAY+2) // for 100HZ - 6

#define LED2CONVEND 0x0E
#define LED2CONVEND_VAL (LED2CONVST_VAL-(ADCRESET_DELAY+1)+CONV_DELTA-1) // for 100HZ - 9999

#define ALED2CONVST 0x0F
#define ALED2CONVST_VAL (CONV_DELTA+7) // for 100HZ - 10006

#define ALED2CONVEND 0x10
#define ALED2CONVEND_VAL (ALED2CONVST_VAL-(ADCRESET_DELAY+1)+CONV_DELTA-1) // for 100HZ - 19999

#define LED1CONVST 0x11
#define LED1CONVST_VAL ((CONV_DELTA*2)+(ADCRESET_DELAY+2)) // for 100HZ - 20006

#define LED1CONVEND 0x12
#define LED1CONVEND_VAL (LED1CONVST_VAL-(ADCRESET_DELAY+1)+CONV_DELTA-1) // for 100HZ - 29999

#define ALED1CONVST 0x13
#define ALED1CONVST_VAL ((CONV_DELTA*3)+(ADCRESET_DELAY+2)) // for 100HZ - 30006

#define ALED1CONVEND 0x14
#define ALED1CONVEND_VAL (ALED1CONVST_VAL-(ADCRESET_DELAY+1)+CONV_DELTA-1) // for 100HZ - 39999

#define ADCRSTSTCT0 0x15
#define ADCRSTSTCT0_VAL 0 // for 100HZ - 0

#define ADCRSTENDCT0 0x16
#define ADCRSTENDCT0_VAL (ADCRSTSTCT0_VAL+ADCRESET_DELAY) // for 100HZ - 5

#define ADCRSTSTCT1 0x17
#define ADCRSTSTCT1_VAL CONV_DELTA // for 100HZ - 10000

#define ADCRSTENDCT1 0x18
#define ADCRSTENDCT1_VAL (ADCRSTSTCT1_VAL+ADCRESET_DELAY) // for 100HZ - 10005

#define ADCRSTSTCT2 0x19
#define ADCRSTSTCT2_VAL (CONV_DELTA*2) // for 100HZ - 20000

#define ADCRSTENDCT2 0x1A
#define ADCRSTENDCT2_VAL (ADCRSTSTCT2_VAL+ADCRESET_DELAY) // for 100HZ - 20005

#define ADCRSTSTCT3 0x1B
#define ADCRSTSTCT3_VAL (CONV_DELTA*3) // for 100HZ - 30000

#define ADCRSTENDCT3 0x1C
#define ADCRSTENDCT3_VAL (ADCRSTSTCT3_VAL+ADCRESET_DELAY) // for 100HZ - 30005
#define STAGE2EN_LED1 (0x004000ul) //Stage 2 enable for LED1
#define STG2GAIN_LED1_0DB (0x000000ul) //Stage 2 gain setting for LED1
#define STG2GAIN_LED1_12DB (0x000400ul) //Stage 2 gain setting for LED1
#define STG2GAIN_LED2_12DB (0x000400ul) //Stage 2 gain setting for LED1
#define CF_LED1_5P (0x000000ul) //Program CF for LED1
#define RF_LED1_1M (0x000006ul) //Program RF for LED1
#define AMBDAC_0uA (0x0A0000ul) //Ambient DAC value
#define FLTRCNRSEL_500HZ (0x000000ul) //Filter corner selection
#define FLTRCNRSEL_500HZ (0x000000ul) //Filter corner selection
#define STG2GAIN_LED2_0DB 0x000000ul //Stage 2 gain setting for LED2
#define CF_LED2_5P 0x000000ul //Program CF for LED2
#define CF_LED2_30P_5P 0x000028ul //Program CF for LED2
#define RF_LED2_1M (0x000006ul) //Program RF for LED2
#define STAGE2EN_LED2 (0x004000ul) //Stage 2 enable for
#define TX_REF_1 (0x020000ul) //Tx reference voltage - 0.5V
#define TXBRGMOD_H_BRIDGE (0x000000ul) //Tx bridge mode
#define TXBRGMOD_PUSH_PULL (0x000800ul) //Tx bridge mode
#define DIGOUT_TRISTATE_DISABLE (0x000000ul) //Digital tristate disabled

#define RST_CLK_ON_PD_ALM_PIN_DISABLE (0x000000ul) //RST CLK on PD_ALM pin disable
#define ADC_BYP_DISABLE (0x000000ul) //ADC bypass mode enable
#define ADC_BYP_ENABLE (0x008000ul) //ADC bypass mode enable
#define XTAL_ENABLE (0x000000ul) //The crystal module is enabled
#define XTAL_DISABLE (0x000200ul) //The crystal module is disabled
#define EN_FAST_DIAG (0x000000ul) //Fast diagnostics mode enable
#define PDN_TX_OFF (0x000000ul) //Tx power-down (Powered on)
#define PDN_RX_OFF (0x000000ul) //Rx power-down (Powered on)
#define PDN_AFE_OFF (0x000000ul) //AFE power-down (Powered on)
#define PDN_AFE_ON (0x000001ul) //AFE power-down (Powered off)

二、AFE4900.c
unsigned long AFE4900_Current_Register_Settings[38] = {
CONTROL0_VAL, //Reg0:CONTROL0: CONTROL REGISTER 0
LED2STC_VAL, //Reg1:REDSTARTCOUNT: SAMPLE RED START COUNT
LED2ENDC_VAL, //Reg2:REDENDCOUNT: SAMPLE RED END COUNT
LED2LEDSTC_VAL, //Reg3:REDLEDSTARTCOUNT: RED LED START COUNT
LED2LEDENDC_VAL, //Reg4:REDLEDENDCOUNT: RED LED END COUNT
ALED2STC_VAL, //Reg5:AMBREDSTARTCOUNT: SAMPLE AMBIENT RED START COUNT
ALED2ENDC_VAL, //Reg6:AMBREDENDCOUNT: SAMPLE AMBIENT RED END COUNT
LED1STC_VAL, //Reg7:IRSTARTCOUNT: SAMPLE IR START COUNT
LED1ENDC_VAL, //Reg8:IRENDCOUNT: SAMPLE IR END COUNT
LED1LEDSTC_VAL, //Reg9:IRLEDSTARTCOUNT: IR LED START COUNT
LED1LEDENDC_VAL, //Reg10:IRLEDENDCOUNT: IR LED END COUNT
ALED1STC_VAL, //Reg11:AMBIRSTARTCOUNT: SAMPLE AMBIENT IR START COUNT
ALED1ENDC_VAL, //Reg12:AMBIRENDCOUNT: SAMPLE AMBIENT IR END COUNT
LED2CONVST_VAL, //Reg13:REDCONVSTART: REDCONVST
LED2CONVEND_VAL, //Reg14:REDCONVEND: RED CONVERT END COUNT
ALED2CONVST_VAL, //Reg15:AMBREDCONVSTART: RED AMBIENT CONVERT START COUNT
ALED2CONVEND_VAL, //Reg16:AMBREDCONVEND: RED AMBIENT CONVERT END COUNT
LED1CONVST_VAL, //Reg17:IRCONVSTART: IR CONVERT START COUNT
LED1CONVEND_VAL, //Reg18:IRCONVEND: IR CONVERT END COUNT
ALED1CONVST_VAL, //Reg19:AMBIRCONVSTART: IR AMBIENT CONVERT START COUNT
ALED1CONVEND_VAL, //Reg20:AMBIRCONVEND: IR AMBIENT CONVERT END COUNT
ADCRSTSTCT0_VAL, //Reg21:ADCRESETSTCOUNT0: ADC RESET 0 START COUNT
ADCRSTENDCT0_VAL, //Reg22:ADCRESETENDCOUNT0: ADC RESET 0 END COUNT
ADCRSTSTCT1_VAL, //Reg23:ADCRESETSTCOUNT1: ADC RESET 1 START COUNT
ADCRSTENDCT1_VAL, //Reg24:ADCRESETENDCOUNT1: ADC RESET 1 END COUNT
ADCRSTSTCT2_VAL, //Reg25:ADCRESETENDCOUNT2: ADC RESET 2 START COUNT
ADCRSTENDCT2_VAL, //Reg26:ADCRESETENDCOUNT2: ADC RESET 2 END COUNT
ADCRSTSTCT3_VAL, //Reg27:ADCRESETENDCOUNT3: ADC RESET 3 START COUNT
ADCRSTENDCT3_VAL, //Reg28:ADCRESETENDCOUNT3: ADC RESET 3 END COUNT
PRP, //Reg29:PRPCOUNT: PULSE REPETITION PERIOD COUNT
CONTROL1_VAL, //Reg30:CONTROL1: CONTROL REGISTER 1 //timer enabled, averages=3, RED and IR LED pulse ON PD_ALM AND LED_ALM pins
0x00000, //Reg31:?: ??
(ENSEPGAIN + STAGE2EN_LED1 + STG2GAIN_LED1_0DB + CF_LED2_5P + RF_LED1_1M), //Reg32:TIAGAIN: TRANS IMPEDANCE AMPLIFIER GAIN SETTING REGISTER
(AMBDAC_0uA + FLTRCNRSEL_500HZ + STAGE2EN_LED2 + STG2GAIN_LED2_0DB + CF_LED2_5P + RF_LED2_1M), //Reg33:TIA_AMB_GAIN: TRANS IMPEDANCE AAMPLIFIER AND AMBIENT CANELLATION STAGE GAIN
(LEDCNTRL_VAL), //Reg34:LEDCNTRL: LED CONTROL REGISTER
(TX_REF_1 + RST_CLK_ON_PD_ALM_PIN_DISABLE + ADC_BYP_DISABLE + TXBRGMOD_PUSH_PULL + DIGOUT_TRISTATE_DISABLE + XTAL_DISABLE + EN_FAST_DIAG + PDN_TX_OFF + PDN_RX_OFF + PDN_AFE_OFF), //Reg35:CONTROL2: CONTROL REGISTER 2 //bit 9
TG_PD1STC_VAL,
TG_PD1ENDC_VAL
};

void AFE4900_Default_Reg_Init(void)
{

AFE4900_Reg_Write((unsigned char)PRPCOUNT, (unsigned long)PRP);
AFE4900_Reg_Write((unsigned char)LED2STC, (unsigned long)LED2STC_VAL);
AFE4900_Reg_Write((unsigned char)LED2ENDC, (unsigned long)LED2ENDC_VAL);
AFE4900_Reg_Write((unsigned char)LED2LEDSTC, (unsigned long)LED2LEDSTC_VAL);
AFE4900_Reg_Write((unsigned char)LED2LEDENDC, (unsigned long)LED2LEDENDC_VAL);
AFE4900_Reg_Write((unsigned char)ALED2STC, (unsigned long)ALED2STC_VAL);
AFE4900_Reg_Write((unsigned char)ALED2ENDC, (unsigned long)ALED2ENDC_VAL);
AFE4900_Reg_Write((unsigned char)LED1STC, (unsigned long)LED1STC_VAL);
AFE4900_Reg_Write((unsigned char)LED1ENDC, (unsigned long)LED1ENDC_VAL);
AFE4900_Reg_Write((unsigned char)LED1LEDSTC, (unsigned long)LED1LEDSTC_VAL);
AFE4900_Reg_Write((unsigned char)LED1LEDENDC, (unsigned long)LED1LEDENDC_VAL);
AFE4900_Reg_Write((unsigned char)ALED1STC, (unsigned long)ALED1STC_VAL);
AFE4900_Reg_Write((unsigned char)ALED1ENDC, (unsigned long)ALED1ENDC_VAL);
AFE4900_Reg_Write((unsigned char)LED2CONVST, (unsigned long)LED2CONVST_VAL);
AFE4900_Reg_Write((unsigned char)LED2CONVEND, (unsigned long)LED2CONVEND_VAL);
AFE4900_Reg_Write((unsigned char)ALED2CONVST, (unsigned long)ALED2CONVST_VAL);
AFE4900_Reg_Write((unsigned char)ALED2CONVEND, (unsigned long)ALED2CONVEND_VAL);
AFE4900_Reg_Write((unsigned char)LED1CONVST, (unsigned long)LED1CONVST_VAL);
AFE4900_Reg_Write((unsigned char)LED1CONVEND, (unsigned long)LED1CONVEND_VAL);
AFE4900_Reg_Write((unsigned char)ALED1CONVST, (unsigned long)ALED1CONVST_VAL);
AFE4900_Reg_Write((unsigned char)ALED1CONVEND, (unsigned long)ALED1CONVEND_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTSTCT0, (unsigned long)ADCRSTSTCT0_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTENDCT0, (unsigned long)ADCRSTENDCT0_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTSTCT1, (unsigned long)ADCRSTSTCT1_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTENDCT1, (unsigned long)ADCRSTENDCT1_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTSTCT2, (unsigned long)ADCRSTSTCT2_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTENDCT2, (unsigned long)ADCRSTENDCT2_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTSTCT3, (unsigned long)ADCRSTSTCT3_VAL);
AFE4900_Reg_Write((unsigned char)ADCRSTENDCT3, (unsigned long)ADCRSTENDCT3_VAL);

AFE4900_Reg_Write((unsigned char)CONTROL0, CONTROL0_VAL);
AFE4900_Reg_Write((unsigned char)CONTROL2, AFE4900_Current_Register_Settings[35]);
AFE4900_Reg_Write((unsigned char)TIA_GAIN_SEP, AFE4900_Current_Register_Settings[32]);
AFE4900_Reg_Write((unsigned char)TIA_GAIN, AFE4900_Current_Register_Settings[33]);
AFE4900_Reg_Write((unsigned char)LEDCNTRL, AFE4900_Current_Register_Settings[34]);
AFE4900_Reg_Write((unsigned char)CONTROL1, AFE4900_Current_Register_Settings[30]);

}