TI论坛
直播中

张浩

8年用户 1205经验值
私信 关注
[问答]

求助,关于AFE4900传感器芯片寄存器设置问题求解


    我需要采样率为500HZ的,只使用PPG,未使用ECG,参考电路tiDA-01580,只是去掉了ECG电路部分,其他未变,寄存器设置这样:
    uint32_t const  AFE_ppg_ecg_reg_arr[][2]=
    {
    {0x00, 0x000020}, /*CONTROL0*/
          {0x01, 0x00000B}, /*LED2STC*/
          {0x02, 0x00000D}, /*LED2ENDC*/
          {0x03, 0x000014}, /*LED1LEDSTC*/
          {0x04, 0x000017}, /*LED1LEDENDC*/
          {0x05, 0x000010}, /*ALED2STC*/
          {0x06, 0x000012}, /*ALED2ENDC*/
          {0x07, 0x000015}, /*LED1STC*/
          {0x08, 0x000017}, /*LED1ENDC*/
          {0x09, 0x00000A}, /*LED2LEDSTC*/
          {0x0A, 0x00000D}, /*LED2LEDENDC*/
          {0x0B, 0x00001A}, /*ALED1STC*/
          {0x0C, 0x00001C}, /*ALED1ENDC*/
          {0x0D, 0x00000F}, /*LED2CONVST*/
          {0x0E, 0x000012}, /*LED2CONVEND*/
          {0x0F, 0x000014}, /*ALED2CONVST*/
          {0x10, 0x000017}, /*ALED2CONVEND*/
          {0x11, 0x000019}, /*LED1CONVST*/
          {0x12, 0x00001C}, /*LED1CONVEND*/
          {0x13, 0x00001E}, /*ALED1CONVST*/
         {0x14, 0x000021}, /*ALED1CONVEND*/
         {0x1D, 0x00003F}, /*PRPCOUNT*/
         {0x1E, 0x000101}, /*CONTROL1*/
         {0x1F, 0x000000}, /*TIAGAIN_2_3*/
         {0x20, 0x000006},//{0x20, 0x000003}, /*TIAGAIN*/
         {0x21, 0x000006},//{0x21, 0x007006},//{0x21, 0x000003}, /*TIA_AMB_GAIN*/
         {0x22, 0xFFF000},//{0x22, 0xF00000}, /*LEDCNTRL1*/
         {0x23, 0x104218}, /*CONTROL2*/
         {0x24, 0x002A00}, /*LEDCNTRL2*/
         {0x28, 0x000000}, /*TOGGLE*/
         {0x29, 0x000000}, /*CLKDIV1*/
         {0x2A, 0x000000}, /*LED2VAL*/
         {0x2B, 0x000000}, /*ALED2VAL*/
         {0x2C, 0x000000}, /*LED1VAL*/
         {0x2D, 0x000000}, /*ALED1VAL*/
         {0x2E, 0x000000}, /*LED2-ALED2VAL*/
         {0x2F, 0x000000}, /*LED1-ALED1VAL*/
         {0x31, 0x000020}, /*CONTROL3*/
         {0x34, 0x000000}, /*PROG_INT2_STC*/
         {0x35, 0x000000}, /*PROG_INT2_ENDC*/
         {0x36, 0x00000F}, /*LED3LEDSTC*/
         {0x37, 0x000012}, /*LED3LEDENDC*/
         {0x39, 0x000000}, /*CLKDIV2*/
         {0x3A, 0x100000},//{0x3A, 0x17BDEF},//, /*OFFDAC*/
         {0x3B, 0x000000}, /*THRDETLOW*/
         {0x3C, 0x000000}, /*THRDETHIGH*/
         {0x3D, 0x000000}, /*THRDET*/
         {0x3E, 0x000055},//{0x3E, 0x000088},//{0x3E, 0x000000}, /*I_OFFDAC*/偏置电流设置为0.125uA.
         {0x3F, 0x000000}, /*AVG_LED2_ALED2VAL*/
         {0x40, 0x000000}, /*AVG_LED1_ALED1VAL*/
         {0x42, 0x000000}, /*FIFO*/
         {0x43, 0x000019}, /*LED4LEDSTC*/
         {0x44, 0x00001C}, /*LED4LEDENDC*/
         {0x45, 0x000000}, /*TG_PD1STC*/
         {0x46, 0x0000FF},//{0x46, 0x000042}, /*TG_PD1ENDC*/
         {0x47, 0x000000},//{0x47, 0x000046}, /*TG_PD2STC*/
         {0x48, 0x000000}, //{0x48, 0x0000FF},/*TG_PD2ENDC*/
         {0x49, 0x000000}, /*TG_PD3STC*/
         {0x4A, 0x000000}, /*TG_PD3ENDC*/
         {0x4B, 0x000000}, /*CONTROL4*/
         {0x4E, 0x000000},//{0x4E, 0xA4F00C}, /*DUAL_PD*/
         {0x50, 0x000018},//{0x50, 0x180018}, /*CONTROL5*/
         {0x51, 0x000000}, /*FIFO_OFFSET*/
         {0x52, 0x000027}, /*DATA_RDY_STC*/
         {0x53, 0x000027}, /*DATA_RDY_ENDC*/
         {0x54, 0x000000}, /*MASK_PPG*/
         {0x57, 0x000000}, /*PROG_INT1_STC*/
         {0x58, 0x000000}, /*PROG_INT1_ENDC*/
         {0x61, 0x000000},//{0x61, 0x080000}, /*ECG_CHOP*/
         {0x62, 0x000000},//{0x62, 0xE00000}, /*ECG_RLD*/
         {0x63, 0x000000}, /*RCOMP*/
         {0x64, 0x000000}, /*DYN_TIA_STC*/
         {0x65, 0x000023}, /*DYN_TIA_ENDC*/
         {0x66, 0x000000}, /*DYN_ADC_STC*/
         {0x67, 0x000023}, /*DYN_ADC_ENDC*/
         {0x68, 0x000000}, /*DYN_CLOCK_STC*/
         {0x69, 0x000023}, /*DYN_CLOCK_ENDC*/
         {0x6A, 0x00002E}, /*DEEP_SLEEP_STC*/
         {0x6B, 0x000038}, /*DEEP_SLEEP_ENDC*/
         {0x6C, 0x000800}, /*PD_SHORT*/
         {0x6D, 0x000000}, /*REG_POINTER*/
         {0x72, 0x000000}, /*LED_DRIVER_CONTROL*/
         {0x73, 0x000000}, /*THR_DETECT_LOGIC*/

         {0xFF, 0x00}  //End of Array
    };为什么不接光电二极管的时候,读取0X2A,0X2B,0X2C,0X2D的数据,ADC已经趋近于满量程了?
    如果使用官网TIDA-01580官网提供的寄存器设置:
    uint32_t const  AFE_ppg_ecg_reg_arr[][2]=
    {
        {0x00, 0x000020}, /*CONTROL0*/
        {0x01, 0x00002B}, /*LED2STC*/
        {0x02, 0x000033}, /*LED2ENDC*/
        {0x03, 0x000001}, /*LED1LEDSTC*/
        {0x04, 0x000000}, /*LED1LEDENDC*/
        {0x05, 0x000039}, /*ALED2STC*/
        {0x06, 0x000041}, /*ALED2ENDC*/
        {0x07, 0x000047}, /*LED1STC*/
        {0x08, 0x00004F}, /*LED1ENDC*/
        {0x09, 0x000027}, /*LED2LEDSTC*/
        {0x0A, 0x000033}, /*LED2LEDENDC*/
        {0x0B, 0x000055}, /*ALED1STC*/
        {0x0C, 0x00005D}, /*ALED1ENDC*/
        {0x0D, 0x000035}, /*LED2CONVST*/
        {0x0E, 0x000053}, /*LED2CONVEND*/
        {0x0F, 0x000055}, /*ALED2CONVST*/
        {0x10, 0x000073}, /*ALED2CONVEND*/
        {0x11, 0x000075}, /*LED1CONVST*/
        {0x12, 0x000093}, /*LED1CONVEND*/
        {0x13, 0x000095}, /*ALED1CONVST*/
        {0x14, 0x0000B3}, /*ALED1CONVEND*/
        {0x1D, 0x0000FF}, /*PRPCOUNT*/
        {0x1E, 0x000103}, /*CONTROL1*/
        {0x1F, 0x000000}, /*TIAGAIN_2_3*/
        {0x20, 0x000003}, /*TIAGAIN*/
        {0x21, 0x000003}, /*TIA_AMB_GAIN*/
        {0x22, 0xF00000}, /*LEDCNTRL1*/
        {0x23, 0x104218}, /*CONTROL2*/
        {0x24, 0x002A00}, /*LEDCNTRL2*/
        {0x28, 0x000000}, /*TOGGLE*/
        {0x29, 0x000000}, /*CLKDIV1*/
        {0x2A, 0x000000}, /*LED2VAL*/
        {0x2B, 0x000000}, /*ALED2VAL*/
        {0x2C, 0x000000}, /*LED1VAL*/
        {0x2D, 0x000000}, /*ALED1VAL*/
        {0x2E, 0x000000}, /*LED2-ALED2VAL*/
        {0x2F, 0x000000}, /*LED1-ALED1VAL*/
        {0x31, 0x000020}, /*CONTROL3*/
        {0x34, 0x000000}, /*PROG_INT2_STC*/
        {0x35, 0x000000}, /*PROG_INT2_ENDC*/
        {0x36, 0x000035}, /*LED3LEDSTC*/
        {0x37, 0x000041}, /*LED3LEDENDC*/
        {0x39, 0x000000}, /*CLKDIV2*/
        {0x3A, 0x100000}, /*OFFDAC*/
        {0x3B, 0x000000}, /*THRDETLOW*/
        {0x3C, 0x000000}, /*THRDETHIGH*/
        {0x3D, 0x000000}, /*THRDET*/
        {0x3E, 0x000000}, /*I_OFFDAC*/
        {0x3F, 0x000000}, /*AVG_LED2_ALED2VAL*/
        {0x40, 0x000000}, /*AVG_LED1_ALED1VAL*/
        {0x42, 0x000000}, /*FIFO*/
        {0x43, 0x000043}, /*LED4LEDSTC*/
        {0x44, 0x00004F}, /*LED4LEDENDC*/
        {0x45, 0x000000}, /*TG_PD1STC*/
        {0x46, 0x000042}, /*TG_PD1ENDC*/
        {0x47, 0x000046}, /*TG_PD2STC*/
        {0x48, 0x0000FF}, /*TG_PD2ENDC*/
        {0x49, 0x000000}, /*TG_PD3STC*/
        {0x4A, 0x000000}, /*TG_PD3ENDC*/
        {0x4B, 0x000000}, /*CONTROL4*/
        {0x4E, 0xA4F00C}, /*DUAL_PD*/
        {0x50, 0x180018}, /*CONTROL5*/
        {0x51, 0x000000}, /*FIFO_OFFSET*/
        {0x52, 0x0000B9}, /*DATA_RDY_STC*/
        {0x53, 0x0000B9}, /*DATA_RDY_ENDC*/
        {0x54, 0x000000}, /*MASK_PPG*/
        {0x57, 0x000000}, /*PROG_INT1_STC*/
        {0x58, 0x000000}, /*PROG_INT1_ENDC*/
        {0x61, 0x080000}, /*ECG_CHOP*/
        {0x62, 0xE00000}, /*ECG_RLD*/
        {0x63, 0x000000}, /*RCOMP*/
        {0x64, 0x000000}, /*DYN_TIA_STC*/
        {0x65, 0x0000B6}, /*DYN_TIA_ENDC*/
        {0x66, 0x000000}, /*DYN_ADC_STC*/
        {0x67, 0x0000B6}, /*DYN_ADC_ENDC*/
        {0x68, 0x000000}, /*DYN_CLOCK_STC*/
        {0x69, 0x0000B6}, /*DYN_CLOCK_ENDC*/
        {0x6A, 0x0000C0}, /*DEEP_SLEEP_STC*/
        {0x6B, 0x0000E5}, /*DEEP_SLEEP_ENDC*/
        {0x6C, 0x000800}, /*PD_SHORT*/
        {0x6D, 0x000000}, /*REG_POINTER*/
        {0x72, 0x000000}, /*LED_DRIVER_CONTROL*/
        {0x73, 0x000000}, /*THR_DETECT_LOGIC*/

        {0xFF, 0x00}  //End of Array
    };不接光电二极管的时候,读取0X2A,0X2B,0X2C,0X2D的数据,ADC值就很小,请问为什么500HZ和官网提供的数据差距这么大,可以提供几个思路,看看哪里设置有问题吗?

