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

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

[复制链接]
zero99 发布时间:2016-11-18 16:25
在STM32L011上通过I2C接口实现IAP& j4 m& }1 ?# u9 _4 V, X/ ]

% ?! {4 t1 X  n3 y' ?+ q) m. M, j前言
& ?* T5 i( Y4 J客户计划使用STM32L011xx开发一款光模块产品,需要MCU支持I2C接口下载代码。但STM32L011xx内部Bootloader没有支持I2C接口,所以需要我们使用IAP的方式来帮助客户实现该功能。6 t9 S3 s/ ~. j/ k2 S; p
* G' e& {/ z) ?) N: N
$ s' s$ Z/ m% v% c: f
问题分析
& Q+ m# Q- B! v& @) U1 X
; I5 A! E# X& V' p2 S0 fIAP代码大小
, R6 r9 u( `8 fSTM32L011xx只有8K-16K 字节的Flash容量,所以这个IAP的代码不能过大,否则就会将用户的应用程序空间压缩的过小。经过和客户沟通,最大IAP代码可以占用的空间为2K字节。" @+ G6 _4 n8 t# C' E- P8 B
& {5 r( A6 U  `
3 P% e4 c  P1 [' ]+ F+ h
开发模式选用
9 V# Y0 z$ j8 f因为代码空间的限制(最多2K字节),所以我们只能使用直接写寄存器的开发方式。
1 i9 o; k5 o3 A& d. Z$ g. P, r3 i1 M" h' o& o/ i4 C+ {# D
( R$ i0 j& @7 b" H
硬件结构( \8 k3 x$ M7 @8 _/ U9 V$ [
11.jpg   }. ]4 q# V( U

$ r% \$ O% w' F7 }
' G7 g5 \% ?4 b1 r代码结构9 `% `; j6 F4 m( @1 B4 Y0 d
基本流程参考了我们的Bootloader by UART的结构。在上电的时候检查外部使能管脚的状态,如果是有效电平的话就进入到Bootloader模式,开启Bootloader程序的运行。在Bootloader程序中进行Flash内容的改写。最后,进入到烧写好的用户代码中运行。
6 o. Y  S/ Y3 h! n
12.jpg ' L) O+ T/ V+ j
+ D( x  C3 d2 W( a! P9 m1 U- Y
! |" t; l* z% V) f- E2 z& ?
注意事项
! V0 D, K2 E, A! M在使用寄存器开发中,需要注意几个地方。9 `, j+ i" W  |1 @
1/在地址匹配中断中需要检查DIR的值以判断当前的状态是发送还是接收;
7 r# H& {/ t6 l% R, d: ~' N, z2/主要的任务是下载Code到Flash中,所以,I2C主要做的就是接收一个完整的数据包,这里以主机发送STOP事件为接收完成标志。
8 w  B/ f. O0 m9 S. x2 p3/I2C的接收缓冲开的越大越好,但是由于代码的限制,以最小的数据量为准。
; V( E" I. T# y& m- o+ G4/STM32L011xx系列的Flash最小单元都是相等的(128Byte),所以在擦写的时候可以直接一个页一个页的写,降低了IAP代码的大小。 总结: 此IAP程序架构可以在整个STM32L011系列产品中直接应用,节省了客户下载应用代码的程序开发时间。占用的代码空间小于2K字节。
/ ~" o. p3 f+ s- ^
" h7 b5 Z5 n+ U6 F% z2 b6 ]7 i* D$ u
" C8 o5 m7 P+ \' F
" O6 \; D6 K( D' j$ @' y* B' e

* D5 J$ [) @4 Q9 P3 x5 w5 n8 A 在STM32L011上通过I2C接口实现IAP.pdf (208.58 KB, 下载次数: 285)
赞 收藏 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,借鉴下下

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版