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.

[参考译文] DRV8462EVM:驱动器不响应 SPI

Guru**** 2482225 points
Other Parts Discussed in Thread: DRV8462EVM

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1187296/drv8462evm-driver-does-not-respond-to-spi

器件型号:DRV8462EVM

大家好、我目前正在尝试通过 SPI 为 Sitara-AM437x 处理器设置 DRV8462evm。  启动后、我发送5个我要写入的寄存器、即0x4、0x5、0x6、0xC 和0x10、 如下所示。 尽管 MOSI 上的传出数据包是准确的、但我没有从驱动程序获得响应。 我连接了板载 EVM 微控制器、并在通过 TI GUI 控制驱动器时查看了 SPI 事务、发现我的 MISO 线路在事务之间拉低、而板载微控制器将线路拉高。   

我的 SPI 事务:

  

特写:

用于参考的板载 MCU 事务:

我的 MODE 引脚也被上拉至逻辑高电平、以便在 SPI 模式下使用驱动器。 我提供24V 电压、因为 VM 和 TP28显示为驱动器本身提供5V 电压。  

我已经尝试过的内容:

MISO 线路的内部上拉电阻(3.3V)-一旦 CS 被拉至低电平、信号就被拉至0v。

MISO 线路的外部上拉电阻(3.3V、3.9kΩ Ω)-线路在整个传输过程中从未被拉低并保持逻辑高电平。

在启动 SPI 事务之前、nSleep 脉冲介于20us 和40us 之间。 交易期间无变化。

切换 MISO 和 MOSI 线路以确保正确连接信号。

如果我不知道还有什么要尝试、我们将感谢您的任何帮助。

