Other Parts Discussed in Thread: AFE4900
Tool/software: Code Composer Studio
Hello, I download the TIDCEM3A-TIDA-01580 Firmware. I use the part of AFE4900_Reg_Init( IIC interface ). But it doesn't work. What else should I pay attention to?
I2C_Params_init(&i2cParams);
i2cParams.bitRate = I2C_100kHz;
i2c_4900 = I2C_open(Board_I2C_TMP, &i2cParams);
if (i2c_4900 == NULL) {
Log_info0("Error Initializing I2C\n");
while (1);
}
else {
Log_info0("I2C Initialized!\n");
}
PIN_setOutputValue(userGPIOpinHandle, PIN_AFE_RESETZ, 1);
Task_sleep(500);
PIN_setOutputValue(userGPIOpinHandle, PIN_AFE_RESETZ, 0);
Task_sleep(500);
PIN_setOutputValue(userGPIOpinHandle, PIN_AFE_RESETZ, 1);
Task_sleep(500);
if ( PIN_registerIntCb(userGPIOpinHandle, pinIntHandler) != PIN_SUCCESS ) {
/* Error registering button callback function */
while(1);
}
// initStatHRM(); // Initialize HRM variables
SEM_adcRdy_risingEdge = SemaphoreP_createBinary(1);
if (SEM_adcRdy_risingEdge == NULL)
{
while(1);
}
i=0;
while( AFE_ppg_ecg_reg_arr[i][0] != 0xFF ){
AFE4900_Reg_Write( AFE_ppg_ecg_reg_arr[i][0], AFE_ppg_ecg_reg_arr[i][1] );
if( AFE_ppg_ecg_reg_arr[i][0] == 0x4E ){
if( (AFE_ppg_ecg_reg_arr[i][1] >> 12) & 1 ){ // get Leadoff bit
leadOffMode = LEADOFF_MODE_AC;
}else{
leadOffMode = LEADOFF_MODE_DC;
}
}
i++;
}
void AFE4900_Reg_Init(void)
{
// AFE4900_Reg_Write(0, 0x20); //ENABLE ULP mode
AFE4900_Reg_Write(1, 0xB); //AFE_LED2STC
AFE4900_Reg_Write(2, 0xD); //AFE_LED2ENDC
AFE4900_Reg_Write(3, 0x14); //AFE_LED1LEDSTC
AFE4900_Reg_Write(4, 0x17); //AFE_LED1LEDENDC
AFE4900_Reg_Write(5, 0x10); //AFE_ALED2STC
AFE4900_Reg_Write(6, 0x12); //AFE_ALED2ENDC
AFE4900_Reg_Write(7, 0x15); //AFE_LED1STC
AFE4900_Reg_Write(8, 0x17); //AFE_LED1ENDC
AFE4900_Reg_Write(9, 0xA); //AFE_LED2LEDSTC
AFE4900_Reg_Write(10,0xD); //AFE_LED2LEDENDC
AFE4900_Reg_Write(11,0x1A); //AFE_ALED1STC
AFE4900_Reg_Write(12,0x1C); //AFE_ALED1ENDC
AFE4900_Reg_Write(13,0xF); //AFE_LED2CONVST
AFE4900_Reg_Write(14,0x12); //AFE_LED2CONVEND
AFE4900_Reg_Write(15,0x14); //AFE_ALED2CONVST
AFE4900_Reg_Write(16,0x17); //AFE_ALED2CONVEND
AFE4900_Reg_Write(17,0x19); //AFE_LED1CONVST
AFE4900_Reg_Write(18,0x1C); //AFE_LED1CONVEND
AFE4900_Reg_Write(19,0x1E); //AFE_ALED1CONVST
AFE4900_Reg_Write(20,0x21); //AFE_ALED1CONVEND
//AFE4900_Reg_Write(21,0x30000); //AFE_ADCRSTSTCT0
// AFE4900_Reg_Write(22,0x30000); //AFE_ADCRSTENDCT0
//AFE4900_Reg_Write(23,0x30000); //AFE_ADCRSTSTCT1
//AFE4900_Reg_Write(24,0x30000); //AFE_ADCRSTENDCT1
//AFE4900_Reg_Write(25,0x30000); //AFE_ADCRSTSTCT2
//AFE4900_Reg_Write(26,0x30000); //AFE_ADCRSTENDCT2
//AFE4900_Reg_Write(27,0x30000); //AFE_ADCRSTSTCT3
//AFE4900_Reg_Write(28,0x30000); //AFE_ADCRSTENDCT3
AFE4900_Reg_Write(29, 0X3F); //AFE_PRPCOUNT // 50Hz PRP @ 128KHz Int OSC CLK
AFE4900_Reg_Write(30, 0x000101); //AFE_CONTROL1 TimerEN = 1; NUMAV = 0
AFE4900_Reg_Write(32, 0x000003); //AFE_TIA_SEP_GAIN (LED2) ENSEPGAIN = 0; LED2/LED3 gain = 25K
AFE4900_Reg_Write(33, 0x000003); //AFE_TIA_GAIN (LED1) LED1/LED1AMB gain = 25K
AFE4900_Reg_Write(34, 0x0030C3); //LED3 ; LED2 ; LED1
//CONTROL_DYN_TX(0), LEDCurr = 100mA, CONTROL_DYN_BIAS, ENABLE_OSC = 0, CONTROL_DYN_TIA, CONTROL_DYN_ADC
AFE4900_Reg_Write(35, 0x124018 /*| (1<<9) */ ); //AFE_CONTROL2
// AFE4900_Reg_Write(75, 0x0F); //CONTROL_DYN_VCM / CONTROL_DYN_DLDO / CONTROL_DYN_ALDO / CONTROL_DYN_BG
// AFE4900_Reg_Write(80, 0x18); //CONTROL_DYN_TX(1)
AFE4900_Reg_Write(49, 0x20); //ENABLE_INPUT_SHORT = 1
AFE4900_Reg_Write(50, 0); //PDNCYCLESTC
AFE4900_Reg_Write(51, 0); //PDNCYCLEENDC
AFE4900_Reg_Write(54, 0xF); //AFE_LED3LEDSTC
AFE4900_Reg_Write(55, 0x12); //AFE_LED3LEDENDC
AFE4900_Reg_Write(57, 0); //CLKDIV_PRF
AFE4900_Reg_Write(57, 0X100000); //OFFDAC
AFE4900_Reg_Write(97, 0x080000); //ECG CHOP
AFE4900_Reg_Write(98, 0x800000); //ECG RLD
AFE4900_Reg_Write(78, 0x000004); //DUAL PD
AFE4900_Reg_Write(67, 0x19); //AFE_LED4LEDSTC
AFE4900_Reg_Write(68, 0x1C); //AFE_LED4LEDENDC
AFE4900_Reg_Write(82, 0x27); //DATA_RDY_STC
AFE4900_Reg_Write(83, 0x27); //DATA_RDY_ENDC
AFE4900_Reg_Write(100, 0); //DYN_TIA_STC
AFE4900_Reg_Write(101, 0x23); //DYN_TIA_ENDC
AFE4900_Reg_Write(102, 0); //DYN_ADC_STC
AFE4900_Reg_Write(103, 0x23); //DYN_ADC_ENDC
AFE4900_Reg_Write(104, 0); //DYN_CLOCK_STC
AFE4900_Reg_Write(105, 0x23); //DYN_CLOCK_ENDC
AFE4900_Reg_Write(106, 0x2E); //DEEP_SLEEP_STC
AFE4900_Reg_Write(107, 0x38); //DEEP_SLEEP_ENDC
// AFE4900_Reg_Write(0, 0x21); //ENABLE ULP mode and SPI_READ mode
}