STMCU小助手
发布时间:2022-2-20 15:01
|
前言 客户计划使用 STM32L011xx 开发一款光模块产品,需要 MCU 支持 I2C 接口下载代码。但 STM32L011xx 内部 Bootloader 没有支持 I2C 接口,所以需要我们使用 IAP 的方式来帮助客户实现该功能。 问题分析 IAP 代码大小 STM32L011xx 只有 8K-16K 字节的 Flash 容量,所以这个 IAP 的代码不能过大,否则就会将用户的应用程序空间压缩的过小。经过和客户沟通,最大 IAP 代码可以占用的空间为 2K 字节。 开发模式选用 因为代码空间的限制(最多 2K 字节),所以我们只能使用直接写寄存器的开发方式。 硬件结构
代码结构 基本流程参考了我们的 Bootloader by UART 的结构。在上电的时候检查外部使能管脚的状态,如果是有效电平的话就进入到 Bootloader 模式,开启 Bootloader 程序的运行。在 Bootloader 程序中进行Flash 内容的改写。最后,进入到烧写好的用户代码中运行。
注意事项 在使用寄存器开发中,需要注意几个地方。 1/在地址匹配中断中需要检查 DIR 的值以判断当前的状态是发送还是接收; 2/主要的任务是下载 Code 到 Flash 中,所以,I2C 主要做的就是接收一个完整的数据包,这里以主机发送 STOP 事件为接收完成标志。 3/I2C 的接收缓冲开的越大越好,但是由于代码的限制,以最小的数据量为准。 4/STM32L011xx 系列的 Flash 最小单元都是相等的(128Byte),所以在擦写的时候可以直接一个页一个页的写,降低了IAP 代码的大小。 总结: 此 IAP 程序架构可以在整个 STM32L011 系列产品中直接应用,节省了客户下载应用代码的程序开发时间。占用的代码空间小于 2K 字节。 |
微信公众号
手机版