文档库 最新最全的文档下载
当前位置:文档库 › 在STM32L011上通过I2C接口实现IAP

在STM32L011上通过I2C接口实现IAP

在STM32L011上通过I2C接口实现IAP
在STM32L011上通过I2C接口实现IAP

在STM32L011上通过I2C接口实现IAP

前言

客户计划使用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字节。

重要通知 - 请仔细阅读

意法半导体公司及其子公司(“ST”)保留随时对ST 产品和/ 或本文档进行变更、更正、增强、修改和改进的权利,恕不另行通知。买方在订货之前应获取关于ST 产品的最新信息。ST 产品的销售依照订单确认时的相关ST 销售条款。

买方自行负责对ST 产品的选择和使用, ST 概不承担与应用协助或买方产品设计相关的任何责任。

ST 不对任何知识产权进行任何明示或默示的授权或许可。

转售的ST 产品如有不同于此处提供的信息的规定,将导致ST 针对该产品授予的任何保证失效。

ST 和ST 徽标是ST 的商标。所有其他产品或服务名称均为其各自所有者的财产。

本文档中的信息取代本文档所有早期版本中提供的信息。

? 2015 STMicroelectronics - 保留所有权利

相关文档