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:配置问题

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

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

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

器件型号:ADS8681
我在使用 ADC ADS8681时遇到问题。  
 
在我们的设计中、ADS8681的 SPI 端口连接到 PowerPC 控制器 MPC5553。
 
观察到、在上电时、ADS8681正在进入默认配置、我们无法更改设置。  通过仅发出 NOP 操作、我们就可以获得 SDO 输出、即转换后的模拟输入值。
随附的是使用逻辑分析仪捕获的时序波形的图像。
 
为 ADC 配置加载的步骤和值如下:
 

SL。 否

功能

访问类型

十六进制值

说明

1

复位功率控制寄存器

写入

0XD005 0069h

 

0xD204 0000h

0xD404 6930h

首先,将0x69写入地址0x05 (在 MSB 处添加‘0’以形成9位地址)

 

复位寄存器–MSB 数据

复位寄存器- LSB 数据

2.

SDI 控制寄存器

写入

0XD208 0000h

 

0XD408 0000h

MSB 数据

 

LSB 数据–CPOL=0且 CPHASE=0的 SPI (器件到 SCLK 上升沿上的 Tx 数据和下降沿上的 Rx 数据)

3.

SDO 控制寄存器

写入

0XD20C 0000h

 

0XD40C 0000h

MSB 数据

 

LSB 数据–内部时钟、与 SDI 相同的 SPI 协议

4.

范围选择寄存器

写入

0XD214 0000h

 

0XD414 0001h

MSB 数据

 

LSB 数据–启用内部基准、±10.24V

5.

输出数据控制寄存器

写入

0XD210 0000h

 

0XD410 0000h

MSB 数据

 

LSB 数据–不包含警报、SDO 数据不包含寄存器地址

6.

NOP

写入

0x0000 0000h

无操作

尽管执行了上述寄存器设置、ADC 并未更改配置更新。   我们尝试提供读取命令来读取 ADC 寄存器、即使该操作不起作用。
它读取的是3.3V 输入下的0xA1D6、 5V 输入下的0xB460、0V 下的0x7FFC。
 
当我们测量 ADC 模拟输入引脚上的电压时、它会测量正确的设置电压。
 
在硬件端、我们将 PowerPC 控制器的 SPI_PCS 连接到 ADC 的 CONV/CS_N 引脚。   将 SPI 的 CS_N 连接到 CONV/CS_N 引脚是否存在任何问题?
此外、随附了 ADC 原理图表以供参考。
 
请指导我们更改 ADC 的配置设置。
 
此致、
 

