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

【实战经验】M95xxx EEPROM写保护配置

[复制链接]
zero99 发布时间:2017-4-1 15:06
M95xxx EEPROM写保护 配置( b! i" B, `* u6 }$ [
: D; w1 p: G: A( ~9 `( U; M  E
前言- o0 [$ f' w9 X6 z% H

; R* U8 K, d4 R  _. N6 J9 |       以带标识页的M95M01-DF EEPROM为例, 介绍M95xxx系列EEPROM写保护和配置方法。. h: T' G* Z3 y0 A/ f7 [0 ^

. @6 h8 S$ X2 @+ N2 P# t, Z+ U3 S; i* U! x$ G+ t
M95xxx EEPROM写保护介绍
0 L, n5 \4 z$ g1 K9 e引脚框图和信号描述2 x6 D3 Q4 ~& P9 ?1 \  O
11.jpg
' {+ \$ i6 D. L# A9 x" ^$ ? 12.png / V' }7 _3 s$ ]) z9 B
信号描述:
/ [  G! Q0 g% L% I8 H    ● 串行数据输出Q:该信号用来从设备移出串行数据,数据在时钟下降沿移出。. o) T9 }1 F6 l6 l5 x
    ● 串行数据输入(D):该信号用来输入串行数据到设备,当时钟上升沿时,被写入的指令、地址和数据的值被锁存。0 n% K/ \! I/ _' C4 ]& M* x, w3 ^% e
    ● 串行时钟(C):SPI通信的时钟。
/ Z3 D" m2 ~; J1 K    ● 芯片选择(S ):当输入信号为低时,设备被选择。& _: \8 r& w1 i. P$ i( Q  M
    ●  保持(HOLD ):HOLD 可以用来暂停串行通信,低电平有效。
4 \! H$ \* _9 z2 n0 V    ●  写保护(W ):对内存进行写保护配置引脚,在通过写指令操作内存过程中,要维持该引脚的电平不变。
/ J: Q3 h' K( e! t) R    ●  供电(VCC):供电引脚。
& z1 t1 r  o8 v! V+ \- J    ●  地(VSS):接地引脚。8 m, n: @, T9 _4 B+ L$ h8 g0 |& W
1 B8 n5 c$ o. l$ P- ]3 @1 W: M  Y
M95xxx EEPROM指令
2 B, K9 L1 ]" D. R5 D% u7 a9 S       所有的命令在发送时需要高位在前,指令集如下表所示:9 v, b9 M* H0 _, J5 Y3 k- ~
13.jpg
! Y" L  ^9 s1 w( C1 R- c5 s) u, r: @" J6 V0 b
WREN:通过WREN指令来使能写使能的WEL位。
) y& C9 p, C# P! ?7 \. _9 c4 h% y% V
WRDI:写禁止指令WRDI用来复位WEL位,该为设置位0时禁止写或写状态寄寄存器命令来访问EEPROM。
& Y  {  t" f" E  ^+ L6 {$ R8 N! b, Z1 o9 `. h! }9 N
RDSR:读状态寄存器RDSR用来读状态寄存器,状态寄存器可以在任意时刻被读取,建议在发送一个新指令到EEPROM之前先检查写进度。状态寄存器地输出是连续的1个字节,从0到7位,状态寄存器如下:
; [4 |; g! F% ?/ P- w7 [" W- Z, J 14.jpg
& f) n" S2 m. f8 j+ p* m* ~      ●  WIP位:写进度指示位,指示内存忙于在写周期中,该位为1则指示在写周期中忙,为0则空闲;
/ o9 p& J7 u2 g; ?9 ^0 {( \$ V/ r      ●  WEL位:该为设置为1时,内部的写使能开启;当设置为0时,内部的写使能禁止,此时任何的写或写状态寄存器指令被阻止访问。WEL位可以被以下几种情况复位:
/ s& i9 ~. E. |) C              • 上电
; C' |; A* i2 l9 k              • WRDI指令执行完成
0 ]" u+ a+ s- @' e* N" M; P* [1 i              • WRSR指令执行完成
. y4 C. ^9 y- }+ G! r( T              • WRITE指令执行完成
, [  E+ S7 }4 l) ^! ?4 U
      ●  BP1,BP0位:块保护位(BP1,BP0)是非易失的,它们两位决定软件写保护的区域大小。这两位由写状态寄存器命令WRSR来设置。3 h: Y- Y3 M. d# x8 N  S
         15.jpg
! R+ D& X7 q8 Y! R$ F( Q
      ●   SRWD位:状态寄存器写禁止位(SRWD)位和硬件保护信号W 结合起来操作。8 k, C  C% l1 r% l5 Y2 V
WRSR:写状态寄存器(WRSR)用来写一个新值到状态寄存器中,在写状态寄存器命令操作之前,需要先执行写使能WREN指令。写状态寄存器用来改变BP1,BP0,SRWD位的值,写状态寄存器不影响b6, b5, b4, b6(WEL), b0(WIP)的值,即b1(WEL)位是由写使能命令WREN来改变其值的,而b0(WIP)是状态位,不能修改。
1 B& D( c& r; c6 Q$ b1 E! \4 Y7 k1 N" T* m2 C  W/ }5 Y( R( l
READ:读内存指令,当前如果有写周期在执行中,是无法进行读内存操作的。有效的地址位是A16~A0,地址位A23~A17不用关心。
% S1 O7 L  x/ X/ X) v4 t/ ~( F; @! g$ c* v, b2 e3 S/ Y) k  c9 K, X
WRITE:写内存指令,有以下几种情况,写内存指令是不被接受和执行的:  d: H( z) z) z) d8 e
    ●   写使能位WEL没有被置1;  j! [1 F4 b% }
    ●   写周期在执行中;  D4 \+ I3 f" A$ W9 c' D4 Q/ `
    ●  在数据传输的最后一个位b0被锁存后,设备还没被取消选择,S 还未置高;9 b9 p, h- R5 `- `8 A, I6 O3 Q
    ●   要访问的地址页在块保护的区域中。& Q% F  |/ t" Q2 I0 r8 r
0 w3 f2 G; D" ?" A. m. ~1 S
RDID:读标识页指令,256字节的标识页是一个附加的页,能够被写和永久锁存为只读模式。读标识页的最大数量不能超过页边界,否则会读取到不可预测的数据。例如,从位置90开始读取标识页数据,读取的数量不能超过166,因为页边界时256字节。假如有写周期在执行中,那么读标识页指令不被接受和执行。
. z& w4 S9 Y$ ?) o. a/ P( p$ e; y' J  R8 m5 m! O2 f7 B
WRID:写标识页指令,256字节的标识页能够被写和永久锁存为只读模式。
; _$ P, H0 x" B- ~/ I- X7 \/ b4 m, g
M95M01-DF写保护模式4 V  V" I" F" y- l+ w
, I# X/ ?( `! L0 S; \. _: q7 [
M95M01-DF写保护写保护设置范围如下:. }! |& i1 L! X: D5 @1 F
  ● 四分之一内存保护
