TA的每日心情 | 开心 2020-7-28 15:35 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于STM32的IAP总结
3 y: S( q6 E$ z3 r( Y' P+ M$ I, `' c最近有项目要用到1AP的功能,于是调试了下STM32的IA,可能因为个人水平的原因吧,也颇; u. x6 A1 \& D2 v& K
费了一般周折! R x. U! ~6 K5 ]7 a+ t+ U
现在返回头来想,其实还是蛮简单的9 G. k8 }- V5 H4 b
整个过程按照如下步骤:, D- l$ ?3 m$ t0 A
1.解锁
! Z6 B4 _: `& v3 f, d2判断是否保护,有 保护的话要先关闭保护
. J" S% Q$ y& B" l0 V! W4 c3.擦除) [+ v, k+ t0 Z- z9 }) |
4.编程1 a. K& `8 g2 b% _" Q6 n
5.复位进入应用程序区
6 a; E3 g" }- `/ Z' k. o! ~关于解镇:看资料的时候说的神乎其神,有个读/编程控制器叫"FPEC4 X& P' ~" [1 Q7 I) `/ G4 M
有几个寄存器,专门负责Flash 的,对这几个寄存器以一-定得顺序访问并设置即可成功解锁! |. }+ H# ^2 w2 ^% z! o
Flash,至于怎么访间,谁先谁后,数据手册上写的头晕,直接来个快刀斩乱麻flash. _UnLock()函
$ ]. V6 Z$ m, w( ^! t! O数封装了这一系列的操作,有一点要注意,如果你是自己操作寄存器的话,如果操作的方法或
" X7 k% Y$ g8 |. a者顺序不对都会造成Flash 的锁定之后的所有操作都会返回一一个错误,直到下次启动后才能2 l7 N0 x. B5 \, B( x" r* ^, c
正常操作
2 h9 u$ A7 |0 g7 Q6 x2 q关于保护,为了保护用户数据不被无意修改或者悲意读取,STM32提供了对芯片FLASH的' E4 p' u* g- {4 M( {. Q
写读等一-系列的保护,加密方式是按照每4页为一个单位也就是说,如果你想加密的话,你至" T% ?2 L- P* Y o* U# u) y/ d
少要加密4页也就至少4K的空间,至于高密的STM32是否就是8K了?这个我没仔细去看!还% d- r4 K) H- o3 C; ?7 u
待以后仔细查看? :
* j2 E# x' K' u关于擦除,擦除也是很简单,但是只能一页一 页的擦除,ST 公司也提供了一个函 数至于这
) C8 E$ A0 k% v( ]8 B个函数后面的输入地址参数,经过试验发现只要这个地址落在这个页里,就是擦除这个页不
5 V1 {, `. D% D2 K0 i5 l知道这样理解对不对,还需要验证???
' y2 N* S3 o# f: pFLASHStatus = FLASH ErasePage(Address );1 a; D0 t, A' }0 s$ T
关于编程,STM32编程-次只能以半字(16位的方式编程,库提供了两个函数
: a) T& N. u7 t; o. A" q* lFLASH_ Status FLASH ProgramWord(u32 Address u32 Data)编程一 个字4 Z* X4 f! B" B4 Q( \, s
FLASH_ Staus FLASH ProgramHatWor(u32 Address, u18 Data)编程半个字. f- U+ b9 c' M
在实际编程虽然你调用的一-个字编程的时候内部操作仍然是按照半字的方式编程
% Q8 r5 J. @" `8 h另外还有个最最重要的-点还要注意大小端的问题,有些你认为可移植性很好的代码.其实8 h* l; `6 q/ E; x7 \ s' Z! R% a
并不一-定,用位移组合成- - 个32位整型然后当做参数来编程由于大小端的模式刚好第一个! f ^- h1 L+ k. N: _/ p. c
字节在最后边了.最后一个字节在前面了。 导致了AN2557下载我的代码可以使用,我自己的下: Z* [+ j# k0 W' u
载我自己的代码竟然不能使用,很是郁闷了- -阵子.读出整个Flash的内容就很容易看出来不8 y, b2 ?. W* y0 `
同了.这个没有想到也着实该死后来用指针强指,不但效率高了,程序也方便了,开一个! :0 w3 [0 \" v. K3 ?% d+ Q& h
为什么有些人说STM32的IAP其实-一个 半成品.不成熟的呢????这个还需以后了解!
% ^. Y! g& o* _. W, E
3 m; {. _/ n0 S- ~6 z3 c( ? X' u+ l* G, I. F4 e: w* q* Z
|
|