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.

[参考译文] DRV8350:SPI 读取操作未返回数据

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1380993/drv8350-no-data-returned-from-spi-read-operation

器件型号:DRV8350

工具与软件:

您好!

我已将 SPI 配置为 CPOL=0、并将其设置为根据数据表规格读取后沿的位。

但是、当尝试验证写入和读取操作时、读取操作不会返回任何数据。

bool SET_CONFIG_PWM_MODE (void){
 uint16_t DATA =(WRITE_BIT << 15)|(0xd << 11)| CONTROL_VALUE_DEFAULT
 sys_console_print ("PWM_mode:%x\n\r"data);
 bool ret = SPI1_Write (&datasizeof (data));//发送启用命令
 sys_console_print ("ret:%d\n\r"ret);
 while (SPI1_IsBusy ());
 回流
}

我看到过其他文章表明、数据可能在被读取之前被擦除。 是否可以在数据被潜在擦除之前访问该数据?

对于如何解决这一问题的任何见解或建议、我们将不胜感激。 提前感谢您的帮助!

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

    尊敬的 Isak:  

    感谢您的提问!  

    请让我看看这个 SPI 定时和协议,并在本周尽快与一个建议的后续.

    此致、  

    -约书亚  

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

    很抱歉我在处理其他任务时出现延迟。 感谢您的答复。

    以下是 SPI1设置:

    • 中断模式 :已启用(已选中)
    • 主/从模式 :师父
    • 比特率源时钟频率(Hz) :150,000,000
    • 芯片选择之间的延迟 :0
    • 启用 NPCS0/使用 GPIO? :已启用(已选中)
      • 波特率(Hz) :10 000 000
      • 每次传输的位数 :传输8位
      • 时钟极性 :非活动时时时时钟为低电平(CPOL=0)
      • 时钟相位 :数据在时钟前沿有效(NCPHA=1 )
      • SPCK 之前的延迟 :0
      • 连续传输之间的延迟 :0
      • 传输后片选激活 :已启用(已选中)
      • 传输后芯片选择未激活 :已禁用(未选中)

    我使用的是 Microchip 32位 MCU。 我想发送可从电机控制器接收读取数据的代码。

    感谢你的帮助。

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

    尊敬的 Isak:  

    不要担心,感谢您提供更多信息。  

    我将在本周进一步调查此事时随时向您通报最新情况。  

    此致、  

    -约书亚  

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

    感谢您的答复!

    以下是最新的更新。

    根据数据表、SPI 协议在后沿捕获数据、因此我已将 NCPHA 更改为0。

    此外、SDO 上需要一个上拉电阻器、因此我添加了一个。

    从顶部开始向下排列、连接按以下顺序排列:芯片选择(CS)、时钟(CLK)、串行数据输入(SDI)和串行数据输出(SDO)。

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

    尊敬的 Isak:  

    感谢您发送编修。  

    为了阐明您的波形、底部(黄色)通道是 SDO 引脚? 波形应与 SDI 线匹配(上升/下降沿应该很快)、并且似乎有一些寄生效应阻止 SDO 正确变化。  

    是否可以发送您的电路原理图以供进一步审查?

    此致、

    -约书亚

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

    你好、Joshua!

    感谢您的答复! 以下是您的问题的答案:

    1.是的、黄色通道是 SDO 管脚。

    2.虽然波特率最初设置为10MHz、但现在已降低为1MHz。 通过此调整、我们将获得有意义的波形。

    3、很遗憾、我只能给大家发送电路的部分示意图。 我希望这是可以理解的。

    此致、

    - Isak

    ---
    在调整上拉电阻器的时间常数后、该问题得以解决。

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

    目前波形问题已经解决、但我不确定波形是否实际匹配。

    我在发送0xf0波形时应该接收到0xf0、但我得到的是差分波形。

    您能否确认这是否正确?


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

    尊敬的 Isak:  

    感谢您发送编修。 我将查看该信息以帮助确认解决方案。 请期待本周的进一步答复。  

    此致、

    -约书亚

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

    您好、Isak、很抱歉耽误您的时间。  

    只是想看看在调整 SDO 时序和上拉后、该查询是否仍处于打开状态?  

    SDO 应再次匹配 SDI (绿色)波形、并在尖锐边缘上执行相关数据。

    此致、

    -约书亚