工具与软件:
您好!
我尝试在设计中使用 DRV8434SRGER 步进电机驱动器、
它通过 SPI 接口连接到微控制器。
发送的16位字0x4800
我尝试读取 CTRL2寄存器。 它的默认状态为0x0F。
根据数据表、CTRL2默认值为15 (00001111)。
但我看到 SDO 线路上始终为零。
请提供帮助。
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.
尊敬的 Igor:
感谢您在论坛中发帖。 SPI 帧和时序对其运行有显著影响。 请考虑以下几点。
有关详细信息、请参阅 此处数据表的7.5.1串行外设接口(SPI)通信
1- SPI 格式
SDI 输入数据的字长为16位、由以下格式组成
•1个读/写位、W (第14位)
•5个地址位、A (第13到9位)
•8个数据位、D (第7到第0位)
SDO 输出数据字的长度为16位、状态寄存器(S1)占前8位。 报告字(R1)是所访问的寄存器的内容。
时序要求。
当 nSCS 引脚变为低电平和高电平时、SCLK 引脚必须为低电平。
•nSCS 引脚在两帧之间的高电平时间应至少为500ns。
•必须发生16个完整的 SCLK 周期。
•数据会在时钟下降沿被捕捉、并在时钟上升沿被驱动。
•如果发送到 SDI 引脚的数据字少于16位或多于16位、则会发生帧错误并且数据字会被忽略。
•对于写命令、寄存器中要写入的现有数据会在8位命令数据之后在 SDO 引脚上移出。
请考虑以下时间安排。
如果问题仍然存在、请分享波形、包括 nSCS、SCLK、nFAULT 和 SDI。
如果您有任何其他问题、请联系我们。
此致
Mojtaba。
尊敬的 Mojtaba:
感谢您的回答、
但它根本没有帮助我。
我在 DRV8434S 数据表中阅读了协议说明。
微控制器发送的所有信号完全匹配所有这些要求。
我将0x4800字发送到读取寄存器 CTRL2。
时序图符合要求。
DRV8434S 引脚连接:
SDI 连接到 SPI MOSI
SCLK 连接至 SPI SCK
nSCS 连接到 SPI NSS
SDO 连接到 示波器以查看输出信号
VSDO、ENABLE、nSLEEP、DVDD 连接到3.3V
所有 GND 引脚均连接到 GND。
为什么 SDO 线路上没有信号?
此致、
Igor。
尊敬的 Igor:
很遗憾您仍然遇到问题。 就像 Mojtaba 所述、假设不存在硬件问题、则可能出现 SPI 通信问题。 我假设您正在使用您自己的 PCBA 对 DRV8434S 进行测试。
[报价 userid="644942" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1482660/drv8434s-drv8434s/5695933 #5695933"]时序图符合要求。
DRV8434S 引脚连接:
SDI 连接到 SPI MOSI
SCLK 连接至 SPI SCK
nSCS 连接到 SPI NSS
SDO 连接到 示波器以查看输出信号
VSDO、ENABLE、nSLEEP、DVDD 连接到3.3V
所有 GND 引脚均连接到 GND。
为什么 SDO 线路上没有信号?
[报价]这个说明看起来是正确的。 请参阅下面的只读寄存器的一帧 SPI 事务捕获示例。
需要验证的一个重要因素是您如何设置地址的高8位-如下所示。 地址位在此器件中左移一个位置。
您能否像所示的示例那样捕获全部四个 SPI 信号。 谢谢你。
此致、Murugavel