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.

[参考译文] ADS8332:用于指导基本读数的伪代码

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/919575/ads8332-pseudocode-to-guide-on-basic-reading

器件型号:ADS8332

我尝试通过16位 SPI 与单个 ADS8332通信、主机是 Cortex M4。 我正在使用内部 CCLK 和手动通道选择和触发、监控 EOC。

我无法从数据表中了解从通道 N 读取转换结果的正确序列

是否有任何有用的指导、伪代码示例、波形布线、以说明应如何完成此操作?

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

    您好!

    很遗憾、没有可用的示例代码。

    我建议在数字通信引脚上使用示波器探测、以目视检查您对总线的期望实际上是否为所发生的情况。 这将提供目视检查和轻松的时序要求检查。 然后、可以将其与数据表中的时序图进行比较。

    此外、使用已知的直流输入将输出与预期输出进行比较、例如 Ch0 = GND、Ch1 = 1V 等

    请在可用于调试时提供示波器截图。

    此致

    Cynthia

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

    这只是 SPI 配置、不是问题。 已知电压、是的、我想是这样的。

    这是未记录的命令序列。

    要设置配置字0x*67D,我应该发送0xE67D?

    要读取配置寄存器、我应该发送0xC000 0x0000、在过去的16个时钟期间返回的 CFR 值是多少?

    选择输入#3并读回 ADC 结果的顺序是什么? 0x3000、0xD000、0x0000?

    几个简单的接口图或一些示例代码将非常有用。 数据表图未涵盖这些方面。

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

    它看起来多路复用器在 nCONV 边沿上发生变化、我认为它会自动增加输入通道、并且我的配置字未设置。 这些基础知识必须有一些指导、或者我是否必须自己推导? 是否每个用户都必须从头开始解决这个问题?

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

    好的、进度。 对 SPI 配置和指令进行了一些更改、现在我可以写入一个合理的配置寄存器并重复读回它。

    我仍然不清楚设置通道 N 的正确指令序列、在转换后、读取结果。

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

    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"命令、但这不起作用。

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

    很高兴您能找到它

    我将记下您的反馈

    此致

    Cynthia