回帖(1)

风尚男人

2024-11-14 17:55:16
根据您的需求,您需要设置AFE4900传感器芯片以实现500Hz的采样率,并且只使用PPG功能。您提供的寄存器设置是基于TIDA-01580参考电路,但去掉了ECG部分。以下是一些建议和修改,以帮助您实现所需的设置:

1. 控制寄存器(0x00):您已经设置了0x000020,这表示AFE4900处于正常工作模式。这是正确的。

2. LED2启动时间寄存器(0x01):您已经设置了0x00000B。这个值表示LED2的启动时间为11个时钟周期。这个值看起来是合理的。

3. LED2结束时间寄存器(0x02):您已经设置了0x00000D。这个值表示LED2的结束时间为13个时钟周期。这个值看起来是合理的。

4. LED1和LED2的启动时间寄存器(0x03):您已经设置了0x000014。这个值表示LED1和LED2的启动时间为20个时钟周期。这个值看起来是合理的。

5. LED1和LED2的结束时间寄存器(0x04):您已经设置了0x000017。这个值表示LED1和LED2的结束时间为23个时钟周期。这个值看起来是合理的。

6. ALED2启动时间寄存器(0x05):您已经设置了0x000010。这个值表示ALed2的启动时间为16个时钟周期。这个值看起来是合理的。

为了实现500Hz的采样率,您需要关注AFE4900的时钟设置。AFE4900的采样率由其内部时钟频率和时钟分频器决定。您可以通过设置时钟分频器寄存器(0x06)来调整采样率。以下是一些建议:

1. 时钟分频器寄存器(0x06):您需要设置这个寄存器以实现500Hz的采样率。假设AFE4900的内部时钟频率为12MHz,您可以通过以下公式计算分频器值:

   分频器值 = (内部时钟频率 / 采样率) - 1

   分频器值 = (12000000 / 500) - 1 = 23999

   因此,您需要将0x06寄存器设置为0x5DFF(23999的16进制表示)。

2. 其他寄存器:您可能需要根据实际情况调整其他寄存器的值,以确保AFE4900正常工作。例如,您可以调整滤波器设置、增益设置等。

请注意,这些建议仅供参考,您可能需要根据您的具体硬件和应用需求进行调整。建议您查阅AFE4900的数据手册,以获取更详细的寄存器设置信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分