. m" }& A. J+ X* {$ B3 b  ● 一半内存保护
9 A# p% P% @- v5 R% y5 p! T8 P6 Y  ● 整个内存保护+ ]5 R! }* b; `) h. e
  ● 也可以对内存不保护。2 ?/ c- O; o" [1 @4 f5 d9 N$ R
M95M01-DF的保护状态分为软件保护和硬件保护模式。状态寄存器中的写禁止位SRWD,是配合写保护引脚W 一起使用的,它们一起决定的保护模式如下表所示:4 m+ K3 v- x& s% q5 k
16.png 6 K: D+ i. d/ |$ b
      写状态寄存器WRSR对b6,b5,b4,b1,b0位没有影响, b6,b5,b4一直是0。
6 H/ q6 N* V" N0 [" O$ l$ k      状态寄存器写禁止位SRWD在状态寄存器中的初始化状态为0,通过WREN命令设置了WEL位后,不管W 引脚的电平如何,都允许写状态寄存器WRSR。
8 l! p2 {$ f- D; z# C+ Y当状态寄存器写禁止位SRWD被置1后,根据W 引脚的电平有以下两种情况:
% U0 R: |3 M+ [2 Q# f   ● 当W 引脚为高时,通过WREN命令设置了WEL位后,允许写状态寄存器WRSR。: s) ?+ e' J$ j. m
   ● 当W 引脚为低时,不管是否通过WREN命令设置了WEL位,都不允许写状态寄存器WRSR。
$ k+ X6 R4 J. o) L3 A1 P
      内存中的数据,可以被设置为软保护(SPM),也可以设置为硬保护,其中软保护是通过设置块保护位BP1,BP0。以下两种情况发生时,将会进入硬件保护模式HSM:- ]+ n: x' ~* F# H* w' m
   ●  W 引脚输入低电平后,置SRWD位为1;