Poornalatha K

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

    您好、Poornalatha、

    首先、用于寄存器写入的命令不正确、例如、您尝试使用具有0x05地址的0xD0050069命令对 RST_PWRCTL_REG 寄存器的15-8位上的 WKEY 进行编程、 实际上、您的69h 数据被写入该寄存 器的7-0位、而不是15-8位、因为命令表5中规定的"9位寄存器地址的 LSB 始终被忽略并被视为0b"。 因此、下一个寄存器写入操作不成功、因为 WKEY 写入不正确。 右侧命令应为0xD2046900 (或 0xD0046900)。

    出于测试和调试目的、请仅写入一个寄存器、然后读回寄存器内容、以检查您的寄存器写入是否正确、例如、仅更改 RANGE_SEL_REG 寄存器中的输入范围。 此外、只需在寄存器编程前后检查转换代码、即可轻松检查寄存器写入是否成功。 以下是 ADC 的模拟输入为直流4V 时的示例:

    • 对于+/-1.25Vref (+/-5.12V 范围)、您应该得到大约58340 (十进制)的代码。
    • 对于+/-3Vref (+/-12.88V 范围)、您应该得到大约43425 (十进制)的代码。

    您的原理图未成功上传、请重试。

    我不熟悉 PowerPC 控制器的 SPI、可以将标准 SPI 总线的/CS 用于该 ADC 的/CS、但请注意、ADS8681上的/CS 引脚是双功能引脚、 此引脚上信号的上升沿将启动数据转换并使器件从采集阶段进入转换阶段、因此该信号上的任何抖动都将影响系统的性能。

    此致、

    戴尔

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

    主席先生,

    我再次尝试、但仍然无法更改范围选择寄存器的值。

    原理图的 ADC 部分如下:

    给出的命令顺序如下:

    范围 SEL (MSB):0xD214 0000
     
    2.范围 SEL (LSB):0xD414 0001
     
    3.路:0xC814 0000
     
    4. NOP 命令: 0x00000000
    逻辑分析仪时序波形如下:
     2.范围 SEL (LSB):0xD414 0001
      3.读取命令(地址0x14):0xC814 0000

    4. NOP 命令: 0x00000000

    此致、

    Poornalatha

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

    您好 、Poornalatha、

    我没有看到您上传的任何原理图或时序图、请检查。 此外、

    每个命令的更详细的时序图将很有帮助。

    2.让我知道对寄存器进行编程前后的模拟输入信号和输出代码。

    3.请检查是否可以在 REFIO 和 REFCAP 引脚上测量4.096V 电压。

    此致、

    戴尔

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

    主席先生,

    1. 我正在尝试共享通过粘贴图像捕获的原理图和逻辑分析仪波形。 发送回复后、图像将变成小框。  请告诉我分享图片的方式。

    2、 我们在模拟输入端提供5V 的固定电压。 在应用 NOP 命令本身时、我们将获得0xB42E 的输出代码。  对寄存器进行编程后、输出数据也是相同的。  如果我们将模拟输入电压馈入3.3V、则加电时使用 NOP 命令的输出代码为0xA430。  器件未响应任何寄存器设置。

    3. REFIO 上测得的电压 为 4.090V, REFCAP 为 4.090V。

    此致、

    Poornalathae2e.ti.com/.../Range-SEL-_2800_MSB_2900_.pdfe2e.ti.com/.../RD.pdf

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

    您好 、Poornalatha、

    谢谢、pdf 文件中的时序正常。

    我希望您将 SPI 接口配置为控制器上的模式0 (CPHA=0和 CPOL=0)、您的控制器将在 SCLK 的下降沿启动数据、以便 ADC 能够在上升沿捕获数据。 但是、您的时序看起来相反、请参阅下面的寄存器写入时序。 我认为"A_out"是从您的控制器传输到 ADC 的 MOSI 信号、这是 ADC 的 SDI、"a_in"也是从 ADC (SDO)传输到控制器的 MISO 信号。

    如果我们看一下"A_out"(MOSI)上的数据、数据是在 SCLK 的上升沿(位置1上的红色箭头)启动的、在这个时序中捕获数据的最佳位置是位置2黄色箭头、它实际上是 SCLK 的下降沿、 但是、ADC 始终根据数据表中的模式0在 SCLK 的上升沿捕获数据。 这种情况会导致器件的数据采集不正确。 顺便说一下、"A_OUT"上控制器的数据显示 为0xD2140000、实际上该命令包含所有0数据、不会更改 RANGE_SEL_REG 寄存器中的任何位(位15-8)、 但是、我相信您发送了另一个命令0xD4140001、该命令涉及您可以在同一寄存器中将输入范围更改为+/-2.5Vref 的过程。

    如果我们查看"a_in"(MISO)上的数据(ADC 的数据输出)、它们在 SCLK 的每个下降沿启动、这是一个正确的操作、因此您的控制器可以在 SCLK 的上升沿捕获数据 (位置3上也是数据中心的绿色箭头)。

    寄存器读取的时序也会发生同样的行为。 因此、请检查您的控制器的配置。 下面的第2个时序显示了数据表中 ADC 预期的红色 SCLK 边沿。

    此外、我建议您:

    • 在/CS 的下降沿和第一个 SCLK 之间添加一个延迟。 现在、它太近了、第一个 SCLK 脉冲可能会被忽略。
    • "A_OUT"上有一个非常窄的高脉冲、这可能表示前16个 SCLK 时钟已结束。 这是不正确读取数据的潜在风险。 请检查并尝试消除它。

    加电后获得的数据对于默认的+/-3Vref 输入范围是正确的。

    此致、

    戴尔

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

    主席先生,

    控制器配置为 CPOL=0和 CPHA=1 (根据控制器数据表)、即控制器在 SCLK 的上升沿启动数据输出、以便 ADC 能够在下降沿捕获数据。

    类似地、在 ADC 上、寄存器被配置为 CPOL=0和 CPHA=0 (根据数据表)、即 ADC 在 SCLK 的上升沿启动数据输出、以便控制器能够在下降沿捕捉数据。

    ‘‘A_OUT’的信号为 MOSI,A_IN”为 MISO。

    在此附上命令0xD414001的波形 、并阅读 commande2e.ti.com/.../3683.RD.pdf

    我们将尝试增大 CS 变为低电平与 SCLK 上升沿之间的间隙。

    关于小脉冲、我们将尝试清除它。 由于控制器配置为16位数据、因此它输出2个周期来满足32位 ADC 的要求。

     CS 持续2个周期、在16位后提供脉冲。  

    此致、

    Poornalathae2e.ti.com/.../Range-SEL-_2800_LSB_2900_.pdf

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

    您好 、Poornalatha、

    首先、您对  ADC 上 CPOL=0和 CPHA=0 (模式0)的理解是不正确的。 在模式0中、 ADC 将在 SCLK 的下降沿启动数据输出、 在 模式0下、控制器应在 SCLK 的上升沿捕获数据、ADC 也将在 MOSI 的上升沿而非预期的下降沿捕获数据。

    其次、当 ADC 配置为模式0 (CPOL=0和 CPHA=0)时、控制器必须配置 为相同模式 (CPOL=0和 CPHA=0)、因此 ADC 和控制器的时序可以很好地匹配。  这就是您无法成功对 ADC 的内部寄存器进行编程的原因。  

    关于小脉冲、这不是导致问题的原因、但最好查看干净的时序、因为它未显示在/CS 上。

    此致、

    戴尔

     

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

    主席先生,

    根据上述建议、我们能够配置 ADC 并读取数字数据。   

    非常感谢。

    此致、

    Poornalatha

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

    您好、先生!

    我几乎面临 着上述混乱中提到的同样问题。 有点累了,不能解决这个问题。

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

    正如您看到的、SPI 的 Fclk 几乎为2MHz。

    这里是代码:

    接收有关样本值的数据是正常的。 但除此之外、我什么都不能得到、我无法从命令寄存器中获取值。 如何正确执行?

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

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

    主席先生,我在我的单词上发现了一些错误,并开始修复这些句子,但通过在我的智能手机上点击“编辑”,我破坏了一些有关问题的详细信息。 我是说我丢失了一些附加的图片。 抱歉、我明天将在我的 PC 上再次重写此问题。  

    已重写、消息已更正。

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

    您好、Osim、

    您的时序图使我感到困惑。 我不需要覆盖如此多难以检查数据的帧的时序。 我只需要您的寄存器写入时序、寄存器读取命令和下一帧移位寄存器数据的时序、这些时序应包括/SCLK、SDI、SDO 和 CONVST/CS 信号。 请参阅 捕获和共享的 POornada 和共享时序、我可以清楚地查看。 此外、请打开一个新线程、因为该线程已关闭。 谢谢。

    此致、

    戴尔