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.

[参考译文] ADS124S08EVM:SPI 通信故障。 包括所有详细信息。

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/963386/ads124s08evm-spi-communication-failure-including-all-details

器件型号:ADS124S08EVM
主题中讨论的其他器件: ADS124S08

您好!  

我正在尝试在我的 MCU 开发板和 ADS124S08EVM 之间建立 SPI 通信。 我使用 STM32H7 Nucleo 板作为主设备来读取 ADS 器件 ID。 我已在我的 EVM 上安装 J3接头以及 JP1跳线、并将其短接以允许外部数字信号。 我的当前跳线配置为:

JP1 -短接、JP5 -短接、JP6 -短接、JP7 -短接、JP8 -(1-2)、 JP9 (2-3)、JP11 (1-2)、JP12 -开路、JP13 (1-2)、JP14 (1-2)。 所有其它跳线均被卸载/断开。  

此外、附上我在这里编写的代码供您参考。 代码摘要:

1.通过 SPITransmit 发送两个操作码- 0x20、0x00。 具有8位变量作为接收缓冲区的 SPIReceive、用于获取器件 ID。

SPI 参数:DataSize - 8位,BaudRatePrescaler - 2,CPOL -低 CPHA - 1边缘,全双工主设备。

//1. 将 CS 线路驱动为高电平并提供一些延迟。
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_1、GPIO_PIN_SET);
HAL_DELAY (10);
//2. 在进行事务处理之前将 CS 线路驱动为低电平。
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_1、GPIO_PIN_RESET);
//3. 通过 SPI 传输发送操作码以读取器件 ID。
HAL_SPI_transmit (&hspi1、RREG、2、10);
//4. 通过 SPI 接收读取操作码并将其存储在变量中。
HAL_SPI_Receive (&hspi1、&ReceiveBuffer、1、10);
//5. 将 CS 线路驱动为高电平。
HAL_GPIO_WritePin (GPIOB、GPIO_PIN_1、GPIO_PIN_SET);

我没有获得器件 ID 作为响应、我不确定原因、因为我确定代码工作正常。 我的跳线配置是否有问题或其他问题?

