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

使用STM32F10xxx的USART 实现在应用中编程

[复制链接]
STMCU小助手 发布时间:2022-7-14 18:00
介绍* D0 ]/ o% k# I+ a1 H
对于大部分基于闪存的系统来说,一项重要的需求就是当这些系统安装在终端产品上后,具有更新固件的能力,这个能力称为在应用中编程(In-Application Programming IAP)。这篇应用笔记的目的就是为创建一个IAP应用程序提供一些通用的指导原则。本文中使用STM3210BEVAL/STM3210E-EVAL板验证IAP驱动。6 N: p; H0 Y! K8 b2 K
STM32F10xxx微控制器可以运行用户指定的固件,在微控制器嵌入的闪存上实现IAP。这个功能可以使用任何通讯协议(如CAN、USART、USB)对片上闪存进行重新编程。示例程序使用了USART作为通信通道。
6 x) ~+ f4 u0 G4 c; }8 k' ^& F7 t+ w) W6 @3 V! R; i

! c0 u. E8 A: U: @3 C$ I1 IAP概述% z$ q$ s6 G7 ~7 t% `
中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、STM32F102xx和STM32F103xx微控制器。在意法半导体STM3210B-EVAL评估板上集成的即为中容量产品。
( k7 q! k  y- Y! l8 |" Z9 {大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。在意法半导体的STM3210E-EVAL评估板上集成的即为大容量产品。/ q  C6 |" `& \* v: T0 v: \
1.1 原理IAP驱动程序必须使用用户选用的任意开发工具,通过JTAG或SWD接口烧写到Flash存储器的开始区域,随后这个驱动程序使用USART从PC端的HyperTerminal下载二进制文件到STM32F10xxx的内部闪存中,然后转去执行新下载的程序。
- W) y& P1 w5 ]7 h  j
$ J: Z$ B0 E3 X  @1 m
1.2 IAP驱动程序. r; D9 c3 a% g; |" h
IAP驱动包含有下列的源文件:/ z* J8 J1 T" _5 w" Z. D3 Q7 B" M2 s. A
● main.c:USART初始化和RCC设置,然后从common.c中执行主菜单。
/ D3 z5 ]& ]- v" W# p% D+ }) L3 v● common.c:包含显示功能和主菜单。主菜单给出了一系列的操作选项:加载新的二进制3 \8 b2 X; g' k7 R6 r  t. `7 c* Z
文件、执行载入的二进制文件、对用户想载入自己二进制文件的存储器页解除写保护(如果这些页被写保护的话)。
6 [& Z! j( a$ G● ymodem.c和download.c:它们用来从超级终端中接收数据(使用YMODEM协议(a)),然后把数据加载到STM32F10xxx内部RAM中。当接收数据发生错误时,显示错误信息“Failed to receive the file”,如果接收数据成功,把它编程到内部Flash Memory的适当地址。通过比较内部RAM数据和内部Flash的数据来检测数据完整性。如果有任何数据的差异,显示错误信息“Verification failed”。也显示其他的错误消息如映像文件大于允许的内存空间或用户终止了任务等。9 W; G  f& J  E# ?. F: R
● STM32F10xxx固件库
/ K. n; d2 c- m: s  V用户可以通过去掉文件platform_config.h的相关定义行的注释,来选择在哪种产品(中容量产品或者大容量产品)上运行该软件。0 m/ O2 ?4 o$ V% n, ^. `( A3 i7 P$ q" q
//define USE_STM3210B_EVAL
) [4 h9 X9 `9 R# S* d//define USE_STM3210E_EVAL
+ @( Y7 F& c- J; E$ v! M用户可以通过操作一个连接到引脚的按键,来选择是运行用户程序还是执行IAP以重新编程。7 X- f- O$ X" z
● 复位时未按下按键切换到用户程序。- n% E" u- B  E( b
● 复位时按下按键显示IAP主菜单。
3 y+ ~/ s3 L5 }$ H有关使用STM3210B_EVAL / STM3210E_EVAL板上的按键进入IAP模式的细节,参见表1。8 L9 p( q+ o) h# @
a) Ymodem协议将1024个字节作为一个数据块发送:传送到STM32F10xxx内部RAM的数据块中,
' T% e0 q' \# D2 u9 T) V& [还执行错误检查:比较发送和接收到的数据。若出现NAK应答则说明数据块没有被成功接收。
' _4 o* i* N# \" g关于Ymodem的更多细节请参阅相关文档。& d5 Z# Q2 ?' v( S' s

, b6 B7 B  _5 h4 v$ ~8 a ]_E2X%H]}G0JXQT]L1~CSM7.png / o$ Y: D/ {0 {
9 g; p+ [) k8 n9 Y( }$ P
* g3 F: c3 x+ K5 ^
2 运行IAP驱动程序9 h+ ^* y' J( B) g
IAP驱动程序烧录在:
8 O6 ^- }. n+ x1 I/ r7 o● 中容量产品上闪存存储器的0到7页* Y$ v! K) ^$ f& }
● 大容量产品上闪存存储器的0到3页
- a/ L' n* D; K& D; n6 X" w用户程序占用了其他的存储空间。9 L+ H/ [1 D# b4 Z5 |

9 Q# Y/ v, m# ~! o
2.1 超级终端配置
) N2 {1 [: x8 R; s. r要使用IAP,使用者必须在PC上运行超级终端,超级终端的配置如下:
" l. j" p4 k/ S+ E/ m8 j图2 COM端口属性
/ |4 d" n0 t1 L# S' O3 {" W, G7 G
) r! j: ]9 w7 Y: n6 f JSV)PF`HAT(XV@XJIM1UL9D.png 7 |; ~% n" E! [
, y, o4 [, O2 O$ ^1 l2 n* I: b

6 B- J5 t, F$ F4 g' z* c2 B注意:例子中使用的波特率值为115200。4 Y2 d8 ?5 P* g5 c; ?3 ^; S* a" ~, l
必须注意选择系统时钟的频率,为了能成功地使用USART通讯,产品上的系统时钟频率必须保证能产生准确的115200波特率。* Z" G* {$ z8 U% y$ q% U
2.2 执行IAP驱动程序* r" l8 L* ^' I6 ~/ Y. `
使用本文的示例程序,按下连接到引脚的按键,启动IAP驱动程序运行。
3 k4 W  p3 A) A" Q, {0 w4 l; u在复位的时候按下按键,使用者可以运行IAP驱动程序来重新编程STM32F10xxx的内部闪存存储器。当然,不必须一定要使用按键,也可以在引脚上引入一个适当的电平。详见表1。. Y% q. J7 F) P! d
8 N! ~$ p+ |4 _' x* J
完整版请查看:附件6 Y$ y7 y0 y$ ~8 N) l5 s4 I: N

2 a8 t  a, Z8 L8 J- F* w- b

CD00161640_ZHV4.pdf

下载

865.77 KB, 下载次数: 1

赞 收藏 评论0 发布时间:2022-7-14 18:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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