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:我执行了 MPET 序列、然后将寄存器加载到 EEPROM 中。 然后我再次尝试读取寄存器、但得到了所有 r 的 0x00000000

Guru**** 2905440 points

Other Parts Discussed in Thread: MCF8329A

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

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1638728/mcf8329a-i-performed-the-mpet-sequence-and-then-i-loaded-the-registers-into-the-eeprom-then-again-i-tried-to-read-the-registers-but-im-getting-0x00000000-for-all-the-r

器件型号: MCF8329A

使用 MCF8329A 定制卡以及 ATMEGA2560 微控制器的 Im。

根据 MCF8329A 数据表,我执行了 READ-MODIFY-WRITE 机制来修改寄存器而不更改保留值,然后我执行了 MPET 序列。 在 MPET 序列期间、我的 BLDC 电机运行大约 1 到 2 分钟、BEMF、Current、Speed (kp、ki) 值被加载到 shadoe 寄存器中。 1 到 2 分钟后、我的 BLDC 电机平稳停止(而 MPET 序列电机消耗 0.25 个电流)。

在电机的 MPET 序列号极数从 4 更改为 8 之后、这就是我修改该寄存器、然后加载到 EEPROM 中的原因。
然后、我尝试在断电后读回寄存器、我得到每个寄存器的 0x00000000 值。 我不知道这种情况的根本原因。
我认为、在 MPET 序列期间、从设备的地址发生了变化、并且没有注意到我将修改加载到 EEPROM 中(我猜)。

从那时起、我获得相同的 0x00000000 值。我检查了 ATMEGA2560 和 MCF8329A 的运行状况(电源轨引脚,外部上拉电阻,VCC 和 GND 之间短路,每个东西都正常)。
我尝试了扫描方法,使用 for 循环得到 I2C 从器件地址,但 bo 使用. IM 仅获得 NACK。
请更正我出错的地方、我需要集中精力找出根本原因。
两天我尝试运行 MPET 序列、此时 MPET 序列执行正确、电机也顺利旋转。 我在读取时得到 0x00000000 寄存器值、现在没有发生什么情况。

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

    尊敬的 Dhivya:

    MPET 不更新 I2C 地址。 它仅在成功执行后更新电机电阻、电感、BEMF 常数和速度环路 Kp 和 Ki 系数。

    为了进一步缩小问题范围、您能否尝试使用 EVM 的 GUI 控制器与目标器件进行通信?

    谢谢、

    Dhinesh

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

    我使用的是定制的 PCB(MCF8329A IC + ATMEGA2560 ),为了实现这一点,我们可以使用 EVM 的 GUI 控制器来调优寄存器,如果是的话,请您解释一下,如何使用分步法。

    如前所述、mPET 序列不会更新 I2C 地址、但在 MPET 序列之后、它会更新很多内容、例如 MOTOR_startup1、2 寄存器、我还将电机极数配置为 4、但在 MPET 之后、它会修改为 8 极。 解释此行为的原因。

    在 MPET 序列之后、我将影子寄存器加载到 EEPROM 中、从我尝试读取寄存器、我获取每个寄存器的 0x00000000。

    解释根本原因。

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

    您好、

    请断开 MCF8329 和 ATMEGA 控制器之间的 I2C 线路、并在将 MCF8329A I2C 线路与 EVM 的板载 MCF83xx 断开后、将这些线路连接到 EVM 的 GUI 控制器 I2C 线路。 有一根跳线 (J9) 将 GUI 控制器 I2C 信号连接到 MCF8329。 在从 ATMEGA 控制器断开 MCF8329 I2C 信号时、请确保 I2C 线路上存在外部上拉电阻。

    您从地址位置 0x80 至 0xAE 读取或写入的数据源自 MCF8329 的影子存储器。 每当发生下电上电或执行 EEPROM 读取操作时、该器件都会将内部 EEPROM 内容复制到影子存储器中。 请验证您的测试过程中是否发生了任何功率干扰。

    请尝试使用 EVM 的 GUI 控制器将 MCF8329A 连接到 GUI、并尝试读取数据。

    谢谢、

    Dhinesh

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

    谢谢您、

    我会像您提到的那样执行操作。

    但是、先生、电机会在 MPET 序列 5 至 6 次期间使喷出的液体变得平滑。 但是我不知道加载到 EEPROM 后发生了什么,当我尝试读取寄存器时,我得到了每一个寄存器 0x00000000,这将是什么根本原因。

    在启动模式下、我逐块检查、控制不会进入 I2C_START ();函数。 每次 im 收到 0x20(从器件无 ACK)时、其根本原因是什么。

    SIR 不建议使用 I2C 对 MCF8329A 的寄存器进行调优/配置、如果 SIR 可靠、请进行解释。

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

    您好、

    我怀疑位于 DEVICE_CONFIG1->I2C_SLAVE_ADDR  寄存器中的目标 I2C 地址值可能已被修改。 您是否在整个 I2C 地址范围 (0x00 至 0x7F) 内收到 NACK 响应?

    这就是我建议使用 Motor Studio GUI 与目标器件进行通信的原因。 Motor Studio 将在每次启动时自动扫描目标 I2C 地址。

    我们建议使用 SmartTune 功能来生成调优文件。 SmartTune 可估算运行电机所需的所有调优参数。 有关更多详细信息、请参阅 Smarttune 用户手册: https://www.ti.com/lit/an/sdaa095/sdaa095.pdf 

    谢谢、

    Dhinesh

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

    我执行了一个简单的扫描逻辑来查找从站地址、但没有使用 SIR。

    MCF_addr=I2C_DEVICE_addr ();
    MCF_addr1=MCF_addr;

    uint8_t I2C_DEVICE_addr (void)


    易失性 uint8_t addr1=0、addr_status=0;

    对于 (addr1=0x00;addr1<=0x7F;addr1++)


    ADDR_STATUS=I2C_Start (addr1<<1|I2C_WRITE);

    if (addr_status==ACK_RCVD)

    I2C_Stop ();
    返回 addr1;
    }
    I2C_Stop ();
    _delay_us (50);
    }
    返回 0xFF;
    }

    在执行此操作后、仍然会出现相同的问题。

    在读取寄存器时、我尝试通过设置断点来设置、每次控制命中 0x20 (SLA+W SENT、NACK)。

    I2C 从器件地址的变化、而无需特意修改。 主席先生、请解释一下。

    如何将定制 PCB 连接到 EVM 的 GUI SIR。

    谢谢你。

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

    使用 I2C(手动配置)对 MCF8329A BLDC 驱动器卡进行调优是可靠的、甚至不是 SIR。

    我们是否可以通过手动 I2C 配置来执行 MPET 序列和电机旋转。

    即使我将 BASE_CURRENT 从默认值 37.5A 更改为 7.5A(我将 rsense 电阻更改为 10m Ω、将 CSA_GAIN 更改为 20)。MCF8329A 没有响应任何 SLAVE_ADDRESS 的原因是什么。

    是否有任何逻辑可查找 MCF8329A 的 SLAVE_ADDRESS。

    先生、但您提到在 MPET 序列期间、I2C_SLAVE 地址不会更改。

    先生,告诉我根本原因,为什么 MCF8329A 没有响应,而读为什么总是得到 0c00000000(但最初工作正常).

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

    主席先生、我对两性平等持怀疑态度。
    根据要求修改寄存器后、我需要根据修改后的 1 数量来修改寄存器的奇偶校验位。
    请说明这一点。

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

    尊敬的 Dhivya:

    无需更新所有寄存器的奇偶校验位。 请忽略奇偶校验位。

    谢谢、

    Dhinesh