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.

[参考译文] ADS131M08:从 ADC 接收到的不相关响应。

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/947847/ads131m08-irrelevant-response-received-from-adc

器件型号:ADS131M08
主题中讨论的其他器件:MSP430FR59941MSP430FR5994

我正在发送 null 命令并收到以下响应。

在 Din 上发送的数据= 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

02 FF 80 79 83 4E 86 7D 41 79 4F FC BF FF FF FF FC A3 7F FE 66 F9 66 2F F9 49 8F 51 50 00 02
02 FF 80 79 8F 53 06 6C 18 79 5C D8 3F FF FF FF FC A6 7F FE 60 79 65 8B F9 48 FF BA 6B 00 02
02 FF 80 79 96 BB 86 61 AB F9 64 B4 BF FF FF FC B4 FF FE 52 F9 66 E3 F9 4A A9 4F EF 00 02
02 FF 80 79 A1 5C 86 53 0B F9 6C 0E BF FF FF FC C1 FF FE 58 F9 67 99 79 4A E4 73 5E 00 02
02 FF 80 79 A4 0A 86 4F 77 6C 74 3F FF FF FF FC C3 FF FE 6C 67 42 79 4A E2 DC FD 80 02
02 FF 80 79 A5 28 06 4E 7D 79 6D A9 BF FF FF FF FC B6 7F FE 64 79 68 20 F9 4B 48 4D 13 00 02
02 FF 80 79 A4 66 86 50 05 F9 68 EB 3F FF FF FF FC B6 7F FE 76 79 67 86 F9 4B 18 0A 4C 00 02
02 FF 80 79 A0 2D 06 56 DC F9 62 95 BF FF FF FC C8 FF FE 5C 79 67 60 F9 4A E1 F5 92 00 02
02 FF 80 79 94 39 06 67 A5 79 55 CD 3F FF FF FF FC AC 7F FE 59 F9 66 BC 79 4A 2A DB FB 00 02
02 FF 80 79 8B F4 86 71 B3 4E F0 BF FF FF FF FC B1 FF FE 43 F9 66 8F 79 49 D4 DB D1 00 02
02 FF 80 79 7C 57 06 82 95 F9 49 C7 BF FF FF FF FF FC 90 7F FE 52 79 66 3D F9 49 95 A0 4B 00 02
02 FF 80 79 72 5A 86 93 42 79 49 04 BF FF FF FF FF FC A1 7F FE 6C 79 66 2D 79 49 43 72 24 80 02
02 FF 80 79 6D 9D 06 B9 1E 79 44 A5 3F FF FF FF FC 8E 7F FE 53 79 65 7C F9 48 7F 50 0A 00 02
02 FF 80 79 6F 3B 06 BB F5 79 4A CB BF FF FF FF FC A2 7F FE 77 F9 65 52 F9 48 A9 BD 0A 00 02
02 FF 80 79 73 41 86 CC DA F9 50 6D 3F FF FF FF FC 9C 7F FE 86 79 65 7C 79 48 F8 54 34 00 02
02 FF 80 79 8B 28 06 71 CF F9 59 D5 3F FF FF FF FC AA 7F FE 73 79 61 46 F9 44 D5 76 80 02
02 FF 80 79 9A E7 06 1A 57 79 64 F5 3F FF FF FF FC B5 7F FE 5D 79 66 2F F9 4A 02 AD 6C 00 02
02 FF 80 79 AB DA 85 96 29 F9 6A AB 3F FF FF FC A9 7F FE 47 F9 66 8E 79 EF 2E 22 80 02
02 FF 80 79 B4 59 05 59 70 79 6B A2 3F FF FF FF FC B2 FF FE 74 79 66 F6 79 4A 82 AE 6D 80 02
02 FF 80 79 B7 D2 85 47 1C F9 6D 3F FF FF FF FF FC DA 7F FE 57 79 66 E3 79 4A 64 0E A4 00 02
02 FF 80 79 B4 35 05 69 F9 68 22 BF FF FF FF FF FC 93 7F FE 71 F9 66 D5 F9 4A 62 D9 3F 00 02

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

    Prasad、您好!

    感谢您的发帖、欢迎来到我们的论坛!

    状态寄存器内容看起来是读回0x02FF、这表示您希望数据填充为零。 您是如何对模式寄存器进行编程的? 请提供寄存器映射设置、最好在单独的文本文件中提供。

    您的例程中的 SPI 帧重叠/DRDY 中断可能会出现问题。 我说、因为所有数据样本的最后一个字节以相同的0x02开头、就像状态字中的第一个字节一样。 这只是一个猜测-您能否检查 SPI 事务的时序并确保它们在/DRDY 中断之间完成?

    此致、

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

    您好、Ryan、
    1)

    以十六进制格式接收到的响应-> 02FF8079834E867D41794FFCBFFFFCA37FFE66F9662FF9498F515000

    以二进制格式转换的接收响应-> 0000 0010 1111 1000 0000 0111 1001 1000 0011 0100 1110 1000 0110 0111 1101 0100 0001 0111 1001 0100 1111 1111 1100 1011 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1100 1010 0011 0111 1111 1110 0110 0110 1111 1001 0110 0010 1111 1001 0100 1000 1111 0101 0001 0101 0000 0000 0000 0000

    接收到的响应左移1位-> 0000 0101 1111 0000 0000 1111 0011 00000 1101 0011 1010 0001 1001 1111 0101 0000 0101 1110 010 1001 1111 1001 1111 1001 0111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1001 0110 1111 1111 1111 1100 1101 1111 0010 1100 0101 1111 0010 1001 0011 0001 1110 1010 0010 1010 0000 0000 0000 0000
    左移1位后接收到十六进制格式的响应-> 05FF00F3069D0CFA82F29FF97FFFF946FFFCCDF2CC5FF2931EA2A000

    如果我们计算05FF00F3069D0CFA82F29FF97FFFF946FFFCCDF2CC5FF2931EA2的 CRC、则得到 A000。
    因此、接收到的响应正确、但我们需要左移1。
    为什么是这样?

    2)复位后接收到的前两个字节为7F 94、如果我们执行左移1位、则得到 FF 28、这是正确的。

    3)我们提供8MHz SMCLK (引脚编号 67)连接到 ADC 的 CLKIN。对吧?

    4)如果我们不为 CLKIN 引脚提供时钟、则在02FF 和 CRC 之间接收到的所有字节都为零。我认为 CLKIN 仅用于 ADC 采样、我们仍然通过 SPI 与 ADC 进行通信。我们是否可以在不提供 CLKIN 的情况下读取寄存器或写入 ADC 寄存器?

    5)如果我们尝试使用 WREG 命令、则会得到上面提到的相同响应、该响应用于空命令。(1个命令字(1个零填充字节)、1个 CRC 字(全零)、8个零字、1个字= 3个字节、1个帧= 10个字)

    6)所有命令是否需要至少10个字来完成帧。

    7) SPI 的 CLKIN 和 SCLK 是否需要同步以实现正确通信? 我从数据表中了解的是、同步仅可提高 SNR。

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

    您好 Prasad、

    请参阅下面的答案2。

    2.这似乎是合理的。 在 MSB 输出之前、您以某种方式锁存在0。 tCSSC 表示在发送第一个 SCLK 之前、必须在/CS 下降沿之后至少等待16ns。 但是、在/CS 变为低电平后、驱动 DOUT 可能需要高达50ns (tCSDO)的时间。 我建议在读取 MSB 之前等待超过50ns。

    3.我不熟悉这个微控制器的功能。 8MHz 在 CLKIN 的频率范围内。 确保时钟源具有低抖动且占空比在40-60%之间。

    必须为器件通信提供 CLKIN。 例如、在8.3.14中、计算寄存器映射 CRC 需要 CLKIN。

    5.我不明白这项质询。

    6.是的、大多数命令每帧只需要10个字、但寄存器读/写命令可能需要额外的字。

    7.只有在使用同步接口模式时才需要同步 CLKIN 和 SCLK。 在异步 SPI 模式下、当它们源自相同的时钟源且其中一个时钟源是另一个时钟源的两倍功率时、通常有助于提高 SNR、但正常运行时不需要该时钟源。

    此致、

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

    您好、Ryan、

    我得出的结论是、ADC 没有根据以下几点正确接收命令:

    A)由于接收 MSB 位有问题 、在发送时 MSB 也可能有问题。

    b)对于发送的每个命令、我都会收到 null 命令的响应、如果 ADC 无法理解该命令、我会根据数据表假设该命令为 null。

    2)所以我尝试通过向右移动1位来发送命令(而不是 A0 00 00、我们发送了50 00来读取 ID 寄存器)、如果我们将接收到的响应移动1位、我们将得到预期的响应。 请查看下表。

    地址 首字母缩写词 名称 命令 具有1位右移的命令 接收到的响应字   具有1位左移位的响应字  复位后的预期响应 备注
    00h ID ID 寄存器      A0 00 50 00 14 00 28 00 28 xx 好的
    01小时 状态 状态寄存器      A0 80 50 40. 02 FF 80 05 FF (最后一个字节为 FF,因为数据可用 ) 05 00 好的
    02h 模式 模式寄存器      A1 00 50 80 02 88 05 10. 05 10. 好的
    03小时 时钟 时钟寄存器      A1 80 50 C0 7F 87 FF OE FF 0E 好的
    04h GAIN1. GAIN1寄存器      A2 00 51 00 00 00 00 好的
    05小时 GAIN2. GAIN2寄存器      A2 80 51 40. 00 00 00 好的
    06小时 配置 CFG 寄存器      A3 00 51 80 03 00 06 00 06 00 好的
    07小时 THRSHLD_MSB 阈值 MSB 寄存器     A3 80 51 C0 00 00 00 好的
    08h THRSHLD_LSB 阈值 LSB 寄存器     A4 00 52 00 00 00 00 好的
    09小时 CH0_CFG 通道0 CFG 寄存器    A4 80 52 40. 00 00 00 好的
    0Ah CH0_ocal_MSB 通道0偏移校准 MSB 寄存器 A5 00 52 80 00 00 00 好的
    0Bh CH0_ocal_LSB 通道0偏移校准 LSB 寄存器 A5 52 C0 00 00 00 好的
    0通道 CH0_GCAL_MSB 通道0增益校准 MSB 寄存器 A6 00 53 00 40 00 80 00 80 00 好的
    0Dh CH0_GCAL_LSB 通道0增益校准 LSB 寄存器 A6 80 53 40.     00 未选中
    0Eh CH1_CFG 通道1 CFG 寄存器    A7 00 53 80     00 未选中
    0Fh CH1_ENMODE_MSB 通道1偏移校准 MSB 寄存器 A7 80 53 CO     00 未选中
    10小时 CH1_ENMODE_LSB 通道1偏移校准 LSB 寄存器 A8 00 54 00     00 未选中
    11小时 CH1_GCAL_MSB 通道1增益校准 MSB 寄存器 A8 80 54 40. 40 00 80 00 80 00 好的
    12小时 CH1_GCAL_LSB 通道1增益校准 LSB 寄存器 A9 00 54 80     00 未选中
    13小时 CH2_CFG 通道2 CFG 寄存器    A9 80 54 C0     00 未选中
    14小时 CH2_ENMODE_MSB 通道2偏移校准 MSB 寄存器 AA 00 55 00     00 未选中
    15小时 CH2_ENMODE_LSB 通道2偏移校准 LSB 寄存器 AA 80 55 40.     00 未选中
    16小时 CH2_GCAL_MSB 通道2增益校准 MSB 寄存器 AB 00 55 80 40 00 80 00 80 00 好的
    17小时 CH2_GCAL_LSB 通道2增益校准 LSB 寄存器 AB 80 55 C0     00 未选中
    18小时 CH3_CFG 通道3 CFG 寄存器    AC 00 56 00     00 未选中
    19小时 CH3_ocal_MSB 通道3偏移校准 MSB 寄存器 交流80 56 40.     00 未选中
    1Ah CH3_ocal_LSB 通道3偏移校准 LSB 寄存器 AD 00 56 80     00 未选中
    1小时 CH3_GCAL_MSB 通道3增益校准 MSB 寄存器 AD 80 56 C0     80 00 未选中
    1通道 CH3_GCAL_LSB 通道3增益校准 LSB 寄存器 AE 00 57 00     00 未选中
    1DH Ch4_CFG 通道4 CFG 寄存器    AE 80 57 40.     00 未选中
    1Eh CH4手动变焦_msb 通道4偏移校准 MSB 寄存器 AF 00 57 80     00 未选中
    1Fh CH4手动变焦 LSB 通道4偏移校准 LSB 寄存器 AF 80 57 C0 00 00 00 好的
    20小时 Ch4_GCAL_MSB 通道4增益校准 MSB 寄存器 B0 00 58 00 40 00 80 00 80 00 好的
    21小时 Ch4_GCAL_LSB 通道4增益校准 LSB 寄存器 B0 80 58 40.     00 未选中
    22小时 Ch5_CFG 通道5 CFG 寄存器    B1 00 58     00 未选中
    23小时 Ch5_ocal_MSB 通道5偏移校准 MSB 寄存器 B1 80 58 C0     00 未选中
    24小时 Ch5_ocal_LSB 通道5偏移校准 LSB 寄存器 B2 00 59 00     00 未选中
    25小时 Ch5_GCAL_MSB 通道5增益校准 MSB 寄存器 B2 80 59 40. 40 00 80 00 80 00 好的
    26小时 Ch5_GCAL_LSB 通道5增益校准 LSB 寄存器 B3 00 59 80     00 未选中
    27小时 通道6_CFG 通道6 CFG 寄存器    B3 80 59 C0     00 未选中
    28小时 Ch6_ocal_MSB 通道6偏移校准 MSB 寄存器 B4 00 5A 00     00 未选中
    29小时 Ch6_ocal_LSB 通道6偏移校准 LSB 寄存器 B4 80 5A 40.     00 未选中
    2Ah Ch6_GCAL_MSB 通道6增益校准 MSB 寄存器 B5 00 5A 80 40 00 80 00 80 00 好的
    2小时 Ch6_GCAL_LSB 通道6增益校准 LSB 寄存器 B5 80 5A C0     00 未选中
    2通道 CH7_CFG 通道7 CFG 寄存器    B6 00 5B 00     00 未选中
    2DH CH7_ENMOD_MSB 通道7偏移校准 MSB 寄存器 B6 80 5B 40.     00 未选中
    2时 CH7_ocal_LSB 通道7偏移校准 LSB 寄存器 B7 00 5B 80     00 未选中
    2Fh CH7_GCAL_MSB 通道7增益校准 MSB 寄存器 B7 80 5B C0 40 00 80 00 80 00 好的
    30小时 CH7_GCAL_LSB 通道7增益校准 LSB 寄存器 B8 00 5C 00     00 未选中
    3时 REGMAP_CRC 寄存器映射 CRC 寄存器    bf 00 5F 80     00 未选中
    3Fh 保留 保留寄存器      bf 80 5f C0     00 未选中

    3) 3)完成上述任务后,我对程序进行了以下更改:

      I)在将 CS 设为低电平之前、我在模式1中配置了 SPI。

      II)使 CS 变为低电平。

      III)将 CS 设为低电平后、在模式2中配置 SPI。

      IV)已发送命令(根据数据表、无任何移位、即 A0 00 00、仅用于读取 ID 寄存器)   

        现在、我接收到来自 ADC 的预期响应。 但我认为这不是一个反复更改 SPI 模式的好主意。

    4)根据 ADC 和 MSP430FR5994数据表

       i) ADC - a)在 SCLK 上升沿启动数据

              b)在 SCLK 下降沿锁存数据。

       II) MSP430FR5994 SPI (模式1)- A)在 SCLK 下降沿启动数据

                                    b)在 SCLK 上升沿锁存数据。

    通过查看 MSP430FR5994的时序波形、我得出的结论是:

    i)在模式1中、第一个边沿(被黄色 圆圈包围)为上升边沿 、 MSB 在上升边沿之前移出。   当 MSB 在 SIMO 上移出时,SCLK 上没有下降沿 ,这就是为什么 MSB 没有被 ADC 锁存(ADC 需要下降沿来锁存数据)

    ii)由于 ADC 缺少 MSB,它将 Command 解释为错误的命令并给出 null 命令响应。 这是正确的、因为我们在 SPI 模式1中通过右移1位来发送命令时得到了正确的响应(需要左移1位、无法确定为什么我需要执行移位操作)。

    III)在使 CS 变为低电平之前,我使用了 SPI 模式1来满足条件- 当 SCLK 为低电平时,必须进行 CS 转换。在使 CS 变为低电平(从高电平到低电平转换)之后,我在模式2中配置了 SPI。

    III)在模式2中、当 MSB 在 SIMO 上移出时、SCLK 上有下降沿 (被紫 色圆圈包围)、因此 MSB 被 ADC 锁存、我们得到预期的响应。   

        我想知道、是否有任何方法可以避免反复更改 SPI 模式。 1位移位方法(1个命令右移和1个响应数据左移)也起作用、但会增加固件的复杂性。  

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

    Prasad、您好!

    请参阅 ADS131M08数据表的第8.5.1节。 该器件仅支持 SPI 模式1 (CPOL = 0、CPHA = 1)。 主机控制器和 ADS131M08都必须在 SCLK 上升沿启动数据、并在 SCLK 下降沿锁存数据。 在此模式下、SCLK 将空闲低电平。

    您能否验证我在上一次答复中提到的时序规格?

    此致、

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

    CS 从高电平转换为低电平后、我提供了超过50ns 的足够延迟、因此这不是问题。

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

    Prasad、您好!

    感谢您确认计时技术规格。

    根据您提供的图表、 您应该在微控制器上使用 uC_CKPH = 0和 uC_CKPL = 0。

    坦率地说、我对图31-4感到困惑、因为它不同意传统 SPI 模式。 您标记为红色并标记为"模式1"的 UCxCLK 波形在 UCxSIMO 和 UCxSOMI 上产生每个下降沿的数据转换、而前 上升沿用于锁存数据。 在此模式下、另一个操作是从微控制器中启动 MSB (即可能是初始/CS 高电平到低电平转换)。 该模式对应于传统 SPI 模式0 (CPOL = 0、CPHA = 0)、而不是 SPI 模式1 (CPOL = 0、CPHA = 1)。

    当我们说 ADS131M08使用 SPI 模式1时、我们假设以下 SPI 模式配置:

    请将您的微控制器配置为使用 uC_CKPH = 0和 uC_CKPL = 0、并告诉我结果。 您可能希望在 MSP430 E2E 论坛上创建单独的主题、以询问这种差异。  

    此致、

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

    您好、Ryan、

    我将在尝试模式0后共享结果。我 还将在 MSP430 E2E 论坛上创建该主题。

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

    您好、Ryan、

    我很高兴地告诉您, 我们将通过模式0 (uC_CKPH=0和 uC_CKPL=0)从 ADC 获得正确的响应。 问题是 MSP430FR5994 SPI 模式和传统 SPI 模式之间不匹配。 MSP430 SPI 中的模式0 (uC_CKPH=0和 uC_CKPL=0)时序与 传统模式1 (uC_CKPH=1和 uC_CKPL=0) 时序相匹配。 我附上 了 SPI 时序的图像,以了解将面临相同问题的人。  

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

    Prasad、您好!

    感谢您的更新。 我很高兴这为您解决了问题。

    此致、