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.

[参考译文] ADS8681:配置问题2.

Guru**** 2392135 points
Other Parts Discussed in Thread: ADS8681

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/938076/ads8681-configuration-issues-2

器件型号:ADS8681

您好、先生!

我几乎遇到 了另一个主题为"ADS8681:配置问题"的主题中提到的相同问题。

我在这里附上了使用 ADS8681的一些代码 和示波器的一些图片。 先生,请帮帮我。

抱歉、我们的示波器只有两个通道、这就是为什么我无法将所有图片放在一起的原因。

问题是什么? 当我向 ADC 的配置寄存器(例如 RANGE_SEL_REG)发送读取命令(READ_HWORD 或 READ)时、它仅返回转换值的第一个字节和第二个字节、而不返回任何其他字节。


 

 


 在这里、我们应该得到有关配置设置的数据、在我的例子中、它是0x04。 但它是0x00。


 

这里是代码。

主代码为:

while (1){

LBuffer[4]= ADS86_testReadWithCMD (READ_HWORD、RANGE_SEL_REG);
_delay32 (1000);//1000US
L2Buffer[0]= ADS86_WriteLSBcmd (range_SEL_REG、0x0004);
__delay32(100);
L2Buffer[2]= ADS86_WriteHWORD (range_SEL_REG、0x0004);

__delay32(10);

其他:


我也尝试过所有其他命令、也尝试了其他寄存器、没有发生任何情况、但仍然无法从 ADC 获取有关配置设置的数据。

此外、您建议将 SPI 的模式配置为0、包括 ADC 和微控制器。 我已经执行了。 谢谢!

 

此致、Osim!

 

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

    您好、Osim、

    我为美国周末的反应迟了道歉。 我将会详细介绍并尽快将其回复给您。

    此致、

    戴尔

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

    您好、Osim、

    我对您的信息有一些疑问:

    在主代码中、首先读取 RANGE_SEL_REG 寄存器、然后使用相同的数据将同一寄存器写入两次0x04 (使用一个写入命令写入寄存器的 LS 字节、以下命令再次写入 MS 和 LS 字节)。 由于 ADC 上电后寄存器的默认内容全部为0、为什么不更改序列来首先写入寄存器、然后再读取它?

    2.控制器上的 SPI 配置是否为 CPHA=1和 CPOL=0? SDI 上的数据在最后一次写入时序中在 SCLK 的上升沿启动。 请注意、ADC 在 SCLK 的下降沿启动数据、并且可以在 SCLK 的上升沿捕获数据、这是 ADC 上的默认配置(CPHA=0和 CPOL=0)、请参阅您捕获的其他时序。

    3.我没有在 SCLK 和 SDI 上捕获您的读取时序。 但是,最后一张图中的写入时间是正确的(11010100 00010100 00000000 00000100)。

    在您的时序中、有时您的以32时钟格式发送 SCLK、有时以16时钟或8时钟格式发送、不一致。 这可以重新排列、或者您必须小心地发送或读取数据、以确保时序始终正确。

    此致、

    戴尔

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

    非常感谢、先生! 非常感谢您的回复。 这非常有帮助、尤其是第2点。

    按照您的建议、我将代码更改为先写入、然后再读取。 但随后代码返回到初始条件、仅用于实验、它也起作用。  

    解决问题的主要关键在于您提到 SPI 配置。 是的、我注意到 ADC SPI 配置看起来像是配置为 CPHA=1 和 CPOL=0。 (按照 Microchip (PIC/dsPIC)数据表中的方法、这些位的名称与 CKE 和 CKP 类似)。 我附加了一张图片、其中我注意到:

    并将微控制器的设置更改为相应的 SPI 模式(CPHA=1 和 CPOL=0、在我的案例中、CKE=1和 CKP =0)、并且它工作正常。  

    但有一点奇怪的问题吗? 当我从 SDI_CTL_REG 以及 SDO_CTL_REG 读取数据时、我会得到0x0000、即 ADS8681配置为 CPHA = 0、 CPOL=0。 有原因吗? 也许我还会尝试一下。

    主席先生,再次感谢你的大力支持!  

    此致、Osim。   

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

    您好、Osim、

    感谢您的更新和反馈。 让我澄清一下:

    您可以更改微控制器上的 SPI 配置以匹配 ADC 上的 SPI 配置、也可以更改 ADC 上的 SPI 配置以匹配微控制器上的 SPI 配置。  通过更改微控制器上的 SPI 配置、第一种解决方案将更加简单。

    ADC 上电后、ADC 上的默认 SPI 配置为 CPOL=0和 CPHA=0。 因此、您得到的0x0000寄存器数据是正确的。 请参阅以下重点内容:

    此致、

    戴尔

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

    非常感谢、先生!

    此致、Osim。