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.

[参考译文] ADS130B02-Q1:DRDY 引脚永远不会激活、两个通道的数据值恒定

Guru**** 2205050 points
Other Parts Discussed in Thread: ADS130B02-Q1, ADS131B04-Q1EVM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1221837/ads130b02-q1-drdy-pin-never-going-active-constant-data-values-from-both-channels

器件型号:ADS130B02-Q1
主题中讨论的其他器件: ADS131B04-Q1EVM

您好!

我正在使用 采用 MPLAB X IDE 的 Microchip WBZ451微控制器的 ADS130B02-Q1。我将从电流传感器(Infineon TLI4971)和由分压器/Iso-amp 组合组成的电压传感器获得输入。 由于 ADC 没有外部时钟、因此我要通过 CLK 寄存器将内部振荡器设置为活跃状态。 我还将在高分辨率功率模式下将 OSR 设置为4096、以实现更高的分辨率和更大的采样率、从而进行测量。 这些是我为 ADC 提供的唯一配置。

下面是我要发送到 ADC 的确切命令和寄存器内容:

CLK WR 命令: 0110 0001 1000 0000

CLK 配置: 0000 0011 0001 0111

MOD WR 命令: 0110 0001 0000 0000

MOD 配置: 0000 0100 0001 0000

我已经从 CLK 寄存器中读取以确保寄存器内容符合预期:0317h、我还没有检查 MOD 寄存器的内容。

每当我使用 GPIO 输入轮询 DRDY 引脚时、环路就会无限、且 DRDY 引脚绝不会变为低电平。 当我没有轮询 DRDY 引脚时、我将从 ADC 获得输入、我将从电压传感器(通道0)获得2000h、从电流传感器(通道1)获得0008h。 下面是我用于配置寄存器的实际代码:

//时钟寄存器配置
#define CLK_SELH 0b01100001
#define clk_sell 0b10000000
#define CLK_CFGH 0b00000011
#define CLK_CFGL 0b00010111

//模式寄存器配置
#define MOD_SELH 0b01100001.
#define MOD_Sell 0b00000000
#define MOD_CFGH 0b00000100
#define MOD_CFGL 0b00010000

buffer1[0]= CLK_SELH;
buffer1[1]= CLK_sell;
buffer1[2]= CLK_CFGH;
buffer1[3]= CLK_CFGL;

buffer2[0]= MOD_SELH;
buffer2[1]= MOD_sell;
buffer2[2]= MOD_CFGH;
buffer2[3]= MOD_CFGL;

CS_ADC_CLEAR ();
SERCOM2_SPI_WriteRead (&buffer1、4、&read、8);
CS_ADC_SET ();

CS_ADC_CLEAR ();
SERCOM2_SPI_WriteRead (&buffer2、4、&read、8);
CS_ADC_SET ();

以下是我用于轮询 DRDY 引脚并从 ADC 获取输入的代码:

//声明
uint16_t buffer[1]={0};
uint16_t data[5];
Bool temp = true;

执行{
  temp = GPIO_PinRead (GPIO_PIN_RB2);//等待 DRDY
} while (temp);

CS_ADC_CLEAR ();
SERCOM2_SPI_WriteRead (&buffer、1、&data、5);
CS_ADC_SET ();

我将发送 NULL 命令、然后在帧中的后续两个字中从 MISO 引脚接收通道数据、如数据表中 的图8-13和8.5.3.1部分所述。 如果我能提供任何其他信息来帮助解决此问题、请告诉我、感谢您的阅读。

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

    尊敬的 Oliver:

    欢迎来到 E2E 论坛。  

     2000h 和0008h 是您预期的数据吗? 如果否、我建议您将 ADC 输入短接、方法是将 CH0_CFG 寄存器中的 MUX0[1]:0和 CH1_CFG 寄存器中的 MUX1[1]:0编程 为01b 以进行测试。 此外、我建议您在代码中检测/DRDY 的下降沿、而不是低电平。  

    您能否提供 逻辑分析仪捕获的用于数据读取的时序图(SCLK、DOUT、/DRDY 和/CS)?

    此致、

    戴尔

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

    大家好、Dale、

    感谢您的欢迎!

    这些值不是我要寻找的值。 我正在以行的形式更改数据上的加载、这些值是我每次发送 null 命令时唯一收到的值。

    代码已更改为检测 DRDY 的下降沿。 这里显示的是某些激活的 DRDY、但我仍不确定其触发时间。 有时在芯片选择高的时候波动、我没有拉取任何数据。

    从我可以看到的情况来看、MISO 现在拉取的数据确实略有不同。 我会继续测试、但结果会更好。  

    您认为在使用芯片的整个过程中保持 CS PIN 有效是否值得、而仅在访问 SRAM 等其他外设时才停用该 PIN?

    我已经附上了 Saleae 文件,以防你有 Saleae。 我还附加了屏幕截图和 csv 导出。

    谢谢。

    奥利弗

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

    尊敬的 Oliver:

    很遗憾、您的附件文件被论坛阻止、我无法打开它们。 您可以尝试仅像我在下面所做的那样附加屏幕截图。

    请查看我刚刚在 ADS131B04-Q1EVM 上捕获的以下时序示例、包括/CS 信号:

    读取模式寄存器(02h 地址)、默认的0510h 寄存器数据可在下一帧的 DOUT 上看到:

       

    2.读取转换数据  DIN: 空。  DOUT:第一个字是 STATUS,然后是 CH1->CH2->CH3-CH4的数据。 注:所有通道均无实际输入信号。  

       

    此致、

    戴尔

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

    这是 DRDY 引脚变为低电平时发生的情况的屏幕截图。 根据数据表、DRDY 引脚应处于低电平、直到通道1的数据完成发送。 在这种情况下似乎不是这样。 此外、我也不会通过任何渠道获得任何数据。

    前面的屏幕截图中显示了每个信号尖峰的情况、并且这些波形模式还有许多其他实例。

    请告诉我、如果我可以提供任何其他屏幕截图来帮助解决此问题。

    谢谢。
    奥利弗

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

    尊敬的 Oliver:

    感谢您提供更多信息。 不过、我有一些问题、您在通道1上的信号是什么? 您在时间安排中想要做什么? 您是否在第一个图像中向 ADC 发送了10字节(10*8) SCLK? 您是否尝试读取了所有4个通道的数据? 如果您能够像我在上面向您展示的那样在计时中同时包含/CS 和/DRDY、那将非常好。

    您能否说明一下信号尖峰是什么?

    此致、

    戴尔