我尝试通过16位 SPI 与单个 ADS8332通信、主机是 Cortex M4。 我正在使用内部 CCLK 和手动通道选择和触发、监控 EOC。
我无法从数据表中了解从通道 N 读取转换结果的正确序列
是否有任何有用的指导、伪代码示例、波形布线、以说明应如何完成此操作?
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.
这只是 SPI 配置、不是问题。 已知电压、是的、我想是这样的。
这是未记录的命令序列。
要设置配置字0x*67D,我应该发送0xE67D?
要读取配置寄存器、我应该发送0xC000 0x0000、在过去的16个时钟期间返回的 CFR 值是多少?
选择输入#3并读回 ADC 结果的顺序是什么? 0x3000、0xD000、0x0000?
几个简单的接口图或一些示例代码将非常有用。 数据表图未涵盖这些方面。
Alex、
很高兴你能取得进展。
该器件可在手动模式或自动通道模式下工作。 默认为自动通道模式、其中通道将按顺序进行采样。
我建议使用 EOC 引脚作为何时 读取结果的指示器。 图43到45将有助于实现这一点。
与器件通信。 完整的串行 I/O 周期在 FS/CS 的下降沿之后开始、并在之后结束16个 SCLK 的下降沿。 串行接口在 CPOL = 1、CPHA = 0时工作。 此设置意味着当 SCLK 为高电平时、FS/CS 的下降沿可能下降。 相同的时序放宽适用于 FS/CS 的上升沿、在该上升沿、只要最后一个 SCLK 下降沿发生在 FS/CS 的上升沿之前、SCLK 就可能为高电平或低电平。
数据表的表4定义了命令寄存器。 您可以在此处选择手动模式下的下一个通道。 您也可以在此处读取或写入配置寄存器
数据表中的表5提供了配置映射。 我建议使用默认值、直到您能够根据需要进行通信、然后更改为您的应用需求。
数据表上的第9节介绍了如何写入和读取转换器寄存器。 要读取转换数据、您需要提供足够的 SCLK 来输出数据、具体取决于时钟模式(默认内部)。
此致
Cynthia
谢谢、Cynthia、但所有这些都在数据表中。 省略的是命令序列。
我已经弄清楚了、它实际上 非常简单。 它所需要的只是数据表中的一个段落、以帮助设计人员减少大量的心痛和焦虑。
串行数据输出引脚可以报告配置寄存器的内容(读取 CFR)或最后一次转换结果(读取 CDR)
发出读取 CDR 命令后、假设您手动选择通道并使用"EOC "检测完整的转换、其简单如下:
选择通道 N
脉冲 CONVST、等待 EOC
在接收通道 N 转换结果的过程中、选择通道 N+1
脉冲 CONVST、等待 EOC
选择通道 N+2等...
16个时钟选择下一个通道并接收返回数据(假设没有"Tag"位)
我在这一发言中有点过早,我认为我理解操作,但试验表明它略为复杂。
其工作原理为:
发送"选择通道 N"
发送"读取数据"命令- SDO 上的 ADC 数据
发送"选择通道 N+1"- SDO 上再次发送相同的 ADC 数据
发送"读取数据"命令- SDO 上的 ADC 数据
发送"选择通道 N+2"- SDO 上再次发送相同的 ADC 数据
…
我想我可以从每个周期中省略"Read data"命令、但这不起作用。