2010 07 月文 ID 16393 1 1/21
AN3078
应用笔记
STM32™ 在应用中编程
通过 I²C 总线
简介
对于大多数基于 Flash 的系统而言,在最终产品安装之后,能够对固件进行更新,这一点非
常重要。这称为在应用中编程 (IAP)。此应用笔记的目的就是为创建 IAP 应用程序提供通用
指南。
STM32F10x 微控制器能够运行用户指定的固件,从而执行微控制器内置 Flash IAP。借
助这一特性,在重新编程过程中可以使用任意类型的通信协议 CANUSARTUSB
SPI I2C 等)。
本应用笔记介绍如何使用 STM32F10x I2C 外设执行在应用中编程。第一步,将 Aardvark
工具用作主机,向 STM32F10x 发送 IAP 命令。第二步,将另一 STM32F10x 微控制器用作
主机,且该微控制器桥接 PC 与目标器件(USB/I2C 桥接器)。
STM32F10x 用作 I2C 存储器,可通过 I2C/接口对其进行编程、擦除和读取。
有关 STM32F10x 系列产品的特性、引脚、电气特性、机械数据和订购信息的详细信息,请
参见 STM32F10x 数据手册,该手册可从意法半导体网站下载:www.st.com
STM32 固件库可从 www.st.com 下载。
下面列出了开发过程中使用的 Aardvark 主机适配器版本:
固件:Aardvark I2C/SPI Control Center v3.52 -2009.0130
硬件:Aardvark I2C/SPI v3.0
有关 Aardvark 主机适配器及其软件的详细信息,请参阅 www.st.com 中的相关文档。
www.st.com
目录 AN3078
2/21 文档 ID 16393 1
目录
1IAP 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 用户程序应满足的条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 全局流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 IAP 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1 读命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 写命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.3 擦除页命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.4 擦除用户存储空间命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4.5 转到用户代码命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 通过 I
2
C 外设执行 STM32 IAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 硬件介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 软件介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 I
2
C 数据包介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 IAP I
2
C 读命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 IAP I
2
C 写命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.4 IAP I
2
C 擦除页命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.5 IAP I
2
C 擦除用户存储空间命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.6 IAP I
2
C 转到用户代码命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.7 IAP I
2
C 流程图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 向目标器件发送 IAP 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 使用 Aardvark I
2
C 主机适配器发送 IAP I
2
C 命令 . . . . . . . . . . . . . . . . . . . 14
3.1.1 Aardvark I
2
C 接口模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.2 Aardvark I
2
C 批处理模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 使用另一用作桥接器的 STM32 器件发送 IAP 命令 . . . . . . . . . . . . . . . . . 17
3.2.1 原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 硬件介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.3 固件介绍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18