此致、  

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

    尊敬的 Anil:

    JP1处于默认状态、看起来一切都一样、因此我看不到任何问题。

    器件 ID 寄存器可以全为零、具体取决于位7:3中保存的内容、因此我不确定在这种情况下您如何判断器件是否正在响应。

    您是否能够读取任何其他寄存器? 您是否能够开始转换并且至少在 DRDY 上看到脉冲以了解器件是否完全响应?

    布莱恩

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

    尊敬的 Anil:

    需要考虑的其他事项:

    • 确保 RESET 引脚保持高电平
    • 确保您的 MCU 板和 EVM 之间具有牢固的数字接地连接
    • 确保 START 引脚未悬空、否则结果不可预测。

    请告诉我您尝试了什么、结果如何。

    布莱恩

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

    您好、Bryan、  

    我检查了 GUI 上的器件 ID、它实际上在涉及特定器件位的位中都是零。 但是、GUI 上的保留位为1、使器件 ID 为0x08。 这就是我尝试得到的结果。   

    我是否应该通过任何机会将主时钟从外部发送到 EVM 以便 ADC 正常工作? 内部 MCLK 可以通过我的跳线配置正常工作、对吧?  

    我还没有尝试过其他寄存器和 DRDY。 我将根据您对下一个主题的建议检查该问题、并尽快返回、非常感谢。  

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

    您好、Bryan、  

    我尝试了您的建议。  

    在执行任何其他操作之前、我使用 GPIO 将 RESET (J3接头上的引脚32)引脚设置为3.3V。 我检查了接地、两个板之间建立了一个公共接地。 我也将 START 引脚(J3上的引脚28)接地、因此它不会悬空。 我还使用不同的寄存器尝试了不同的操作。 我尝试将值0x49写入增益设置寄存器、将0x66写入 INPMUX 寄存器并读回这些值。 但没有得到任何值。 我尝试使用断点和单步调试代码、代码运行正常。 还有什么看起来不对的地方吗?

    接口是否需要电平转换器? 我的 STM32在3.3V 下工作。  

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

    尊敬的 Anil:

    感谢我采取了我建议的步骤,不幸的是,这似乎没有帮助。 但至少会排除一些问题。

    ADS124S08 EVM 接口电压(IOVDD)为3.3V、因此您无需电平转换器。 但同样重要的是、两个电路板之间的接地连接是可靠的并且没有噪声、否则这肯定会影响通信。

    您能否查看与逻辑分析仪的数字通信以验证提供了哪些命令? 使用示波器进行双校验也很有用、可确保信号干净并达到适当的电压电平。

    布莱恩

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

    您好、Bryan、  

    在我尝试采购 OSC/逻辑分析仪时、我尚未按照您的建议进行操作。 我将向您返回结果的一个小问题。  

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

    好的、谢谢 Anil、请告诉我。

    布莱恩

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

    您好、Bryan、  

    我确实采购了一个逻辑分析仪、但脉冲没有显示在软件上、我正在尝试解决这个问题。  

    与此同时,我已经能够建立了沟通。 我将 CLK PHA 更改为2边沿而不是1边沿(STM 具有 SPI 模式的命名惯例的方式不同、所以我感到困惑)。 我从器件获取值、但存在某种形式的不匹配。  

    我尝试读取器件 ID、而不是0x08、我得到的是0x10。 但特定于器件的位仍然为000、因此我猜这不是问题。  

    我尝试写入 INPMUX 寄存器。 无论我写入什么值、我都将读取该值的两倍。 例如、如果我向 INPMUX 寄存器写入0x66、它将提供0xCC;如果我写入0x33、它将读取0x66。 基本上、我读取的所有内容都左移一位。 如何解决此问题?

    我被告知、SPI 中的摩托罗拉帧格式可能会导致此问题、我最好使用 TI 模式、我打算下次尝试。   

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

    尊敬的 Anil:

    启动逻辑分析仪并运行后、我将确保首先正确发送命令。 可能是您在代码中将命令移出了某个位置、并且命令被正确读取。

    但是、确保正确的 SPI 模式(01)对于读取/写入数据至关重要。

    布莱恩

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

    您好、Bryan、  

    仍在尝试使用逻辑分析仪解决问题。 我被告知、如果我拔出所有其他 USB 设备并尝试或从其他系统运行分析仪、可能会正常工作、这是我接下来要尝试的操作。  

    也就是说、我成功地建立了 SPI 通信、而没有任何左移位。 如前所述、该问题在时钟中出现。 感谢您以前提出的所有建议、我确信如果不进行这些更改、器件将无法正常工作。 我将确保下次出现问题时具有范围数据。  

    此外、我还有两个与此相关的小问题。 数据表上的串行接口连接显示了使用47E 电阻器连接通信线路、使用0.1uF 电容器连接 DVSS 和 DVDD。 虽然我的器件正在工作、但我没有这样做。 这是我应该立即解决的问题吗?

    我注意到的另一件事是、EVM 上的 LED (D1)不再亮起。 它仅在我断开 JP1跳线、使其能够与板载处理器一起工作时亮起? 也就是说、当 JP1跳线被放置/关闭时、D4 (绿色)和 D3 (红色)亮起。 当 JP1跳线断开时、D4和 D1均为绿色。 这是预期的操作吗? 我在 DS 上找不到有关这方面的任何东西。  

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

    尊敬的 Anil:

    很高兴听到您的设计朝着正确的方向发展、并且您正在解决这些问题。

    对于您的其他问题:这些低阻抗电阻器可以减慢任何可能具有非常尖锐边缘(急剧上升时间)的数字通信信号。 这可能是您的系统中的问题、也可能不是问题、但这就是 EVM 中包含这些问题的原因。 您参考的电容器是电源去耦电容器、应包含该电容器以实现最佳性能。 请将此电容器尽可能靠近电源引脚放置。

    由于您已拆下 J1、因此 LED 可能会也可能不会按预期工作。 这是因为 LED D1-D3由板载 Tiva 上的 GPIO 引脚控制。 由于您已断开 Tiva、这些引脚处于悬空状态、LED 的状态未定。 连接到模拟电源电压的 D4就是这种情况。 这应准确反映 AVDD 已正确供电。

    布莱恩

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

    您好、Bryan、  

    非常感谢。 在继续发展的同时、我会记住这一点。 非常感谢您的所有帮助。