主题中讨论的其他器件: ADS1248
您好!
我使用 ADS1158在自动扫描模式下转换15个模拟通道、并且 START 引脚始终处于启用状态。 我 使用通道数据读取命令读取数据、如 SBAS429D 文档的第29页所述。 我每4ms 发送一系列15条命令来获取通道数据。 SPI 时钟频率为3MHz。
我没有在每个周期获取15个通道的信息。 我只能获得6-7个频道的信息、但不能获得其余频道的信息。
我会怎么做?
提前感谢。
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.
您好!
我使用 ADS1158在自动扫描模式下转换15个模拟通道、并且 START 引脚始终处于启用状态。 我 使用通道数据读取命令读取数据、如 SBAS429D 文档的第29页所述。 我每4ms 发送一系列15条命令来获取通道数据。 SPI 时钟频率为3MHz。
我没有在每个周期获取15个通道的信息。 我只能获得6-7个频道的信息、但不能获得其余频道的信息。
我会怎么做?
提前感谢。
Joseph、感谢您的快速回答。
我确实会读回 ADS1158的寄存器、它们会按预期进行编程。 我将发送配置寄存器的值:
- CONFIG0:0x16 (状态字节启用、斩波启用、时钟输出禁用、使用外部 ADC 输入、自动扫描模式、4096fclk 周期复位)
- CONFIG1:0x03 (待机模式、无延迟、传感器偏置电流源关闭、数据速率0b11。
MUXSCH:0x00
MUXDIF:0x00
MUXSG0:0xFF
- MUXSG1:0xFF
- SYSRED:0x00
我使用示波 器验证了 ADC 的输出、我看到的是、有时 ADC 发送与两个连续通道数据读取命令的应答相同的通道的值。 例如、我在命令应答中接收0x8B 作为状态通道、在以下命令应答中接收0x0B 作为状态通道、然后接收0x8C 和0x0C 等... 因此、ADC 似乎没有在两个连续的通道数据读取命令之间单步进入下一个通道。
提前感谢您的帮助。
此致、
Antonio
您好、Antonio、
[引用 USER="Antonio Agenjo)]我使用示波 器验证了 ADC 的输出、我看到的是、有时 ADC 会发送与两个连续通道数据读取命令的应答相同通道的值。 例如、我在命令应答中接收0x8B 作为状态通道、在以下命令应答中接收0x0B 作为状态通道、然后接收0x8C 和0x0C 等... 因此、ADC 似乎没有在两个连续的通道数据读取命令之间单步进入下一个通道。
如果您在下一次转换完成之前重新读取相同的转换数据、这将是 ADS1158的预期行为。
上半字节中的"0x80"值会告诉您数据是新数据还是重新读取最后一个转换结果。
我想您希望 ADS1158在每次发出读取命令时都能提供新的转换数据;但是、ADC 需要一段特定的时间来切换通道并提供新通道的转换结果(如/DRDY 信号所示)。 由于您要启用 CONFIG0寄存器中的 CHOP 位、转换数据将仅以大约11.8kSPS 的速率显示。 相反、如果您禁用斩波(即 CONFIG0 = 0x12)、您将看到 ADC 的输出数据速率增加到23.7kSPS。
此致、
Chris
您好、Antonio、
正确、ADS1158的存储器深度使得读取数据只返回最近的转换结果。 我不知道任何能够存储多个通道数据的高通道数精密 ADC。
要从 ADS1158的所有15个通道获取数据(不缺少结果)、需要使用/DRDY 中断或频繁轮询 ADS1158 (至少与转换周期相同)来读取数据。 使用/DRDY 中断是检索数据的推荐方法、因为它占用的处理器较少。
如果您不需要以高吞吐量捕获每个转换结果、则可以考虑使用具有脉冲转换模式的自动扫描模式。 在此模式下、您的微控制器将控制新转换的开始、然后 ADS1158只捕获一次转换并等待。 然后、您的微控制器可以读取数据并发出新的 START 命令、以便您能够以您具有处理带宽的任何速率循环浏览所有通道。
此致、
Chris