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.

[参考译文] DRV8243-Q1:具有 SPI 命令的 DRV8243-Q1库

Guru**** 2448780 points
Other Parts Discussed in Thread: DRV8243-Q1

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1377541/drv8243-q1-drv8243-q1-library-with-spi-commands

器件型号:DRV8243-Q1

工具与软件:

您好!  

我们目前 使用连接到 seeeduino xiao nrf52840板的 DRV8243-Q1 SPI (S)型号(DRV8243SQDGQRQ1)。

nSLEEP 引脚始终在硬件中被拉至高电平、DRFOFF、EN/IN1和 PH/IN2未连接到塞迪诺 Xiao 板。 我们的目标是使 DRV8243处于 PH/EN 模式并基于 SPI 命令进行控制。

附加我们的当前代码可驱动 DRV8243 、从而获得以下状态和硬件连接:
1) 1) OUT1为低电平、OUT2为高电平、SPI_IN 寄存器的位 S_DRVOFF、S_EN_IN1、S_PH_IN2->010和
2) 2) OUT1为高电平、OUT2为低电平 、SPI_IN 寄存器的位 S_DRVOFF、S_EN_IN1、S_PH_IN2->011

尽管 CLK、CS 和 MOSI 线路将数据位传输到适当的寄存器地址、但无法在 OUT1和 OUT2线路中获得所需的输出。   如果使用 SPI_MODE0、我们可以从 DEVICE_ID 寄存器(地址= 00h)中将 DRV8243S-Q1器件的器件 ID 读取为32h。

 即使对命令寄存器[write8 (0x08、0b10000000)进行写入时、FAULT_SUMMARY 寄存器(地址= 01h)[复位= 40h]也有一个十进制值129;]

 

您能帮助复习一下代码吗、如果我遗漏了什么内容、可以告诉我吗?  

e2e.ti.com/.../Code_5F00_main.txt 

 e2e.ti.com/.../DRV8243.cpp  

e2e.ti.com/.../DRV8243.h

感谢您的帮助。
   

 

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

    您好!

    感谢您的提问。

    >>无法在 OUT1和 OUT2中获得所需输出

    1)您能描述一下您在 OUT1和 OUT2上看到的内容吗? 正如您所提到的、您需要 OUT1、OUT2 =低电平和高电平或高电平和低电平。 您能告诉我们您在每个案例中看到了什么吗?

    2)次级、您的电源电压和 nSLEEP 连接不正确。 nSLEEP 运行时的最大电压为5.5V。 V6V5的电压电平是多少?  

    您的 SPI/MCU 电压电平是多少? 我建议在 nSLEEP 引脚上施加5V 或3.3V 电压、该引脚与 MCU 提供的 SPI 逻辑电平相匹配。

    3) 3)是否可以将外部上拉电阻器(1k Ω)添加至5V? 然后检查 nFAULT 是否为高电平? 如果该位为低电平、则器件存在某种故障情况。

    此致

    森田信也

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

    尊敬的信也:

    感谢您的回答。

    1)"您能描述一下您在 OUT1和 OUT2上看到的内容吗? 正如您所提到的、您需要 OUT1、OUT2 =低电平和高电平或高电平和低电平。 您能告诉我们您在每个案例中看到了什么吗?"

    答:  您是对的。 我们正在寻找您突出显示的状态。

    使用当前代码设置和电路板(nSLEEP 仍接收6.5V)时、我们得到以下结果:

    OUT1和 OUT2之间连接的电机在这两种情况下均无法正常工作。

     使用函数 outonehigh_outtwolow (seconds)和 outonehigh_outtwolow (seconds)、我在 OUT1和 OUT2上获得~300mV

    FAULT、STATUS 和 STATUS 2寄存器显示(注意:在测量时、我们没有连接负载):

    "故障寄存器:129

    STATUS1寄存器130

    Status2寄存器131"

    注意:

    如果我将当前时钟 SPI 设置从当前4Mhz 增加到10MHz、则 outonehigh_outtwolow (seconds)在两个引脚上显示为~0.4V、而另一个函数仍然产生~300mV

    2."次级电源电压和 nSLEEP 连接不正确。 nSLEEP 运行时的最大电压为5.5V。 V6V5的电压电平是多少?  

    您的 SPI/MCU 电压电平是多少? 我建议在 nSLEEP 引脚上施加5V 或3.3V 电压、该引脚与 MCU 提供的 SPI 逻辑电平相匹配。"

    答:  对于问题2、我们当前正在将 nSLEEP 引脚连接到3.3V、并且我们的是3.3V 逻辑电平板。

    3."您是否可以将外部上拉电阻器(1k Ω)添加至5V? 然后检查 nFAULT 是否为高电平。 如果该位为低电平、则表示器件存在某种故障情况。"

    答: 当连接到外部5V 电源和电路板的公共接地端时、 nFAULT 引脚的测量值为高电平(5V)。

    注意:  nSLEEP 仍收到6.5V 电压

    您能否也查看 SPI_ERR 的代码?  


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

    您好!

    感谢您的反馈。 今天让我给大家提供反馈。

    此致

    森田信也

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

    您好!

    输出似乎无法正常工作。 客户代码是复杂的固件程序、我无法找到不正确的内容。

    我的建议是尝试遵循简单的测试。

    1) 1)断开 OUT1和 OUT2的负载。 (OUT1和 OUT2为开路)

    2) 2)电源 VM=12V。 nSLEEP=高电平输入(3.3V 或5V)。 DRVOFF= C2 (0V)。

    3) 3) 使用1k Ω 寄存器检查 nFALUT 电压。 (现在 nFAULT 应为0V。 如果不为0V、则表示出了问题)

    4) 4)在 Addr=08h 时写入91h (1001 0001)。 (CLR_FLT、SPI_IN_LOCK=解锁)

      读取 DRVICE ID (addr=00h)、那么读取的数据应该是32h。 (如果不正确、则 SPI 通信不正确)

      读取故障汇总(地址= 01h)。 然后、读取的数据应该是00h 或40h。 (如果没有、请告知我们读数值是多少)

      现在、应将 nFAULT 引脚更改为高电平、如图7-9所示

    5) 5)在 Addr=09h (SPI_IN_REGISTER)上写入0Eh (0000 1110)。 S_EN=1和 S_PH=0)。

      现在、Out1 =~0V 且 OUT2 = VM (~12V)。  

    如果1)-5)可以、可以尝试连接负载。 那么我认为电机应该开始旋转。  

    此致

    森田信也