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.

[参考译文] ADC128S102:ADC128S102配置和通信

Guru**** 2614265 points
Other Parts Discussed in Thread: ADC128S102

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/682603/adc128s102-configuration-of-adc128s102-and-communication

器件型号:ADC128S102

您好!

我使用的是 ADC128S102、我遇到了一些问题。

应如何 配置该 ADC (SPI 通信配置)?

请告诉我这件事。

我的设置 如下:

ClockPolarity = 1.
时钟相位= 0
时钟频率= 12、5MHz

我知道、在上电时、我将接收 IN0的值。

上电后、我按如下方式开始我的对话:

1.写入地址 IN0 (以在下一个周期获取该值)并接收 IN0 (由于加电)和更高版本的 IN4

2.写入地址 IN1 (以在下一个周期获取该值)并接收 IN0 (由于之前的通信)。

3.写入地址 in2 (以在下一个周期获取该值)并接收 IN1 (由于之前的通信)。

4.写入 in3的地址(以在下一个周期获取该值)并接收 in2 (由于之前的通信)。

5、写入地址 IN4 (以在下一个周期获取该值)并接收 in3 (由于之前的通信)。

6.从点"1"重新开始。 但现在、我将收到 IN4

这很好。

但是、如果我混淆上述通信顺序、我将无法在预期地址上获得预期的信道。 我将通信点放置为"2"。 介于"4"之间。 和"5"。 (请参阅以下内容:):

1.写入地址 IN0 (以在下一个周期获取该值)并接收 IN0 (由于加电)和更高版本的 IN4

2.写入地址 in2 (以在下一个周期获取该值)并接收 in3 (由于之前的通信)。

3.写入 in3的地址(以在下一个周期获取该值)并接收 IN0 (由于之前的通信)。

4.写入地址 IN1 (以在下一个周期获取该值)并接收 IN2 (由于之前的通信)。

5、写入地址 IN4 (以在下一个周期获取该值)并接收 IN1 (由于之前的通信)。

6.从点"1"重新开始。 但现在、我将收到 IN4

这是问题1。

第二个问题是、在这个设置中、接收数据的 LSB 在位17中、所以我获得的接收值被1向右移位(从16位到17位)。

问题可能出在哪呢?

我的最后一点是、您是否有具有以下行为的12位 ADC-SPI。 我写入所需的信道地址、并将准确接收该值?

 

非常感谢。

 

此致、

Philipp Bodermann

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

    很抱歉耽误你的时间。

    1. 当您按照 IN0、IN1、IN2…的顺序执行序列时。 IN4、您会得到预期的行为。 对吧?

    2. 当您尝试按顺序访问多路复用器通道时、会出现问题(IN0、IN2、IN3、IN4)。 我真的不理解您看到的问题。 每次读取任何通道时、都会从之前的多路复用器设置中获得转换结果。 例如、考虑从 IN0到 IN2的转换。 当您将 IN2写入控制寄存器时、您将从 IN0读取转换结果。 因此、对于您的序列:

      写入 IN0–您将读取 IN4转换结果(注意:第一次转换无效)。 这似乎适合您。

      写入 IN2–您将读取 IN0。 你说你得到 in3。 这毫无意义,您应该得到 IN0。

      写入 in3–您将读取 in2。 您说您读取了 IN0。 这毫无意义,你应该得到 IN2。

      写入 IN4–您将读取 IN3。 您说您读取了 IN1。 这毫无意义。

      我只是想确保我了解您的问题。 我看到您的评论时、第二个序列中的任何通信都不能正常工作。 我建议您将每个输入连接到明显不同的电压。 这样、您就可以轻松地看到您所使用的通道。

    3. 对于第二个问题、请尝试 ClockPhase = 1。

    4. 最后一点。 该 ADC 的理念是、当您与 ADC 通信时、它将转换前一通道并切换多路复用器。 这可以节省时间。 如果您向通道写入数据并从同一通道接收数据、则必须等到多路复用器切换后再获取信号、最后进行转换。 ADC128S102的工作方式是这些类型的转换器中大多数的工作方式。 我找不到例外,但我会问一些同事。   如果您想选择一个寄存器并从中读取数据、可以考虑一个选择、就是连续写入同一个控制寄存器两次。 第一个相关的读取将是之前选择的寄存器(忽略此项)、第二个读取将是所需的寄存器。 这会浪费时间、但可能会简化您的设计。

    我希望这对您有所帮助。 请告诉我是否遗漏了一些东西、或者是否需要进一步澄清。