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.

[参考译文] MCF8329A:无法在自定义硬件上使电机旋转

Guru**** 2398695 points
Other Parts Discussed in Thread: MCF8329A

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1437086/mcf8329a-cannot-get-motor-spinning-on-custom-hardware

器件型号:MCF8329A
主题中讨论的其他器件: MOTORSTUDIO

工具与软件:

您好!

我正在尝试与 mcf8329a 周围的座右铭河。 但是、我的设置中似乎有一些问题。  

我已购买并使用 TI 的评估板测试了此器件的所有产品、它能很好地与我的电机配合工作。 我已经调优并导出了 json 中的所有设置。

但现在、我将在我们自己的硬件上尝试相同的代码、而且不会得到预期的结果。 电机未开始旋转。 查看相位 ABC 后、我可以看到驱动器正在做一些事、首先在所有相位上以50kHz 的正方形切换相位、但之后什么都不做、没有运动、没有报告故障或任何事情。 所以我有点卡住了。 您是否对问题可能是什么有任何想法?

我有通信功能、可以与 mcf8329a 进行通信、但我无法让电机转动。 我使用 Arduino 作为测试平台。

这些是我的寄存器设置;

    Register registers[] = {
        {0x00000080, 0xE2EBD667},
        {0x00000082, 0xC0E89EE6},
        {0x00000084, 0x50A24EC2},
        {0x00000086, 0x93372007},
        {0x00000088, 0x16788328},
        {0x0000008A, 0x9AAD5721},
        {0x0000008C, 0x1BF4182A},
        {0x0000008E, 0x60980960},
        {0x00000094, 0x00000000},
        {0x00000096, 0x00000000},
        {0x00000098, 0x80000004},
        {0x0000009A, 0x00000000},
        {0x0000009C, 0x00000000},
        {0x0000009E, 0x00000000},
        {0x00000090, 0x26483186},
        {0x00000092, 0x71402888},
        {0x000000A0, 0x0946027D},
        {0x000000A2, 0x02008165},
        {0x000000A4, 0x40032310},
        {0x000000A6, 0x40100000},
        {0x000000A8, 0x03E8C00C},
        {0x000000AA, 0x06A045C0},
        {0x000000AC, 0x80008079},
        {0x000000AE, 0x80000102},
        {0x000000E0, 0x00000000},
        {0x000000E2, 0x00000000},
        {0x000000E4, 0x24318C94},
        {0x000000E6, 0x00000000},
        {0x000000E8, 0x3A000000},
        {0x000000EA, 0x00000000},
        {0x000000EC, 0x80000000},
        {0x000000EE, 0x00000018},
        {0x000000F0, 0x030503A0},
        {0x000000F2, 0x02600160},
        {0x000000F4, 0x00000000},
        {0x00000196, 0x00000000},
        {0x0000019C, 0x045C1DE8},
        {0x0000040E, 0x00197857},
        {0x0000043C, 0x00440000},
        {0x0000043E, 0x00680000},
        {0x00000440, 0x00CC0000},
        {0x00000450, 0x00000002},
        {0x00000458, 0x00020002},
        {0x0000045C, 0x01FDA000},
        {0x00000460, 0x00033F62},
        {0x00000462, 0x000376CF},
        {0x00000464, 0x000261AE},
        {0x000004AA, 0xFA88A300},
        {0x000004AC, 0xF86B7264},
        {0x000004CC, 0x00A80000},
        {0x000004CE, 0x00A89616},
        {0x000004D0, 0xFFADDE8B},
        {0x000004D2, 0x008D6DC2},
        {0x000004DC, 0xFFA8A1F4},
        {0x000004DE, 0x0075FB02},
        {0x000004E0, 0x000BB21E},
        {0x000004E2, 0x008FFF8F},
        {0x0000051A, 0x00000000},
        {0x00000532, 0x00E9C550},
        {0x00000542, 0x04CCBAB0},
        {0x000005D0, 0x00000000},
        {0x0000060A, 0x00000000},
        {0x0000060C, 0x005F3E12},
        {0x000006B0, 0x00000005},
        {0x000006BA, 0x00000172},
        {0x000006E4, 0x0004000B},
        {0x0000071A, 0x00A737C2},
        {0x0000075C, 0xFFFFFEA1},
        {0x0000075E, 0x008E5BE6},
        {0x0000076E, 0x00000000},
        {0x00000774, 0x58830AD3}
    };

