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.

[参考译文] DRV8889-Q1:驱动程序代码实现

Guru**** 2439560 points
Other Parts Discussed in Thread: MSP-MOTOR-CONTROL, DRV8889-Q1, DRV8889-Q1EVM, LP-MSPM0L1306

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1530103/drv8889-q1-driver-code-implementation

器件型号:DRV8889-Q1
主题中讨论的其他部件:MSP-MOTOR-CONTROL 、、 LP-MSPM0L1306

工具/软件:

您好、

我正在使用 DRV8889-Q1 电机驱动器、我需要驱动器代码来启动开发工作。 您能否提供相同的驱动程序代码'

谢谢。此致

Anusha MS

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

    尊敬的 Anusha:

    感谢您的提问。

    我们已发布完整的 C 代码和包含 C 源文件的 TI CCS 工程文件、可在 EVM 网页中下载。 请参阅下面的代码片段。  

     MSPM0 SDK MSP-MOTOR-CONTROL 、 https://dev.ti.com/tirex/explore?search=drv8889-q1 中还提供了该器件的 ARM M0 驱动程序。 请参阅下面的屏幕截图。 该操作使用了 MSPM0 HAL、旨在与  LP-MSPM0L1306 LaunchPad 配合使用、手动连接到 DRV8889-Q1EVM 或您自己的 DRV8889-Q1 PCB。 您可以在 MSPM0SDK 用户手册中查找连接和其他详细信息。  

    此致、Murugavel  

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

    您好、 Murugavel、

    我通过 SPI 发送以下数据来以 1/2 步进来控制电机;请帮助我了解情况是否正确。

    dir_clear ();//电机停机

    // DIR_SET();//电机启动
    step_set();
    SPI_writeRegister (0x05、0x30);
    delay_us (20);
    step_clear ();

    SPI_writeRegister (0x03、0xf0);
    delay_us (10);
    SPI_writeRegister (0x06、0x80);
    delay_us (10);

    谢谢。此致、

    Anusha MS

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

    另外、如果电机正常工作且没有任何故障条件、输入电压为 12V、那么 A1、A2、B1 和 B2 引脚上的理想电压应该是多少?

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

    尊敬的 Anusha:

    什么是最终应用? 您能分享步进电机数据表吗?

    注意地址位在高字节中的位置 — 请参阅数据表下方的内容。 A0 位从 B9(而不是 B8)开始 — 左移一个位置。 因此、要写入或读取地址 0x05、地址的上限必须为 0x0A、所有寄存器也是如此。 您必须正确修复地址位位置。

    我通过 SPI 发送以下数据来以 1/2 步进来控制电机;请帮助我了解情况是否正确。

    dir_clear ();//电机停机

    // DIR_SET();//电机启动
    step_set();
    SPI_writeRegister (0x05、0x30);
    delay_us (20);
    step_clear ();

    [/报价]

    函数 step_set () 和 step_clear () 有什么作用? 是否通过 CTRL3 发出 STEP 输入? 将 0x30 写入 CTRL3 会通过启用 SPI_STEP 和 SPI_DIR 位来设置全步进 100%步进模式。 对于半步进模式、假设还要将 SPI_DIR 和 SPI_STEP 写入 1、则必须写入 0x33。

    SPI_writeRegister (0x03、0xf0);
    delay_us (10);
    SPI_writeRegister (0x06、0x80);
    delay_us (10);

    就像我提到的、必须更改 0x06(而不是 0x03 和 0x0C、而不是 0x60)上述两个地址。 将 0xF0 写入 CTRL1 会将 TRQ_DAC 设置为电流标量的最低值 6.25%。 该应用中的 VREF 输入电压是多少?

    CTRL4 中的 0x80 会执行 CLR_FLT。

    另外、如果在电机正常工作而没有任何故障条件下输入电压为 12V、那么 A1、A2、B1 和 B2 引脚上的理想电压应该是多少?

    您有要分享的波形捕获吗? 它们将是开关波形峰值、可能接近或略小于 VM 输入电压(大约 1V)。 使用仪表测量这些电压是没有道理的。 对于步进电机、其绕组电流波形很重要。 有关微步进的电流波形、请参阅第 58 页和第 59 页。 您可以在互联网上搜索双极步进全步进半步进电流波形。  

    此致、Murugavel  

    [/quote]