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.

[参考译文] DRV8323R:SPI 通信错误:SDO 数据错误

Guru**** 2478545 points
Other Parts Discussed in Thread: DRV8323

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1237344/drv8323r-spi-communication-error-wrong-sdo-data

器件型号:DRV8323R
主题中讨论的其他器件:DRV8323

sys_clk 的时钟频率:50MHz;
SPI_SCK 的时钟频率:50MHz/12。
如图所示、在 CS 被拉至低电平后、我首先配置栅极驱动 HS 和栅极驱动 LS 寄存器:
GATE_Drive_HS = 16'b0_0011_011_1100_1000
GATE_Drive_LS = 16'b0_0100_111_111010_1110
然后读取栅极驱动 HS 和栅极驱动 LS 寄存器的值:
GATE_Drive_HS_RD = 16'b1_0011_000_0000_0000
GATE_Drive_LS_RD = 16'b1_0100_000_0000_0000
但是、DRV8323芯片的 SDO 输出信号比输入信号延迟了一点、这会导致我在 SPI_SCK 下降沿收集的数据出错。

DRV8323RS 的外设电路图如下图所示。

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

    尊敬的 Wu:

    感谢您发送编修。 我需要查看您发送的信息、并希望在本周结束前提供进一步的反馈。

    此致!

    戴维斯

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

    尊敬的 Wu:

    请尝试发送写入命令以通过栅极驱动 HS 寄存器中的 LOCK 字段解锁寄存器(而不写入任何其他内容)、然后发送另一个写入命令、其中包含您要为这两个寄存器写入的实际数据。 最后再发送一个写入命令以锁定寄存器(不写入任何其他内容)。 请告诉我这是否有效。

    此致!

    戴维斯  

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

    亲爱的戴维斯:

    我已经识别了以下参数并按顺序发送。

    IDRIVE_HS_Unlock = 16'b0_0011_011_0000_0000
    IDRIVE_HS        = 16'b0_0011_011_1111_1100
    IDRIVE_HS_Lock   = 16'b0_0011_110_0000_0000
    IDRIVE_HS_READ  = 16'b1_0011_000_0000_0000

    FPGA 发送和接收的信号如下图所示。

    我首先配置了 IDRIVE_HS、当我在下一步锁定 IDRIVE_HS 时、SDO 的输出信号仍然错误。

    很抱歉我直到现在才看到您的回复。 感谢你的帮助。

    祝你一切顺利。

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

    尊敬的 Wu:

    不能确定是否仍然在写入寄存器时遇到问题、因为您已解决了此线程、但另一种尝试的方法可能是解锁寄存器、然后锁定寄存器、但包括您要在锁定寄存器的同时写入的位。 如果这不起作用、请在读取寄存器之前确保没有下电上电、睡眠模式循环或 UVLO 故障、因为这些条件会导致 SPI 寄存器设置为默认值。 请告诉我、这些解决方案中是否有任何一个有所帮助。

    此致!

    戴维斯

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

    亲爱的 戴维斯:

    抱歉、我错误地标记此主题已解决。 我 仍然无法写入寄存器。  我将尝试解锁和锁定寄存器 、包括我要写入的位、并尽快回复给您。

    祝你一切顺利。

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

    亲爱的 戴维斯:

    IDRIVE_HS_Unlock = 16'b0_0011_011_0000_0000

    IDRIVE_HS        = 16'b0_0011_011_1111_1100

    IDRIVE_HS_Lock   = 16'b0_0011_110_1111_1100

    IDRIVE_HS_READ  = 16'b1_0011_000_0000_0000

    我已经尝试解锁和锁定寄存器、包括我尝试写入的位。 从图中可以看出、我在锁定寄存器后读取的值与最初解锁寄存器时返回的值相同、但与我写入寄存器时返回的值不同。

    我还尝试读取"Fault Status 1"、如下图所示、返回值为0。 也不会将 nFault 引脚拉至低电平、表示芯片未检测到故障。

    我非常困惑、为什么芯片的返回信号有时在 SCK 的上升沿附近而有时在 SCK 的下降沿附近跳跃。 根据手册、芯片应在 SCK 的上升沿返回数据、并在下降沿接收数据。

    祝你一切顺利。

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

    尊敬的 Wu:

    我需要做更多的工作来研究这个问题、并希望在本周结束时提供更多反馈。

    此致!

    戴维斯

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

    很抱歉耽误了时间、我需要继续研究这一问题。 发送 MOSI 读取信号后、您是否具有 MISO 信号的图像? 我很好奇、响应是否会在16个时钟周期的下一帧中出现。

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

    尊敬的 Wu:

    您能否说明 是 通过生成上述图形的软件还是通过实时数字示波器观察到 SDO 中的延迟?  从我所发送的图形中可以看出、在执行读取和寄存器地址命令后、MISO 信号看起来是正确的、但有很小的延迟。 该问题可能是软件视图问题、 而不是器件输出延迟问题。

    此致!

    戴维斯

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

    亲爱的戴维斯:

    我使用软件"Quartus"中的"Signal Tap Logic Analyzer"捕获了 MISO 数据。 当我配置其他芯片、例如 AD7386时、不会出现此问题。 我不认为是软件的问题。

    祝你一切顺利。

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

    尊敬的 Wu:

    您能否确认您的 SPI 协议是否符合这些时序要求?

    您所发送图像中的时序标记的比例我有点困惑、需要特别检查 SDO 输出数据延迟时间是否可能导致 MISO 信号和时钟不匹配。 据我所知、MISO 上返回的读取数据 在图像中似乎右移了一位、但位本身在其他方面看起来是正确的。

    此致!

    戴维斯