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.

[参考译文] AFE4490SPO2EVM:AFE4490和 ADC RDY 中断触发

Guru**** 2611705 points
Other Parts Discussed in Thread: AFE4490, AFE4404

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/583886/afe4490spo2evm-afe4490-and-adc-rdy-interrupt-firing

器件型号:AFE4490SPO2EVM
主题中讨论的其他器件:AFE4490AFE4404

您好!

我将 AFE4490 SPO2 EVM 与 NXP 的 K53 MCU 连接。 我可以通过 SPI 读取和写入寄存器、而不会出现任何问题。 但是、当我尝试使用 ADC_RDY 中断读取寄存器值时、值保持不变。 与红色 LED 一样、ADC 值保持在 x0003000、IR 也保持在某个固定值。 但如果没有 ADC_INTERRUPT 、AFE4490会输出 PPG 信号。  

如果有人能够指出为什么会发生这种情况、那将会很棒?

是否可以以大于25mA 的电流驱动 LED、因为我的应用不受功率限制?

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

    您是否在 ADC_RDY 的上升沿读取输出? 您能否在读取输出时共享 SPI 信号和 ADC_RDY 的模拟屏幕截图?
    此外、为了缩小根本原因、您可以尝试数据表中提到的寄存器设置(即表2)。
    您可以使用大于25mA 的电流驱动 LED、因为它们可以承受此类电流。 您还应在此类电流下查找 LED 线性度。

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

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

    我对 AFE4490配置有一点怀疑。 我希望以950Hz (PRF)采样、因此在 GUI 中、我将 PRF 更改为950并将占空比更改为25%。 在低级配置选项卡中、我获取了寄存器值并写入 AFE4490。 仍有样片大约为600sps/620sps。 当 PRF 设置为100Hz 至500Hz 时、我能够看到变化、但超过500Hz 时没有变化。 是否有任何关于为什么会发生这种情况的想法? 这是我正在使用的配置。 我可以看到 ADC_RDY 脉冲、甚至在 ADC_RDY 线路上触发中断。

    //对于950Hz 25%占空比
    disable_afe4490_spi_read (afe4490); //启用 AFE4490寄存器修改
    afe4490_register_write (LED2STC、0x000CA4、afe4490); //LED2STC
    afe4490_register_write (LED2ENDC、0x00106E、afe4490); //LED2ENDC
    afe4490_register_write (LED2LEDSTC、0x000C54、afe4490); //LED1LEDSTC
    afe4490_register_write (LED2LEDENDC、0x00106F、afe4490); //LED1LEDENDC
    afe4490_register_write (ALED2STC、0x000050、afe4490); //ALED2STC
    afe4490_register_write (ALED2ENDC、0x00041A、afe4490); //ALED2ENDC
    afe4490_register_write (LED1STC、0x00046C、afe4490); //LED1STC
    afe4490_register_write (LED1ENDC、0x000836、afe4490); //LED1ENDC
    afe4490_register_write (LED1LEDSTC、0x00041C、afe4490); //LED2LEDSTC
    afe4490_register_write (LED1LEDENDC、0x000837、afe4490);//LED2LEDENDC
    afe4490_register_write (ALED1STC、0x000888、afe4490); //ALED1STC
    afe4490_register_write (ALED1ENDC、0x000C52、afe4490); //ALED1ENDC
    afe4490_register_write (LED2CONVST、0x000006、afe4490);//LED2CONVST
    afe4490_register_write (LED2CONVEND、0x00041B、afe4490);//LED2CONVEND
    afe4490_register_write (ALED2CONVST、0x000422、afe4490);//ALED2CONVST
    afe4490_register_write (ALED2CONVEND、0x000837、afe4490);//ALED2CONVEND
    afe4490_register_write (LED1CONVST、0x00083E、afe4490);//LED1CONVST
    afe4490_register_write (LED1CONVEND、0x000C53、afe4490);//LED1CONVEND
    afe4490_register_write (ALED1CONVST、0x000C5A、afe4490);//ALED1CONVST
    afe4490_register_write (ALED1CONVEND、0x00106F、afe4490);//ALED1CONVEND
    afe4490_register_write (ADCRSTCT0、0x000000、afe4490);//ADCRSTCT0
    afe4490_register_write (ADCRSTENDCT0、0x000005、afe4490);//ADCRSTENDCT0
    afe4490_register_write (ADCRSTCT1、0x00041C、afe4490);//ADCRSTCT1
    afe4490_register_write (ADCRSTENDCT1、0x000421、afe4490);//ADCRSTENDCT1
    afe4490_register_write (ADCRSTCT2、0x000838、afe4490);//ADCRSTCT2
    afe4490_register_write (ADCRSTENDCT2、0x00083D、afe4490);//ADCRSTENDCT2
    afe4490_register_write (ADCRSTCT3、0x000C54、afe4490);//ADCRSTCT3
    afe4490_register_write (ADCRSTENDCT3、0x000C59、afe4490);//ADCRSTENDCT3
    afe4490_register_write (PRPCT、0x001072、afe4490); //PRPCT 0x009C3F 0x00115B
    afe4490_register_write (control1、0x000101、afe4490); //CONTROL1
    afe4490_register_write (TIA_GAIN、0x000000、afe4490); //TIA_GAIN
    afe4490_register_write (TIA_AMB_GAIN、0x000000、afe4490);//TIA_AMB_GAIN
    afe4490_register_write (LEDCTRL、0x014401、afe4490); //LEDCTRL
    afe4490_register_write (CONTROL2、0x000000、afe4490); //CONTROL2 0x124218
    enable_afe4490_spi_read (afe4490); //启用 AFE4490寄存器修改

    有时、当从22-2Eh 读取 ADC 值时、假设 LED 电流设置为0mA、我得到16777215、即(2^24)-1、这是否正常??
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Annamol、您好!

    您能否尝试以下设置并观察 ADC_RDY。

    afe4490_register_write (control0、0x000002、afe4490);
    afe4490_register_write ((PRPCT、0x001072、afe4490);
    afe4490_register_write (control0、0x000000、afe4490);
    afe4490_register_write (control1、0x000010、afe4490);

    0mA LED 电流的值16777215似乎很低、但它是否随 LED 电流的增加而变化?

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

    我单独添加了这些配置、但不会触发 ADC_RDY 信号。 该值随 LED 电流增大而增大。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Annamol、您好!

    抱歉、最后一个寄存器设置中有一个拼写错误。
    应该是、
    afe4490_register_write (control1、0x000100、afe4490);

    您现在可以检查一下吗?

    此致、
    Prabin

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

    您好!

    我再次从 GUI 生成了950Hz 和25%占空比的寄存器配置。 仍然是相同的状态。 当我采集10秒时、我将获得近5000个样本。 在代码中、我有设置标志的中断服务例程、并且在 while (1)循环中发生 ADC 读取。 在 AFE4404中、我从使用 GUI 生成的配置中获得的相同实施大约为950sps。

    我还附上了完整的代码。如果我有问题、请告诉我。 在 GUI 模式下、它提供的是1000sps、但在我的实现方案中、它的寄存器设置不同。  

    我尝试在 ISR 以及主任务中读取 ADC 值。

    e2e.ti.com/.../afe4490.c

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

    由于您使用之前响应中给出的示例代码成功获得了1KHz ADC_RDY、我建议开始写入另一个寄存器(逐块)并观察 ADC_RDY。 使用此方法、您可以找到导致问题的寄存器/寄存器块。
    您可以按以下顺序插入块。
    1) 1)用于采样相位的寄存器
    2) 2) LED 开关阶段的寄存器
    3) 3) ADC RST 阶段的寄存器
    4) 4)转换阶段的寄存器
    5) 5)其余寄存器。

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

    我将按照您的建议进行尝试。 简单来说、AFE4490是否需要任何特定的 SPI 时钟频率?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Annamol、您好!

    支持的最大 SPI 时钟有限制、即16MHz。

    此致、
    Prabin