另外、数据表指出:"器件 SDO 上的数据在 SCLK 的上升沿进行传播、而器件在 SCLK 的后续下降沿捕获 SDI 上的数据。" 我从未遇到过在时钟的不同边缘发送和接收数据的器件、即 SPI 的 CPHA。 由于我只能在时钟的一个边沿上发送和接收数据、因此应该如何在微控制器端处理此问题。

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

    尊敬的 Atharva:

    感谢您在电机驱动器论坛上发帖。

    我们团队的某个人将在下周周二之前与您联系、寻求支持。 周一将是美国的国家假日。

    此致、

    Pablo Armet

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

    我注意到我的 MOSI 线路被拉高、而板载微控制器没有被拉高、我附加了一张来自空闲低 MOSI 线路的响应图片。 结果似乎是一样的。

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

    尊敬的 Atharva:

    感谢您与我们联系。 为了确保我了解您的硬件设置、这是我们的 EVM 之一、移除了板载 MSP430上 SPI 线路的跳线短路、并且您将 Sitara SPI 线路连接到驱动器 IC、对吧? 您是否仍在使用 GUI 控制驱动器 IC 的其他引脚。 否则、在 器件上电之前、或者 nSLEEP 为逻辑低电平、然后 nSLEEP 变为逻辑高电平、MODE 引脚是否拉至逻辑高电平? 请确认。  

     

    此致、Murugavel

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

    是的、我已从 J4和 J8上移除所有跳线。 我控制的是 SCLK、SDI、SDO、nSCS、MODE、 来自 Sitara 的 nSleep、Enable、Step 和 Dir。 我还在 nSleep 脉冲之前、期间和之后将 MODE 引脚保持为高电平。 在器件上电之前、它也是高电平。

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

    感谢您的确认。 设置模式的正确方法是首先使 nSLEEP = 0、更改 MODE = 1、然后通过 nSLEEP = 1唤醒器件。 如果在器件上电之前它处于高电平、这也就足够了。 您能否向我发送一个与以下代码段类似的已放大事务捕捉、以便我验证时钟下降沿与 SDI 和 SDO?  

    我假设您使用的是 Sitara 控制器的 McSPI。 PHA 和 POL 使用哪些设置?  

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

    下面是我尝试将0x8F 写入第一个 CTRL 寄存器的代码段、该寄存器的地址为0x4。

    我将使用 PinMux 工具中的 SPI 引 脚与 SPI.h 一同使用 在 Sitara 上、我使用的是 POL 0、因此时钟高电平有效、而第1相位则为下降沿。 我已经尝试了相0和相1、结果相同。

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

    谢谢。 我不熟悉 PinMux 工具。 什么是逻辑高电平电压? POL0和 PHA1听起来不错。 您能否将驱动器器件与 Sitara 之间的 SDO 线路保持断开状态、并使用驱动器 IC 发出的 SDO 进行捕获?  我希望驱动器 SDO 的前两位为逻辑高电平、只需确保 SDO 线路不会被外部电路加载。  

     

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

    SDI 和 SDO 线路上的逻辑高电平电压为3.3V。 我从 Sitara 上断开了 SDO 线路、并尝试读取一些寄存器。 SDO 线路似乎被 DRV 拉高、并且不传输任何数据。 我已附加代码段、我将在其中再次读取第一个 CTRL 寄存器0x04。

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

    似乎器件没有响应。 nSLEEP =0时、您能获得另一个捕获吗? 在我的设置中、在这种情况下、SDO 输出保持逻辑低电平。

     

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

    当 nSleep 接地时、我实际上会从驱动器获得响应。

    仔细检查后、它看起来像一个在其间随机翻转的 SDI 线。 线路仍处于高电平空闲状态。

    特写:

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

    SDO 线路可能是 HiZ、布线会导致串扰。 在这种情况下、我的 EVM HW SDO 处于低电平、我再次进行了验证。 它没有转动 HiZ。 当我使 nSLEEP = 1时、我从 SDO 线路获得预期响应。 在这里、我可以看到您的设置与我的 EVM 硬件设置之间的差异。   

    在最近发送的缩放捕捉中、您正在通过在 SDI 线上发送0x44来读取驱动器器件寄存器0x04。 时序与我的设置相同-请参阅下面的捕捉。 您仍然没有从器件获得预期的 SDO 响应。 您是否能够使用示波器探测 SDO 线路。 逻辑捕捉可能会由我怀疑的噪声触发。 此外、是否可以使用本机跳线连接并使用板载 MCU 和 GUI 驱动器件来快速验证器件功能? 谢谢。

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

    我移除了 Sitara 之间的所有连接、连接了 J4和 J8中的所有跳线、并使用 GUI 运行驱动程序。 EVM 本身似乎功能齐全、可按照指示运行我的电机。 我还在 SDO 上使用了示波器、看起来波形是由噪声引起的。 我注意到 SDO 始终在 GND 处或非常接近 GND 提供信号。

    编辑:所以我做了更多的测试、看起来我的逻辑分析仪拉高了 SDO 线路。 当我仅使用示波器时、SDO 线路空闲低电平、无论 nSleep 引脚的值如何、都不会有任何活动。 我的驱动程序是否未被唤醒? 在向 nSleep 引脚发送1之后、是否有一些特定的时序才能发送 SPI 事务?

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

    尊敬的 Atharva:

    感谢您移除与 Sitara 板的连接并测试 EVM。 我很高兴 EVM 能够正常工作。 您能否澄清一下您的评论:"SDO 始终为我提供 GND 信号或非常接近 GND "?  

    在我的 EVM 设置中、SDO 未连接到 MSP430 MCU、电机驱动器 SDO 引脚的示波器轨迹如以下代码段所示。 这是对所有寄存器的读取。 读取完成后、nSCS 变为高电平、每当 nSCS = 1时、SDO 将变为高阻态。 SDO 从最后一个位逻辑高电平状态缓慢衰减时、您可以看到这一点。 SDO 信号逻辑高电平 是预期的3.3V。  

    当 EVM 连接到 Sitara 处理器时、您能否验证器件的数字内核电压 Vcc 为3.3V?  

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

    我只想补充一点、为了确保 EVM 中的 VCC = 3.3V、必须连接 USB 电缆、3.3V 是使用 EVM 上的稳压器从 USB 电源轨导出的、供参考。  

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

    非常感谢、这正是我的问题。 现在、当我使用 Sitara 控制它时、驱动程序工作正常。 请告诉我 USB 显式供电的位置。 我不想再错过它了。 再次感谢!

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

    尊敬的 Atharva:

    很高兴您的问题得到解决、您能够使用 Sitara 控制器控制驱动程序。 EVM 的原理图和 Altium 文件可从网络上下载。 根据 EVM 原理图、板载 MSP430 MCU、USB 接口和 MSP430 eZFET 调试器以及 VCC 从 USB 获得3.3V 电压。 本身没有明确提及。 此 EVM 专为独立运行而设计、需要通过 USB 连接进行 GUI 控制。 因此、这意味着 VCC 根据需要加电。  

    此致、Murugavel