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.

[参考译文] ADS1278:ADS1278:SPI 数据读取

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/820613/ads1278-ads1278-spi-data-read

器件型号:ADS1278

您好!

我将 ADS1278 EVM 与 dsPIC33搭配使用、具体规格如下:

  1. Fclk = 27MHz (板载)
  2. MODE (模式):低速
  3. 格式:SPI - TDM -动态
  4. PWDN 仅启用了1个通道的 REST

我通过检测 DRDY 低电平信号进行读取、然后读取 SPI 数据、结果是可以的、但当我减慢采样时间(在 dsPIC 软件中使用计时器)时、 注意到模拟不会立即发生变化、我必须读取大量数据才能达到正确的模拟值

那么、如何解决这个问题、我在读取后尝试使用 PWDIN、但结果是一样的。

我还在计时器中检查没有中断的 DRDY,这是正确的吗?

if (ADS1278_DRDY = 0)
{
uint32_t temp;

WriteSPI2 (NOP);
while (SPI2STATbits.SPIRBF = 0);
temp = ReadSPI2 ();

WriteSPI2 (NOP);
*数据=(uint32_t)(temp << 16);
while (SPI2STATbits.SPIRBF ==0);
temp = ReadSPI2 ();

WriteSPI2 (NOP);
*数据|=(uint32_t)(temp << 8);
while (SPI2STATbits.SPIF);*


数据=

使用 uint32 (*数据/t);temp = uintuint32 (此处

);t = 0) 

谢谢

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

    您好!

    感谢您的提问。  我不确定您是如何使用 ADS1278的、因此让我来回顾一下该器件的工作原理。

    ADS1278连续转换。  在您的配置中、Fclk=27MHz、CLKDIV=1、MODE=11 (低速)、输出数据速率将为10.547ksps。  无论您是否通过 SPI 读取数据、/DRDY 引脚都会以该输出数据速率进行切换。  进一步降低内部转换速率的唯一方法是降低主时钟频率 Fclk。

    如果主时钟固定为27MHz、并且您不希望以10.547ksps 的速率读取数据、则 MCU 可以跳过一些转换周期。  例如、您可以仅读取 ADS1278的每三次输出转换结果。  在本例中、您将被限制在固定10.547ksps 数据速率的1/2、1/3、1/4等数据速率。  

    您需要确保与/DRDY 引脚同步。  最好的方法是在/DRDY 变为低电平后立即通过 SPI 读取转换结果。  如果您启动了 SPI 事务、并且在完成之前、/DRDY 引脚变为低电平、您将获得损坏的读数、并且您需要等待另一个完整的转换周期、然后才能通过 SPI 再次读取数据。  您提到了 MCU 计时器的使用;我怀疑您与/DRDY 引脚不同步、并且您正在获取损坏的读数。

    另一个注意事项是、如果 MODE 引脚发生更改、或/SYNC 引脚或/PWDN 引脚发生更改、则 ADS1278将经历内部复位。  在这种情况下,在第一个数据可用之前,将需要129个以上的输出转换读数周期。

    此致、

    Keith N.
    精密 ADC 应用

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

    感谢您的回答。

    我使用调试器并通过断点读取模拟数据、 但是在软件暂停期间、我更改了 ads1278的模拟输入值、然后运行软件、我注意到该值保持固定、并保持固定状态以读数100或更多、然后转至电流电压读数。

    我将计时器用作有时发现接收到的数据损坏的计时器、因此我假设速率高于 10ksps 的 dsPIC 采样(pic 以8MHZ 运行、例程以无限循环连续运行)、 因此、我将上述读取例程置于计时器中断中、以将采样率降低至等于或小于10ksps。

    1-在没有中断的情况下检查 DRDY 是否正常?

    2-我发布了用于读取数据的代码片段,它是否足以与 DRDY 同步?

    3 -如果您有使用 SPI 或伪代码的示例、我将不胜感激

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

    您好!

    是的、您可以在没有中断的情况下检查/DRDY 引脚。  简单地将该引脚置为软件极点、然后读取数据结果并不少见。

    根据您的代码片段、我无法准确判断它在 SPI IO 线路上执行的操作。  如果您可以使用示波器捕获/DRDY、SCLK、DOUT 波形、这可能会提供一些线索。

    您说它在更新之前获取了100多个转换读数。  这表明器件正在复位。  您能否提供原理图?  SYNC、PWDN 或 MODE 引脚似乎正在发生更改、这会导致复位、然后导致较长的稳定时间。

    我没有该器件的任何示例代码、但如果您可以为 IO 线路提供示波器捕获、我们应该能够弄清楚导致复位的原因。

    此致、
    Keith