你好。。。
我想知道如何从 ADS112C04 ADC 读取数据。 首先、我将从器件地址指定为0x80、然后在 START/SYNC 命令指定为0x08。 执行此操作后、我应该做什么、我想从 ADC 通道连续读取数据。 在给出 启动/同步之后、我应该向 ADC 发送什么内容来读取连接到 ADC 的每个通道的16位值。
此致、
Nareyreddy
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.
您好、Naresh、
实际上有许多方法可以实现这一点、因此了解您打算如何配置 ADS112C04以及要测量的值将会有所帮助。 默认配置将输入置于 AIN0和 AIN1输入、在单次模式下运行、转换速率为20sps、使用增益为1的内部基准。
发出 START 命令后、大约50ms 后、转换将完成、DRDY 引脚会发出从高电平状态变为低电平状态的信号。 此时、ADC 将停止转换、并通过发出 RDATA 命令等待您读取结果。 读取转换数据后、您可以将输入多路复用器更改为其他通道、并按照与之前相同的过程再次发出 START 命令。
此致、
Bob B
Bob b.、您好。
感谢您重放我的问题。
如果我选择对话模式作为连续对话、则 ADS112C04是否会连续发送通道 AIN0至 AIN3数据(如自动扫描模式)。
如果我向 ADS112C04写入0x80、0x40、0x00 --configure 寄存器0x00h
如果我向 ADS112C04写入0x80、0x44、0x08 --configure 寄存器0x01h
如果我使用{0x81、0x10、---、---}来读取 ADS112C04 、则 ADS112C04将提供通道 AIN0数据、然后是其余通道。
此致、
Nareyreddy
您好、Nareyreddy、
我之前已经解释过这个过程、并将再次尝试做一些更详细的说明。 我假设当您说要测量 AIN0时、您确实需要测量 AIN0到 AVSS 作为多路复用器选择。 在本次讨论中、我们将对寄存器0以外的所有寄存器设置使用默认寄存器设置。 要进行以 AVSS (AGND)为基准的单端测量、需要禁用并绕过寄存器0中的 PGA (位0应设置为1)。
您可以对其他通道重复此过程:
有关如何完成各种操作的具体详细信息、请查看 ADS112C04数据表。
此致、
Bob B
Bob B,您好。
我根据数据表编写代码。 如果我需要在连续对话模式下读取数据、我有疑问、我需要监控 DRDY 输入。
请告诉我是否可以开始读取数据。 在数据表中、他们提到、每当 DRDY 变为低电平时、都会指示可用的新数据。
当 DRDY 处于低电平时、是否需要仅在 DRDY 发送 START 和 RE关注 命令?
高电平的时间? 因为在数据表中、它显示了 RDATA "A"位 DRDY 变为高电平状态。
如果我按如下方式写入
如果我被写入 WREG 0x40 0x81并且我停止。 现在、我需要等待 DRDY 变为低电平、以测量 CH0数据、从而提供命令0x80 0x10 0x81{---} ,{--------} 对于数据对应的 CH0。
如果 DRDY 变为低电平、我如何才能提供读取命令?
再次读取一个通道数据后,我需要再写入一个通道,然后等待 DRDY 变为低电平?
此致、
Nareyreddy
您好 、Nareyreddy、
尽管您可以在连续转换模式下运行、但如果您使用单次模式、则可能更容易避免转换重叠。 在连续转换模式下、写入新的多路复用器配置将使用新配置重新启动转换、但使用此模式时、您需要确保跟踪转换以及转换准备好读取的时间。
在单次模式下、您可以控制何时开始转换以及何时读取结果。 这样、对环路进行编程会更容易一些。
在采用单冲模式的伪代码中、代码流将显示如下所示:
while (.t)
{
}
这是基本流程。 为了加快环路速度、可以执行一些变体、但这种单次模式非常适合确保在适当的时间读取每个转换。
此致、
Bob B
您好 Bob。
感谢您回复我的查询。
我编写的代码如下所示
此致、
Nareyreddy
您好 、Nareyreddy、
我现在可以看到这可能有点令人困惑的原因。 有 I2C 通信 S (I2C 通信的开始条件)、SR (I2C 通信的重复开始条件)和 P (I2C 通信的停止条件)。
还有针对 ADS112C04本身的命令、其中包括 START/SYNC 命令(该命令将在单次模式下启动转换或在连续模式下重启转换)、WREG (写入 ADC 寄存器)、RREG (读取 ADC 寄存器)和 RDATA 命令(读取上次完成的转换结果)。
每个 ADC 命令都必须由 I2C 通信进行构建。 例如:
0x80 0x40 0x81
// WREG 命令用于设置多路复用器
0x80 0x08
// ADC START/SYNC 转换命令
监视 DRDY 并等待 DRDY 从高电平转换为低电平
0x80 0x10 0x81{MSB 字节}{LSB 字节}
//从 ADC 返回的 RDATA 命令和数据
我希望这能使它更加明确一点。
此致、
Bob B
Bob B.、您好。
感谢您重放回我的电子邮件。
现在,我能够从 ADS112C04获取 ACK。 我编写的每个命令。
我正在执行的步骤:
通过发出以下命令来复位 ADS112C04
0x80 0x06
我正在单次模式下进行控制、它被设置为扩散。
我将通过以下方式写入 ANI0
0x80 0x40 0x81
// WREG 命令用于设置多路复用器
0x80 0x08
// ADC START/SYNC 转换命令
监视 DRDY 并等待 DRDY 从高电平转换为低电平
0x80 0x10 0x81{MSB 字节}{LSB 字节}
//从 ADC 返回的 RDATA 命令和数据
在执行读取命令后、我将为 AIN1发送
0x80 0x40 0x91
// WREG 命令用于设置多路复用器
0x80 0x08
// ADC START/SYNC 转换命令
监视 DRDY 并等待 DRDY 从高电平转换为低电平
在执行读取命令后、我将为 AIN2发送
0x80 0x40 0xa1
// WREG 命令用于设置多路复用器
0x80 0x08
// ADC START/SYNC 转换命令
监视 DRDY 并等待 DRDY 从高电平转换为低电平
6.读取命令后、我将为 AIN3发送
0x80 0x40 0xb1
// WREG 命令用于设置多路复用器
0x80 0x08
// ADC START/SYNC 转换命令
监视 DRDY 并等待 DRDY 从高电平转换为低电平
在最后一个频道之后,我再次重复步骤3。
但对于我来说,DRDY 引脚不会变为高电平至低电平。 它始终只有高电平。
此致、
Naresh Reddy