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 EVM 与 dsPIC33搭配使用、具体规格如下:
我通过检测 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