你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1427|回复: 3

【中文文档】AN4221_STM32引导加载程序中的I2C协议

[复制链接]

1347

主题

1124

回帖

0

蝴蝶豆

管理员

最后登录
2020-12-9
发表于 2019-4-3 11:04:43 | 显示全部楼层 |阅读模式
STM32 自举程序中使用的 I2C 协议

前言

本应用笔记说明了 STM32 微控制器自举程序中使用的 I2C 协议。它详细说明了每个支持的指令。

若需器件自举程序 I2C 硬件资源和要求的更多信息,请参考应用笔记 AN2606 “STM32 微控制器系统存储器自举模式 ”。

2.png


1 I2C 自举程序代码序列

1.png


注: 在 AN2606 中规定了每个产品自举程序的 I2C 从地址。进入系统存储器自举模式后,并且此时 STM32 微控制器已配置好 (若需更详细信息,请参考您的 STM32 系统存储器自举模式应用笔记),自举程序代码开始扫描 I2C_SDA 线引脚,等待检测它自身在总线上的地址。检测到之后, I2C 自举程序固件开始接收主机指令。

2 自举程序指令集

从 V1.1 协议版本开始支持 "No Stretch" 指令,当自举程序完成操作之前主机必须长时间等待时,它可以支持更好的进行指令管理。

只要可能,强烈建议使用 "No Stretch" 指令而不使用相应的普通指令。

支持的指令列于表 2 中。

1.png


No-Stretch 指令

当自举程序执行操作时, No-Stretch 指令可执行 Write、 Erase、 Write Protect、 WriteUnprotect、 Read Protect、 Read Unprotect 操作而不延长 I2C 线。当自举程序执行的操作需要等待时间时,这些指令允许与总线上的其它器件通信。

这些指令与标准指令的不同之处在于指令结束:当主机在指令结束要求 ACK/NACK 时,自举程序不会延长 I2C 线,而是使用第三种状态 ——Busy (0x76)来响应。当主机收到Busy 状态时,它会再对状态轮询,读取一个字节,直到收到 ACK 或 NACK 响应。

通信安全

从编程主机到器件的所有通信都经过校验和验证。接收的数据字节块都经过异或计算。所有字节异或计算后算出一个字节,加到每次通信的末尾 (校验和字节)。对所有收到的字节 —— 数据 + 校验和 —— 做异或计算,最后结果必须为 0x00。

对每个指令,主机会发送一个字节及其补码 (异或 = 0x00)。

每个包或接受 (ACK 应答)或丢弃 (NACK 应答):
• ACK = 0x79
• NACK = 0x1F

对于 No-Stretch 指令,当操作正在进行时,会发送 Busy 状态而不是 ACK 或 NACK:

• BUSY= 0x76

注: 主机的帧可为下列之一:
• 发送指令帧:主机作为主发送端发起通信,向器件发送两字节:命令代码 + XOR。
• 等待 ACK/NACK 帧:主机作为主接收端发起 I2C 通信,从器件接收一个字节:ACK 或NACK 或 BUSY。
• 接收数据帧:主机作为主接收端发起 I2C 通信,从器件收到响应。收到的字节数取决于指令。
• 发送数据帧:主机作为主发送端发起 I2C 通信,向器件发送需要的字节。发送的字节数取决于指令。

小心: I2C 通信实现了超时机制,这是自举程序指令正确执行所必需要考虑的。此超时在同一指令的两个 I2C 帧间实现。例如,对于 Write memory 指令,在指令发送帧和地址存储器发送帧之间有超时机制。 此外也将在同一 I2C 帧中的两个连续数据接收或发送实例之间插入同一超时周期。如果超时周期已过,则生成系统复位以避免自举程序崩溃。有关每种 STM32 产品的 I2C超时值,请参考 AN2606, “I2C 自举程序时序特性 ” 一节。

...........

想了解更多,请下载原文阅读



回复

使用道具 举报

14

主题

719

回帖

58

蝴蝶豆

金牌会员

最后登录
2020-12-1
发表于 2019-4-3 14:37:39 | 显示全部楼层
谢谢图图的分享
回复 支持 反对

使用道具 举报

29

主题

2129

回帖

127

蝴蝶豆

论坛元老

最后登录
2020-12-7
发表于 2019-4-3 16:12:58 | 显示全部楼层
感谢分享~~~
回复 支持 反对

使用道具 举报

6

主题

930

回帖

133

蝴蝶豆

金牌会员

最后登录
2020-12-9
发表于 2019-4-4 09:39:23 | 显示全部楼层
收藏
回复 支持 反对

使用道具 举报

请先关注话题后回复
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版