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

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

[复制链接]
zero99 发布时间:2017-4-1 15:06
M95xxx EEPROM写保护 配置3 o- l2 l* K' t6 y6 T1 _

& _! a/ u6 m% w% Q5 d# W前言
9 b: ^# A( q3 C. W, r8 K
4 F/ r& }3 o: E- n6 O5 _( t) x  n       以带标识页的M95M01-DF EEPROM为例, 介绍M95xxx系列EEPROM写保护和配置方法。: n% `/ i0 |; ?" K
, F; q+ v! y: ^

( d/ x- L0 z# {/ J. b4 IM95xxx EEPROM写保护介绍# O1 b0 {+ ]+ w, [
引脚框图和信号描述
; _0 k2 T0 p8 C& n2 T 11.jpg
" `4 {1 u9 Z9 U9 p 12.png 3 b: i% B; T; }- N. C3 ]
信号描述:1 G, H9 ^& \5 ?3 X9 Y+ K
    ● 串行数据输出Q:该信号用来从设备移出串行数据,数据在时钟下降沿移出。
$ g, U& d$ J: z+ U3 A    ● 串行数据输入(D):该信号用来输入串行数据到设备,当时钟上升沿时,被写入的指令、地址和数据的值被锁存。
; G& Y( e4 Q6 D& o8 h    ● 串行时钟(C):SPI通信的时钟。! g# W5 |4 o9 L& e+ C5 x
    ● 芯片选择(S ):当输入信号为低时,设备被选择。% N9 Q! \' _! g0 r' n
    ●  保持(HOLD ):HOLD 可以用来暂停串行通信,低电平有效。- N$ s" k9 a: i$ @& }' J' K
    ●  写保护(W ):对内存进行写保护配置引脚,在通过写指令操作内存过程中,要维持该引脚的电平不变。
+ r# Q5 P, q# _; e" c    ●  供电(VCC):供电引脚。
4 O/ N( I; O7 @9 A$ n7 U7 q1 h0 Q    ●  地(VSS):接地引脚。) A% \# @( d; [) i7 F
- y4 I; \* i' P/ w7 X6 B% M9 y5 k) z
M95xxx EEPROM指令
( \  s- J/ L/ Q0 R% `* s3 n: l       所有的命令在发送时需要高位在前,指令集如下表所示:
! n' U: Q% d  h3 \. Y# j7 T 13.jpg ' u, ]8 r/ l$ n/ `- O" F
8 s% |, m8 @5 E1 n1 l" _1 x
WREN:通过WREN指令来使能写使能的WEL位。( X' c2 Y: W# M, x* V, a7 w
" B8 W- }( C  B. r5 ?  z
WRDI:写禁止指令WRDI用来复位WEL位,该为设置位0时禁止写或写状态寄寄存器命令来访问EEPROM。) x1 O- x9 E9 [1 O# V, o8 x- \
) M' H! F6 r9 u/ c$ g% q9 `6 r' J
RDSR:读状态寄存器RDSR用来读状态寄存器,状态寄存器可以在任意时刻被读取,建议在发送一个新指令到EEPROM之前先检查写进度。状态寄存器地输出是连续的1个字节,从0到7位,状态寄存器如下:
! G; _3 H4 A! Y1 ` 14.jpg
6 C$ F/ S3 _$ O- Q      ●  WIP位:写进度指示位,指示内存忙于在写周期中,该位为1则指示在写周期中忙,为0则空闲;
$ j& E+ `2 W. P1 i  H( _/ b      ●  WEL位:该为设置为1时,内部的写使能开启;当设置为0时,内部的写使能禁止,此时任何的写或写状态寄存器指令被阻止访问。WEL位可以被以下几种情况复位:
( o7 y. t" F, g. |7 h              • 上电: M! J' b, b2 n( g" I/ c
              • WRDI指令执行完成
# @6 `. P% i& b) J5 E; e& W; `0 F3 u              • WRSR指令执行完成# k# }4 W$ M, b# |, ]0 i  ^% E
              • WRITE指令执行完成
$ r# J4 E1 T3 Q$ x1 h
      ●  BP1,BP0位:块保护位(BP1,BP0)是非易失的,它们两位决定软件写保护的区域大小。这两位由写状态寄存器命令WRSR来设置。. O3 N0 o1 d: s8 a7 s1 y
         15.jpg

1 P3 k) @, U4 B9 ^. E3 |3 I) t5 A& k( S      ●   SRWD位:状态寄存器写禁止位(SRWD)位和硬件保护信号W 结合起来操作。1 `4 H4 C& E) Y1 x
WRSR:写状态寄存器(WRSR)用来写一个新值到状态寄存器中,在写状态寄存器命令操作之前,需要先执行写使能WREN指令。写状态寄存器用来改变BP1,BP0,SRWD位的值,写状态寄存器不影响b6, b5, b4, b6(WEL), b0(WIP)的值,即b1(WEL)位是由写使能命令WREN来改变其值的,而b0(WIP)是状态位,不能修改。
9 V8 r2 Y  R8 S0 `( {6 L0 p4 o0 i( e4 Q0 s: c1 S
READ:读内存指令,当前如果有写周期在执行中,是无法进行读内存操作的。有效的地址位是A16~A0,地址位A23~A17不用关心。% Y4 ?4 g: A) t3 p7 g' Z! u$ v; T; J
' x$ l- p2 L1 m: S4 J
WRITE:写内存指令,有以下几种情况,写内存指令是不被接受和执行的:! d9 @% M+ R0 Q, j- |
    ●   写使能位WEL没有被置1;3 q4 k8 m3 T5 f8 q( Z
    ●   写周期在执行中;
4 W9 ^5 h, [3 ^9 [5 {! _    ●  在数据传输的最后一个位b0被锁存后,设备还没被取消选择,S 还未置高;& U5 V( y6 Q/ o; |
    ●   要访问的地址页在块保护的区域中。
+ |, H4 Q) v5 k( {, U; t2 _# A8 j$ m" A# o
RDID:读标识页指令,256字节的标识页是一个附加的页,能够被写和永久锁存为只读模式。读标识页的最大数量不能超过页边界,否则会读取到不可预测的数据。例如,从位置90开始读取标识页数据,读取的数量不能超过166,因为页边界时256字节。假如有写周期在执行中,那么读标识页指令不被接受和执行。
/ _! I* |+ g6 U% `" y1 A! d) K
5 c+ S, T& X: V/ L( W) bWRID:写标识页指令,256字节的标识页能够被写和永久锁存为只读模式。  _; H+ T3 @4 [1 v7 D2 I

" m7 W8 i. M7 `# z' ]) pM95M01-DF写保护模式+ ~, k9 }% V8 s4 J" `' d- a3 D+ P, N
# u% n! g% B/ G4 Y( Y5 G0 f2 T( U
M95M01-DF写保护写保护设置范围如下:' c9 r  K4 U, t' y! D8 U
  ● 四分之一内存保护
  U; m+ p" k3 R' Y- f) W/ h' G  ● 一半内存保护
' a0 j: G0 L, p6 l' G  ● 整个内存保护- J- o& s' Q" p# r7 x
  ● 也可以对内存不保护。
! S% G% t! h) oM95M01-DF的保护状态分为软件保护和硬件保护模式。状态寄存器中的写禁止位SRWD,是配合写保护引脚W 一起使用的,它们一起决定的保护模式如下表所示:
# E6 U- V' q& O, T$ g0 s; Z3 D 16.png % H5 E% h: O- Z2 m: ~
      写状态寄存器WRSR对b6,b5,b4,b1,b0位没有影响, b6,b5,b4一直是0。  V0 _7 {1 t: X0 S( o) ^3 o" d+ U8 ]
      状态寄存器写禁止位SRWD在状态寄存器中的初始化状态为0,通过WREN命令设置了WEL位后,不管W 引脚的电平如何,都允许写状态寄存器WRSR。
9 W; F1 a& a. u& `当状态寄存器写禁止位SRWD被置1后,根据W 引脚的电平有以下两种情况:9 c- M' O* g0 K  x9 L+ y$ s4 _
   ● 当W 引脚为高时,通过WREN命令设置了WEL位后,允许写状态寄存器WRSR。1 @* O- Z9 |  y5 v) O$ G" S
   ● 当W 引脚为低时,不管是否通过WREN命令设置了WEL位,都不允许写状态寄存器WRSR。
8 L/ @8 }- Q( P" m0 I( t1 c
      内存中的数据,可以被设置为软保护(SPM),也可以设置为硬保护,其中软保护是通过设置块保护位BP1,BP0。以下两种情况发生时,将会进入硬件保护模式HSM:
" q& h, _3 A; J- f9 e   ●  W 引脚输入低电平后,置SRWD位为1;
8 ~- _/ Y6 S7 v1 y      ●  置SRWD位为1后,W 引脚输入低电平。$ D! G- v3 v/ P! V/ q
      假如W 引脚一直为高,则硬件保护模式HSM不会被激活,此时只有软件保护模式SPM,使用状态寄存器中的BP1,PB0来设置要保护的内存区域。
/ n% E4 c3 h. Y( T4 `

- k3 `6 a' H6 y硬件保护模式6 ]! e1 R+ Y5 B' q7 S
      W 引脚输入低电平且SRWD位为1时,此时配置为硬件保护模式。进入硬件保护模式下不可修改保护位BP0和BP1的值,保护的范围由BP0和BP1的值决定。
& B% {4 g: h5 w+ U
  Y8 z  K. v, \4 K: Y! o软件保护模式2 i1 l  h0 C% O2 O$ i* [2 n  t
W 引脚输入低电平和SRWD位的值具有如下组合时,可配置为软件保护模式。% D- l2 A6 d  X- Q0 M, a
17.jpg
' w8 M- l0 S5 k6 l3 y; v+ Z: m+ w软件保护模式下可以修改保护位BP0和BP1的值来决定保护的内存范围。
* R1 C- r0 V1 [/ e* @, S. j: p, @; |! p: h
上电状态
+ e9 ]% O6 q' C) S! S: C5 I8 b    上电以后,EEPROM将会有如下状态:
5 Y) {; O+ G( N4 Z( Q3 L1 P  ●  待机模式;
3 |$ R1 g, V1 C. m6 x  ●  设备上电后,EEPROM是被取消选择的状态,需要S 下降沿来开启指令传输;; t; L* S+ q. w9 \$ i) {
  ●  不在保持状态下;9 h( ?7 R5 L2 ?' d2 b
  ●  写使能锁存位是复位为0的;
8 f; q6 S, p  ^8 M  ●  写进度位使复位为0的;$ r9 {5 c9 w9 Z5 K- D. Q/ b- q- n- {
     状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的。
" s7 b5 i" o" [& U

6 {2 X) m4 S2 ]9 o交货状态
5 l% @$ k: J& ]! }    整个内存区域和标识页的字节都设置为0xFF。状态寄存器写禁止位SRWD和块锁存位BP1、BP0都初始化为0。
1 |+ l/ e$ b; m. w4 t2 I' \7 \
5 a% w' o4 ^( p8 }! h0 g! BM95xxx EEPROM写保护配置
1 L+ k; a/ N% {- x      由于状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的,所以无论是硬件保护还是软件保护,在配置硬件保护或者软件保护时,还需要考虑状态寄存器中的SRWD,BP1和BP0位的上电状态和出厂状态,以保证写保护软件能正常使用。以下是参考的硬件保护、软件保护、不保护的配置方法。% I, [- v( N& p" Q0 J/ s
5 S7 v! I2 ]0 J; q
硬件保护配置4 d5 X. D# |; x, z; q, u
W 引脚设置为高电平;* h; ^! k! @4 [% c. h2 C
通过WREN指令设置WEL位为1,使能写指令;
0 o9 S* J8 z( F. j: H通过WRSR指令写入BP1,BP0的保护值;* C4 C. g, i" d- ?0 K# T- I0 M
通过WREN指令设置WEL位为1,使能写指令;" H) e9 [! R3 S$ k6 o
通过WRSR指令将SRWD位设置为高电平;
+ y) R. X1 s; IW 引脚设置为低电平。7 \; ^' k$ x% d8 ^0 X; _
) d3 v2 N( j" `. l" ^9 H
软件保护配置5 k+ C0 q$ x  P& T! A& w( t: T( b
W 引脚设置为高电平;, x8 |* |6 Q  F0 O0 m) M
通过WREN指令设置WEL位为1,使能写指令;
; w  c3 z2 Q  i- d1 ^通过WRSR指令写入BP1,BP0的保护值;$ v! o5 j/ J7 }0 g8 D. ~) e
5 }, ^! ]& u4 `- H1 G) v. q- r# q9 {
不保护配置
9 ^. G2 X. G0 B8 E8 fW 引脚设置为高电平;1 I# ^5 j: c$ p$ J* m' G# p4 ?( \1 a
通过WREN指令设置WEL位为1,使能写指令;
. S: x. s& U' x/ g: L+ r' q通过WRSR指令写入BP1,BP0的保护值为不保护的组合值00;
6 P. y) m8 ?! _/ i0 E4 U: `6 R通过WREN指令设置WEL位为1,使能写指令;
! X# i7 b( u$ S9 T4 c8 }通过WRITE指令写入数据到EEPROM;
, z* \7 j4 p# x: O以上WRITE命令执行完成后,如果还想写入数据则需要通过WREN指令设置WEL位为1,使能写指令,然后再通过WRITE指令写入数据。
, I  I1 s" u6 n* m5 }
- w4 @, u( Y" A9 f结论2 K; U  `  K4 T' _9 g( w
通过对M95xxx系列EEPROM进行写保护介绍,能够快速指导用户编写HOST端对EEPROM内存保护的软件设计,帮助客户快速使用M95xxx系列EEPROM写保护功能,并提醒客户使用中应该从上电、出厂、运行状态考虑。

# n- H9 F+ f8 U8 u3 v6 S) J& J$ K) r" X7 s( U$ h/ |- Q
5 G4 B. P; H. t0 u
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 手机版