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

【实战经验】在STM32L011上通过I2C接口实现IAP

[复制链接]
zero99 发布时间:2016-11-18 16:25
在STM32L011上通过I2C接口实现IAP

前言
客户计划使用STM32L011xx开发一款光模块产品,需要MCU支持I2C接口下载代码。但STM32L011xx内部Bootloader没有支持I2C接口,所以需要我们使用IAP的方式来帮助客户实现该功能。


问题分析

IAP代码大小
STM32L011xx只有8K-16K 字节的Flash容量,所以这个IAP的代码不能过大,否则就会将用户的应用程序空间压缩的过小。经过和客户沟通,最大IAP代码可以占用的空间为2K字节。


开发模式选用
因为代码空间的限制(最多2K字节),所以我们只能使用直接写寄存器的开发方式。


硬件结构
11.jpg


代码结构
基本流程参考了我们的Bootloader by UART的结构。在上电的时候检查外部使能管脚的状态,如果是有效电平的话就进入到Bootloader模式,开启Bootloader程序的运行。在Bootloader程序中进行Flash内容的改写。最后,进入到烧写好的用户代码中运行。
12.jpg


注意事项
在使用寄存器开发中,需要注意几个地方。
1/在地址匹配中断中需要检查DIR的值以判断当前的状态是发送还是接收;
2/主要的任务是下载Code到Flash中,所以,I2C主要做的就是接收一个完整的数据包,这里以主机发送STOP事件为接收完成标志。
3/I2C的接收缓冲开的越大越好,但是由于代码的限制,以最小的数据量为准。
4/STM32L011xx系列的Flash最小单元都是相等的(128Byte),所以在擦写的时候可以直接一个页一个页的写,降低了IAP代码的大小。 总结: 此IAP程序架构可以在整个STM32L011系列产品中直接应用,节省了客户下载应用代码的程序开发时间。占用的代码空间小于2K字节。





在STM32L011上通过I2C接口实现IAP.pdf (208.58 KB, 下载次数: 200)
收藏 3 评论7 发布时间:2016-11-18 16:25

举报

7个回答
samhong 回答时间:2016-12-1 10:33:41
通过I2C接口实现IAP,IAP功能用起来真是方便,谢谢楼主分享。
samhong 回答时间:2016-12-1 10:38:06
以前用51芯片就用IAP功能,用起来真是方便。
5265325 回答时间:2016-12-1 13:24:18
gary_ygl 回答时间:2017-1-10 10:24:02
正好在验证STM32L0XX IAP的可行性,很好的资料,感谢分享!
abcabc001-11100 回答时间:2018-5-13 00:08:45
正好在验证STM32L0XX IAP的可行性,很好的资料,感谢分享!!
wdluo 回答时间:2018-6-23 15:57:04
可以使用USB2XXX USB2IIC适配器来发送数据,写个PC程序就行了
asd7016 回答时间:2018-8-21 19:17:12
正好在做STM32F030的I2C的IAP,借鉴下下

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

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