9 C% j$ t  r% w4 X6 {9 K9 E. M      ●  置SRWD位为1后,W 引脚输入低电平。% t/ G1 s' ]6 C6 f" x& C5 ]4 u
      假如W 引脚一直为高,则硬件保护模式HSM不会被激活,此时只有软件保护模式SPM,使用状态寄存器中的BP1,PB0来设置要保护的内存区域。

8 u1 l8 i% H: _' N9 p
$ i' C- z& R3 s/ W) k& Z# i3 f/ n; W9 r硬件保护模式
5 M3 A# h, o& R7 ^! q+ ~$ D3 [  ?2 ^      W 引脚输入低电平且SRWD位为1时,此时配置为硬件保护模式。进入硬件保护模式下不可修改保护位BP0和BP1的值,保护的范围由BP0和BP1的值决定。
- t* H2 |3 I9 b$ r6 p
# S; s9 n& y# z9 q) x软件保护模式4 l7 M% L+ N+ n7 y# M! e+ E
W 引脚输入低电平和SRWD位的值具有如下组合时,可配置为软件保护模式。
2 }* W  v" j% w* a7 {3 k  J 17.jpg
( y, o0 y8 E- v% ^5 b& W% X' a1 L) W软件保护模式下可以修改保护位BP0和BP1的值来决定保护的内存范围。
$ j# V/ R5 u' Y9 ^
9 N, b5 T$ `; F. z上电状态
  S* `7 ^+ l8 i5 w5 L3 }1 ~, ]    上电以后,EEPROM将会有如下状态:: |% v  q) U, j7 s) N
  ●  待机模式;% r% ~0 v# J2 r, }8 a
  ●  设备上电后,EEPROM是被取消选择的状态,需要S 下降沿来开启指令传输;" S  t3 c7 H  c9 [  }& \2 C
  ●  不在保持状态下;
) `8 z- h# a1 a0 O  ●  写使能锁存位是复位为0的;
" c% ]7 u% ?* n& r, b  ●  写进度位使复位为0的;5 b# M; F2 B, _6 L: r/ v, E
     状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的。

! ]& v& D% `  _# X' o7 z1 f1 g, b+ E: m6 `' ]$ I8 N3 H- e
交货状态7 q# z4 @' D0 e: S, `0 ^
    整个内存区域和标识页的字节都设置为0xFF。状态寄存器写禁止位SRWD和块锁存位BP1、BP0都初始化为0。  B# T6 T4 Z5 K3 j# X

- f/ N. t  B/ A9 gM95xxx EEPROM写保护配置
  a2 x& j9 k+ F, a      由于状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的,所以无论是硬件保护还是软件保护,在配置硬件保护或者软件保护时,还需要考虑状态寄存器中的SRWD,BP1和BP0位的上电状态和出厂状态,以保证写保护软件能正常使用。以下是参考的硬件保护、软件保护、不保护的配置方法。
0 L" W) k' I: ?3 A  S2 O$ n1 o$ ?% M. m' O
硬件保护配置
- q+ e: x  }: `2 J; j9 ^W 引脚设置为高电平;+ B' V, T/ s/ b. S, G: Z5 f: b
通过WREN指令设置WEL位为1,使能写指令;6 j* L, Y+ w: R+ _; [+ h
通过WRSR指令写入BP1,BP0的保护值;. [9 G+ P9 H& x  a
通过WREN指令设置WEL位为1,使能写指令;: f0 }0 _& W4 w( i. `
通过WRSR指令将SRWD位设置为高电平;$ m+ `8 f9 A/ A3 L7 v& T3 U: C
W 引脚设置为低电平。$ M* ^/ J) C7 C5 W3 h) r

0 g( K* K5 w1 s  @% [软件保护配置* k- m  Q# m2 ^+ g  f" g
W 引脚设置为高电平;1 s4 K5 s! ?- e/ c) L4 }
通过WREN指令设置WEL位为1,使能写指令;: s( Z' i1 V5 N# ]3 b
通过WRSR指令写入BP1,BP0的保护值;
* h, D: U3 M$ q9 Y6 J* u
3 {" {; C) l  ^不保护配置, F! B# v0 Y( n- o2 B
W 引脚设置为高电平;
/ }2 ^8 H& x& L- d1 K" y0 }通过WREN指令设置WEL位为1,使能写指令;
$ u4 n9 q% ]' {4 r通过WRSR指令写入BP1,BP0的保护值为不保护的组合值00;( f, W9 x0 I" Z! V6 h- f
通过WREN指令设置WEL位为1,使能写指令;/ ]+ f, W% ~' \, J( e" Y8 q
通过WRITE指令写入数据到EEPROM;
2 T; q( K: E  A! f3 y, S1 P以上WRITE命令执行完成后,如果还想写入数据则需要通过WREN指令设置WEL位为1,使能写指令,然后再通过WRITE指令写入数据。
3 {; j( S2 C. k, F
& {) ^, _6 r* Y" q& h% o2 r结论2 }7 R+ [9 X& U( s) j" c8 G5 x4 j# h
通过对M95xxx系列EEPROM进行写保护介绍,能够快速指导用户编写HOST端对EEPROM内存保护的软件设计,帮助客户快速使用M95xxx系列EEPROM写保护功能,并提醒客户使用中应该从上电、出厂、运行状态考虑。
: p% u( A0 T3 i  Y
; u$ N2 j4 V* J& W
+ Q: h6 s3 Z" u+ @. Q& ?0 t
M95xxx EEPROM写保护配置.pdf (570.02 KB, 下载次数: 51)
收藏 1 评论2 发布时间:2017-4-1 15:06

举报

2个回答
feixiang20 回答时间:2017-6-28 12:42:15
资料很好,谢谢分享
yamingchow 回答时间:2018-5-11 10:23:12
谢谢分享

所属标签

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