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.

[参考译文] TM4C1231D5PZ:I2C 更新

Guru**** 2508425 points
Other Parts Discussed in Thread: EK-TM4C123GXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1272083/tm4c1231d5pz-i2c-updating

器件型号:TM4C1231D5PZ
主题中讨论的其他器件:EK-TM4C123GXL

大家好!

我尝试使用 I2C 更新 TM4C123控制器。
不幸的是、出现了问题、我没有线索。

我遵循 第五条。 针对数据包处理的串行更新。
发送0x11 0x1会将控制器设置为 ROM_UpdateI2C 模式。

使用 Beagle、我可以查看 I2C 事务、并注意 COMMAND_DOWNLOADCOMMAND_SEND_DATA 获得(虽然只有一次)。
第一个后COMMAND_SEND_DATA,我得到 i2c 超时。

有任何相关帮助吗?

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

    您好!

     虽然我们没有一个名为 ROM_UpdateI2C ()的 I2C 引导加载程序示例,但我们有一个调用 ROM_UpdateUART ()的 UART 引导加载示例。 此示例可在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\boot_demo_uart_rom 中找到。 您能否修改此示例以适应 I2C? 重要的是、应用程序必须在调用 ROM_UpdateI2C 之前配置并启用  I2C 接口、并禁用所有处理器中断。 请参阅以下引导加载程序用户指南中的说明。 在修改 I2C 示例之前、我还建议您按原样运行该示例、以便了解它的 UART 引导加载。 另请确保根据 I2C 协议在 SCL 和 SDA 总线上具有所需的上拉电阻器。 它还有助于在逻辑分析仪上显示总线波形。  

    在调用 ROM 引导加载程序 API 之前、应用程序必须配置和启用所选的
    连接并禁用所有处理器中断。

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

    您好,Charles
    我使用与 ROM_UpdateUART 相同的序列(在本例中,禁用中断并调用 ROM_UpdateUART ()或 ROM_Update_I2c ()))
    该序列适用于 UART 更新(使用 LM 闪存编程器和串行接口)。

    我怀疑对 I2C 执行了相同的操作、困难的部分是根据标准写入数据包。

    您是否有一个示例(C/C++/ Python /...)说明如何将数据包发送到 TM4C123?
    我的控制器处于 ROM_UpdateI2C 模式:)

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

    您好!

    此外,Charles,您能告诉我下载 TivaWare 系列2.2.0.295版的方向吗?
    [/报价]

    请从 https://www.ti.com/tool/SW-TM4C 下载最新版本。

    我使用与 ROM_UpdateUART 相同的序列(在本例中禁用中断并调用 ROM_UpdateUART()或 ROM_Update_I2C())
    该序列适用于 UART 更新(使用 LM 闪存编程器和串行接口)。

    我想知道您是否已启用和配置 I2C0接口。 在应用程序中,在调用 ROM_UpdateI2C()之前,您能确保您能 接收到来自 I2C 总线上主器件的一些测试消息。  我对 I2C 引导加载没有太多经验、但我认为 LM 闪存编程器用作主器件、MCU 用作主器件。 因此、我认为您需要将 MCU 设置为 I2C 从设备。  C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\i2c_slave_receive_int.c 中有一个从示例。 另请注意 ROM_UpdateI2C()仅适用于 I2C0。  

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

    您好,Charles

    感谢链接:)

    I2C 接口正常工作并用作从器件。

    我使用 I2C0。

    在 TM4C123上运行的程序接收我的命令(0x11)并调用 ROM_UpdateI2C ()。

    有时、由于在 powercycle 之后、程序无法运行、所以会写入一些字节。 由于一个不完整的程序周期、一个程序被写入损坏(虽然这是我的预期)。

    从主器件更新的 I2C 文档也很少。

    如初始映像所示、我发送一个 COMMAND_DOWNLOAD、如下:length (11)、checksum of data、COMMAND_DOWNLOAD、4字节 address (0x00000000)、4字节 size (+- 24k)。

    接下来、我按如下方式发送 COMMAND_SEND_DATA:length(11)、数据校验和、COMMAND_SEND_DATA、8个数据库。

    我应该执行 command_send_data、大约3000次、很遗憾、只有第一个完成。 其他都会超时。

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

    尊敬的 Ayrton:

    从主端进行 I2C 更新的文档有点缺乏

    我认为此应用手册将提供有关命令结构的更多详细信息。 本应用手册介绍了基于闪存的串行引导加载程序。 但是,ROM_UpdateI2C()和 ROM_UpdateUART()的实现将遵循相同的命令和数据包结构。  

    https://www.ti.com/lit/pdf/spma074

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

    您好,Charles  

    感谢提供文档  

    数据包的外观就要清晰得多。
    不幸的是、还没有令人惊叹的数据包流。  

    我将尝试使用将 TM4C123用作编程器的 TI 编程器方法、并比较这两个封装流。