这是我的布局;

我想了解使用评估套件时如何通过 i2c 设置启动和速度命令。 哪些引脚在启动前被置位为高电平/低电平?  

我已尝试清除所有故障、但没有区别。

这是我用于设置速度的代码;

// Function to set the motor speed using ALGO_DEBUG1 register
void setMotorSpeed(uint8_t address, uint16_t speed) {
    // Read the current value of ALGO_DEBUG1 register (address 0xEC)
    uint32_t currentValue = MCF8329AReadRegister(address, 0xEC);

    // Modify the SPEED_OVER_RIDE and DIGITAL_SPEED_CTRL fields
    currentValue |= 0x80000000; // Set SPEED_OVER_RIDE to 1 (bit 31)
    currentValue &= ~(0x1FFFF << 16); // Clear DIGITAL_SPEED_CTRL bits (30-16)
    currentValue |= ((speed & 0x1FFFF) << 16); // Set DIGITAL_SPEED_CTRL bits (30-16)

    // Split the modified value into bytes
    uint8_t byte4 = (currentValue >> 24) & 0xFF;
    uint8_t byte3 = (currentValue >> 16) & 0xFF;
    uint8_t byte2 = (currentValue >> 8) & 0xFF;
    uint8_t byte1 = currentValue & 0xFF;

    // Write the updated value back to ALGO_DEBUG1 register
    MCF8329AWriteRegister(address, 0xEC, byte4, byte3, byte2, byte1);
}

我不确定这是否是设置电机转速的正确方法。 这是调试寄存器、这似乎很奇怪。

感谢任何帮助!

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

    你好、Mikael、

    感谢您分享所有细节、我将详细介绍此内容并回复您。

    谢谢、此致

    Venkatadri S.

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

    您好!

    我接着将评估套件连接到我的硬件、然后我以相同的寄存器设置进入 GUI、并尝试旋转电机。 这是工作的,至少一点。 我将到达我"Run MPET"(运行 MPET)的部分、其中电机旋转一次。 然后、我会得到以下错误。

    19:15:7:685 |:无法检测到任何 MPET 故障。 请检查调优文件。

    19:15:7:671 |:开始电机 Ke 测量...(此时电机将缓慢旋转)

    19:15:7:671 |:电动机电抗测量 error...checking 是否存在故障。

    19:15:4:271 |:开始电机 Ke 测量...(此时电机将缓慢旋转)

    19:15:1:365 |:MPET 运行成功。

    19:15:0:853 |:Motor mech measurement complete.

    19:15:0:853 |:开始电机机械测量。

    19:15:0:853 |:电机 Ke 测量完成。

    19:14:30:203 |:开始电机 Ke 测量...(此时电机将缓慢旋转)

    19:14:27:3 |:正在运行 MPET...

    有什么想法吗?

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

    好的、我们在这里取得了更多进展。 我已经成功地使用评估套件和我的硬件来运行电机。 现在我只需要一种使用 i2c 设置 rpm 的方法。 它在评估 MCU 上工作、但不在我的 MCU 上工作。 因此、请验证我是否写入了正确的寄存器。 我不确定在 GUI 中一次点击启用 i2c 速度设置时要写入哪些寄存器? 当时在背景中发生了什么? 此外、寄存器设置与0xEC 中的第16-30位对应什么? 这是用于写入速度命令的正确寄存器吗?

    我离我很近、电机使用 Arduino 运行、但我无法使用 i2c 调节转速。

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

    你好、Mikael、

    我会在今天结束时回复你。 感谢您分享详细信息。

    我还将为 MPET 发送指令。  

    请等待我的回复、然后继续使用 MPET。

    谢谢、此致

    Venkatadri S.

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

    你好、Mikael、

    感谢您提供的详细信息和状态。 我将浏览该主题并提供观察结果。

    该主题已锁定、我将尝试重新打开以继续讨论。

    谢谢、此致

    Venkatadri S.