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.

[参考译文] CCS/AFE4900EVM:AFE4900初始版本

Guru**** 2529570 points
Other Parts Discussed in Thread: AFE4900

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/767519/ccs-afe4900evm-afe4900-initial

器件型号:AFE4900EVM
主题中讨论的其他器件:AFE4900

工具/软件:Code Composer Studio

大家好、我下载 TIDCEM3A-TIDA-01580固件。 我使用 AFE4900_Reg_Init( IIC 接口)的一部分。 但它不起作用。  我还应该注意什么?

I2C_Params_init (&i2cParams);
i2cParams.bitrate = I2C_100kHz;
I2C_4900 = I2C_open (Board_I2C_TMP、&i2cParams);
if (i2c_4900 =NULL){
LOG_info0 ("初始化 I2C\n"\n 时出错");
while (1);

否则{
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){
/*注册按钮回调函数时出错*/
while (1);

// initStatHRM();//初始化 HRM 变量

SEM_adcRdy_risingEdge = SemaphoreP_createBinary (1);
if (SEM_adcRdy_risingEdge =NULL)

while (1);


I=0;
while (AFE_PPG_ECG_REG_ARR[i]!= 0xFF){
AFE4900_Reg_Write (AFE_PPG_ECG_REG_ARR[i]、AFE_PPG_ECG_REG_ARR[i]);
if (AFE_PPG_ECG_REG_ARR[i]=0x4E){
if (((AFE_PPG_ECG_REG_ARR[i]>> 12)& 1){//获取导联脱落位
leadOffMode = leadoff_mode_ac;
}否则{
leadOffMode = leadoff_mode_DC;


i++;

AFE4900_Reg_Init 无效(空)

// AFE4900_Reg_Write (0、0x20);//启用 ULP 模式
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_ADCRSTCT0
// AFE4900_Reg_Write (22、0x30000);// AFE_ADCRSTENDCT0
//AFE4900_Reg_Write (23、0x30000);//AFE_ADCRSTCT1
///AFE4900_Reg_Write (24、0x30000);//AFE_ADCRSTENDCT1
//AFE4900_Reg_Write (25、0x30000);//AFE_ADCRSTCT2
//AFE4900_Reg_Write (26、0x30000);//AFE_ADCRSTENDCT2
//AFE4900_Reg_Write (27、0x30000);//AFE_ADCRSTCT3
//AFE4900_Reg_Write (28、0x30000);//AFE_ADCRSTENDCT3

AFE4900_Reg_Write (29、0x3F);//AFE_PRPCOUNT // 50Hz PRP @ 128KHz 内部 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_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);//双 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);//启用 ULP 模式和 SPI_Read 模式

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您能详细说明哪些不起作用吗?

    我们使用了 AFE4900数据表中的"推荐寄存器设置"(表144和图182)。

    如果代码无法正常工作、我建议遵循 AFE4900数据表中提供的初始化详细信息。

    谢谢你。

    此致、

    Sanjay R. Pithadia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我使用内部时钟,它不是128K,它是4M。当我设置 AFE4900_Reg_Write (29、0xFF),采样频率为16K。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉耽误您的回复。

    看起来您尚未启用 ULP 模式。 (寄存器00h、位5)。 这就是器件进入4M 模式以获取内部时钟的原因。

    对于4M 内部时钟、采样频率为16k 是有道理的、如下所示。

    采样频率=内部 时钟/PRPCT = 4M/255 ~ 16k

    请启用 ULP 模式并检查性能。

    此致、Sanjay R. Pithadia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、没关系。 但当我  调用 AFE4900_Reg_Read( 0x2D )时,它不是配准器{0x4E, 0x24E00C}的 ECG 信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    位2 (Enable_PTT)应启用 ECG 信号链。 当0x4E = 0x24E00C 时、位2被启用。 因此您应该得到 ECG。另请参阅数据表中的第8.4.4节。
    您如何说它不是 ECG 信号? 您是否测试数据? 您是在 EVM 上还是使用自己的电路板进行测试?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 EVM 上进行测试。 当我读取寄存器(2B 和2D)时、信号的变化与 PPG 相同。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码如下所示:

    PPG = AFE4900_Reg_Read (0x2C);//LED1
    ECG = AFE4900_Reg_Read (0x2D);//ALED1/ECG
    ppgRed = AFE4900_Reg_Read (0x2A);//LED2
    ppgIR = AFE4900_Reg_Read (0x2B);//ALED2/LED3

    //输出数据
    静态 uint8_t u_Buf[8];

    U_buf[0]= 0x9F;
    U_buf[1]=ppgIR>16;
    U_buf[2]= ppgIR>>8;
    U_buf[3]= ppgIR;
    U_buf[4]= ECG>16;
    U_buf[5]= ECG>8;
    U_buf[6]= ECG;
    u_Buf[7]= u_Buf[0]^u_Buf[1]^u_Buf[2]^u_Buf[3]^u_Buf[4]^u_Buf[5]^u_Buf[6];


    UART_WRITE (hUart_、u_Buf、8);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您是否启用了直流导联脱落检测? 如果是、请将其禁用并采集 ECG 数据。
    由于直流导联脱落检测到 AFE 向输入引脚注入一些电流,因此您可能不会从身体中获得 ECG 信号。
    通常、您应按如下方式执行直流导联脱落检测。
    1) 1)启用直流导联脱落检测。
    2) 2)读取导联脱落检测的输出标志
    3) 3)禁用直流导联脱落检测。
    4)如果导联已连接,则捕获 ECG 数据。

    请共享0x4E、0x61和0x62寄存器的读数以进行进一步调试。

    此致、
    Prabin。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该寄存器设置如下:

    {0x4E、0x000004}、  

    {0x61、0x000000}、  
    {0x62、0x800000}、  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    此问题是否已解决?
    此外、0x61寄存器的值不正确。 它应该是0x080000。

    此致、
    Prabin。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    读出的心电图 附件的值 是右侧的值“e2e.ti.com/.../PPG_2D00_ECG.txt”的大小

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 、随附的是 ECG 的滤波数据和原始数据。对吗?  

    e2e.ti.com/.../2055.ECG_2D00_data.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

      您使用的是哪种硬件? 您遇到 PPG 或 ECG 问题?  

    此致、

    Midhun