STM32™ 在应用中编程通过 I²C 总线
简介
对于大多数基于 Flash 的系统而言,在最终产品安装之后,能够对固件进行更新,这一点非常重要。这称为在应用中编程 (IAP)。此应用笔记的目的就是为创建 IAP 应用程序提供通用指南。
STM32F10x 微控制器能够运行用户指定的固件,从而执行微控制器内置 Flash 的 IAP。借助这一特性,在重新编程过程中可以使用任意类型的通信协议(如 CAN、USART、USB、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 中的相关文档。
1 IAP 概述
1.1 原理
可以使用开发工具通过 JTAG 或 SWD 接口,把 IAP 驱动程序烧写到 Flash 的起始地址。此驱动程序使用 I2C,将文件从主机载入 STM32F10x 内部 Flash,然后执行该文件。
1.2 用户程序应满足的条件
将 IAP 应用程序加载到从 Flash 基址开始到 0x0800 0fff 的一段区域。因此,必须将用户应用程序加载到 0x0800 1000 地址以上的 Flash 高地址区域。
1.3 全局流程图
使用连接到按钮的引脚来选择跳转到用户应用程序还是执行用于重新编程的 IAP:
● 复位时,按下按钮将执行 IAP
● 否则,跳转到用户程序
1.4 IAP 命令
1.4.1 读命令
读命令用于从 STM32 的 Flash 中读取数据,并且可以从用户存储空间的任意 Flash 地址开始读取。
|