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

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

[复制链接]
zero99 发布时间:2017-4-1 15:06
M95xxx EEPROM写保护 配置
6 V1 K. m9 w2 _8 ?* @$ R, b; G

4 }) v# S6 o. P) p) \+ q4 f! s& m前言8 L4 i- }+ J4 T6 O" K8 Z

+ d3 |' C' S: P: U" s       以带标识页的M95M01-DF EEPROM为例, 介绍M95xxx系列EEPROM写保护和配置方法。
/ T6 h7 [; ^; u6 K
% b# ^' k; L+ B1 ^4 Y- V3 M9 {, m% h2 V9 J
M95xxx EEPROM写保护介绍
: I" H/ g# P" x" T. A9 Z引脚框图和信号描述
6 p7 y8 h3 ^, x9 C: i 11.jpg
- \3 Y* k2 H4 r, {3 X4 U! ?5 S% w 12.png
3 |1 @- H+ Z! i" `. e# z# v信号描述:; E6 t9 @, d. c( M+ l& F
    ● 串行数据输出Q:该信号用来从设备移出串行数据,数据在时钟下降沿移出。
/ k, X+ y7 t1 S# J    ● 串行数据输入(D):该信号用来输入串行数据到设备,当时钟上升沿时,被写入的指令、地址和数据的值被锁存。. r8 l9 _/ @5 A6 ~% c
    ● 串行时钟(C):SPI通信的时钟。
) f1 V- ]* p( ~# E0 r    ● 芯片选择(S ):当输入信号为低时,设备被选择。
+ H: D/ M9 J! [    ●  保持(HOLD ):HOLD 可以用来暂停串行通信,低电平有效。0 ^2 Q: d8 k( j4 d
    ●  写保护(W ):对内存进行写保护配置引脚,在通过写指令操作内存过程中,要维持该引脚的电平不变。
$ M7 m  \, S2 y$ |# \- l* @    ●  供电(VCC):供电引脚。
  N- v& x+ Q) q7 i7 b. w    ●  地(VSS):接地引脚。
/ {3 F. Q; h, ^2 p; L7 V6 u
' K1 g2 }' a# R( N* aM95xxx EEPROM指令
9 `( N& Y: i2 `& R       所有的命令在发送时需要高位在前,指令集如下表所示:3 E+ n) G2 o$ m: J/ b; Y( J* V. X
13.jpg
. `7 L9 c' G# O" l$ ?) Q% w5 D
+ F) }6 x: b$ _+ |: kWREN:通过WREN指令来使能写使能的WEL位。
4 M- q2 v9 d& q0 E! h% x- {0 d' K0 C) |* V  m' W
WRDI:写禁止指令WRDI用来复位WEL位,该为设置位0时禁止写或写状态寄寄存器命令来访问EEPROM。
6 D. B* ~( L, }
4 F4 p: d" r8 |& S/ a& v& M% r4 r9 k: ~; rRDSR:读状态寄存器RDSR用来读状态寄存器,状态寄存器可以在任意时刻被读取,建议在发送一个新指令到EEPROM之前先检查写进度。状态寄存器地输出是连续的1个字节,从0到7位,状态寄存器如下:) z; V7 W) N" x/ Z2 V
14.jpg
" j: S% w& Z! t5 M9 g3 ]# k      ●  WIP位:写进度指示位,指示内存忙于在写周期中,该位为1则指示在写周期中忙,为0则空闲;
, f; f& |) E' e& @* o      ●  WEL位:该为设置为1时,内部的写使能开启;当设置为0时,内部的写使能禁止,此时任何的写或写状态寄存器指令被阻止访问。WEL位可以被以下几种情况复位:2 ^! H+ O9 _7 V5 j. o6 ^
              • 上电
% O; g$ F0 z" B/ O$ M7 p% ^              • WRDI指令执行完成
% C" C# F/ o  E1 U! S1 |" d1 s. E              • WRSR指令执行完成
( q6 T. k1 d4 H2 N, F7 I+ S              • WRITE指令执行完成
( ~# b( ^2 _  }; N+ X3 Y) b
      ●  BP1,BP0位:块保护位(BP1,BP0)是非易失的,它们两位决定软件写保护的区域大小。这两位由写状态寄存器命令WRSR来设置。2 R% X  {3 E3 m' m& Q
         15.jpg
$ l+ ]$ l6 g+ h0 K/ S7 P- T% q
      ●   SRWD位:状态寄存器写禁止位(SRWD)位和硬件保护信号W 结合起来操作。3 g- n. A1 R8 L  r1 Y7 R
WRSR:写状态寄存器(WRSR)用来写一个新值到状态寄存器中,在写状态寄存器命令操作之前,需要先执行写使能WREN指令。写状态寄存器用来改变BP1,BP0,SRWD位的值,写状态寄存器不影响b6, b5, b4, b6(WEL), b0(WIP)的值,即b1(WEL)位是由写使能命令WREN来改变其值的,而b0(WIP)是状态位,不能修改。' o5 U! ]/ {. m# f* F& O
4 l. S. R8 i- K/ Q& {
READ:读内存指令,当前如果有写周期在执行中,是无法进行读内存操作的。有效的地址位是A16~A0,地址位A23~A17不用关心。2 h$ |, i7 U6 F% Y) H7 [$ ]

: b9 x- r( e: z3 O5 \% D2 _WRITE:写内存指令,有以下几种情况,写内存指令是不被接受和执行的:" F  i2 C1 |, @
    ●   写使能位WEL没有被置1;+ _$ m# T6 Y- f$ M- B+ G8 B
    ●   写周期在执行中;
' T* i. h+ @, B; E, U' v3 o    ●  在数据传输的最后一个位b0被锁存后,设备还没被取消选择,S 还未置高;
6 ~) I0 |* i, @, L    ●   要访问的地址页在块保护的区域中。, |6 ^6 O! t3 U
1 T2 T; E: Q. r! u# f, d
RDID:读标识页指令,256字节的标识页是一个附加的页,能够被写和永久锁存为只读模式。读标识页的最大数量不能超过页边界,否则会读取到不可预测的数据。例如,从位置90开始读取标识页数据,读取的数量不能超过166,因为页边界时256字节。假如有写周期在执行中,那么读标识页指令不被接受和执行。/ b) c9 \$ g- A4 j5 v5 H' x2 q2 a
* @* t" O+ z* W7 l+ Z) L5 z
WRID:写标识页指令,256字节的标识页能够被写和永久锁存为只读模式。
6 i) ]# J  n/ d$ M1 F" a. W
  b7 Q$ g4 v$ `' W# LM95M01-DF写保护模式
# h. V- f  ]1 e. b# G" L' o% |" C# U; \5 E# V
M95M01-DF写保护写保护设置范围如下:' P3 O9 v6 x2 s! I4 f6 E' s$ I
  ● 四分之一内存保护
7 L( |4 Y- t8 u1 O  ● 一半内存保护
  t% M: f, h! L8 {/ u5 I* x, r: X  ● 整个内存保护: j- g& s2 ]8 X+ S2 t+ i# \
  ● 也可以对内存不保护。
+ i. E6 d; ~' h5 g. ^: [M95M01-DF的保护状态分为软件保护和硬件保护模式。状态寄存器中的写禁止位SRWD,是配合写保护引脚W 一起使用的,它们一起决定的保护模式如下表所示:
& ^+ l( [6 {$ Q4 Z4 f; `; z: M 16.png
! |7 [3 g3 H6 E2 O      写状态寄存器WRSR对b6,b5,b4,b1,b0位没有影响, b6,b5,b4一直是0。
" B* r7 V( p: ~7 R7 A      状态寄存器写禁止位SRWD在状态寄存器中的初始化状态为0,通过WREN命令设置了WEL位后,不管W 引脚的电平如何,都允许写状态寄存器WRSR。8 d( X1 r; p  b; O. X. ]+ @, ~
当状态寄存器写禁止位SRWD被置1后,根据W 引脚的电平有以下两种情况:- g6 m5 P0 T  s. w( ?+ {* n2 s
   ● 当W 引脚为高时,通过WREN命令设置了WEL位后,允许写状态寄存器WRSR。
/ ^9 O9 v7 _% F- S& u& W1 i0 W7 U9 d   ● 当W 引脚为低时,不管是否通过WREN命令设置了WEL位,都不允许写状态寄存器WRSR。
5 c, B/ u. z) T
      内存中的数据,可以被设置为软保护(SPM),也可以设置为硬保护,其中软保护是通过设置块保护位BP1,BP0。以下两种情况发生时,将会进入硬件保护模式HSM:- k* }' v9 x5 h( M
   ●  W 引脚输入低电平后,置SRWD位为1;8 L7 t- _+ W* m( p1 d
      ●  置SRWD位为1后,W 引脚输入低电平。, W. U8 t5 v0 x5 y
      假如W 引脚一直为高,则硬件保护模式HSM不会被激活,此时只有软件保护模式SPM,使用状态寄存器中的BP1,PB0来设置要保护的内存区域。

1 J! }- ^4 i( i7 t  W* N# f3 Y  N/ z; ~) D0 |
硬件保护模式
5 l- \- g! r2 l8 w9 k8 a0 |! c      W 引脚输入低电平且SRWD位为1时,此时配置为硬件保护模式。进入硬件保护模式下不可修改保护位BP0和BP1的值,保护的范围由BP0和BP1的值决定。0 K4 W$ J  E# l( p2 F$ C

' E+ i; C; q) S, l2 ^3 Q9 d软件保护模式
& n2 r4 }1 W& S+ I; W+ e8 T8 \W 引脚输入低电平和SRWD位的值具有如下组合时,可配置为软件保护模式。2 |, \( J% s4 \3 D
17.jpg
2 D+ a9 R+ X$ ~% v6 g4 o软件保护模式下可以修改保护位BP0和BP1的值来决定保护的内存范围。2 w5 O) z; m& b+ J

& E3 @& V& _5 V9 Y. L. \! ?2 E. {" D上电状态
3 w( E0 F7 E2 n  m7 S    上电以后,EEPROM将会有如下状态:
1 q+ ^' i! j; D9 y2 \8 E2 h  ●  待机模式;" @% \  q" n, y8 M/ {8 L/ g: S
  ●  设备上电后,EEPROM是被取消选择的状态,需要S 下降沿来开启指令传输;
5 C/ j1 h1 l3 Y! b; S1 b: Z6 E3 G- l! o5 q  ●  不在保持状态下;
& R2 g* m/ {/ V% u1 N1 R. X* r  ●  写使能锁存位是复位为0的;
+ H5 T7 c7 ^* l; p% o" z% p  ●  写进度位使复位为0的;
3 K; z; B  e/ L: A& [; m- }     状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的。
8 b$ J5 `( H6 l8 V

; m& ~4 n8 |$ P; }2 B交货状态
( t6 W! f' L) K1 ]3 u+ p9 S    整个内存区域和标识页的字节都设置为0xFF。状态寄存器写禁止位SRWD和块锁存位BP1、BP0都初始化为0。
; u2 y: J, v: s6 n6 P% ]1 y  {1 l( d* V; H+ g  I
M95xxx EEPROM写保护配置
" b% A6 d- s, u  }% d      由于状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的,所以无论是硬件保护还是软件保护,在配置硬件保护或者软件保护时,还需要考虑状态寄存器中的SRWD,BP1和BP0位的上电状态和出厂状态,以保证写保护软件能正常使用。以下是参考的硬件保护、软件保护、不保护的配置方法。) B5 y( U, v! ~2 L9 C

0 c1 t; d7 S* X4 ]4 k硬件保护配置) R1 o( N, h; f2 C' r$ q
W 引脚设置为高电平;
/ \% {$ P& K/ T* i# d0 D, i, x1 \通过WREN指令设置WEL位为1,使能写指令;
/ n4 _* Q+ Q; |6 `5 V通过WRSR指令写入BP1,BP0的保护值;& v1 n3 R/ M8 v4 Z9 u1 b
通过WREN指令设置WEL位为1,使能写指令;
% @0 E/ j; w4 E- n5 c; h" y通过WRSR指令将SRWD位设置为高电平;. ?2 x, s. L) f; g3 Q% {
W 引脚设置为低电平。- T5 l' X/ s0 f; ^: X
# R% r6 B# ?! X, b+ H- `: ^# A
软件保护配置
; {9 p$ Z* B8 A! j8 N  o, qW 引脚设置为高电平;
4 g! D" u& M3 l) @/ f3 t( f通过WREN指令设置WEL位为1,使能写指令;
+ l' V7 I3 f$ H; f" ^9 N% x通过WRSR指令写入BP1,BP0的保护值;* O' Q" a  D  S8 Q0 n
! ?/ S, j7 Y3 R) M! L- n
不保护配置
! a8 l3 K' V! fW 引脚设置为高电平;8 f( L; w0 l" M  Y- M
通过WREN指令设置WEL位为1,使能写指令;
5 z9 M8 X) i0 s9 i7 ?9 r通过WRSR指令写入BP1,BP0的保护值为不保护的组合值00;# ^" V7 ?' e  {1 O2 ^" s! O
通过WREN指令设置WEL位为1,使能写指令;. [) {3 J2 D1 j' ]- x) n
通过WRITE指令写入数据到EEPROM;
4 F, S8 p9 p3 B( y  k6 P2 G# M以上WRITE命令执行完成后,如果还想写入数据则需要通过WREN指令设置WEL位为1,使能写指令,然后再通过WRITE指令写入数据。5 o1 U9 A( p8 |2 X' Z, b9 m

, V+ A3 t* S9 a2 B1 q+ b: g结论  d) V9 a6 h+ F, U4 \
通过对M95xxx系列EEPROM进行写保护介绍,能够快速指导用户编写HOST端对EEPROM内存保护的软件设计,帮助客户快速使用M95xxx系列EEPROM写保护功能,并提醒客户使用中应该从上电、出厂、运行状态考虑。
# z% K& ]( ?* K$ g7 v- y

) ]: I4 ~1 T$ ?& m* F

2 o$ v: V! C! Q M95xxx EEPROM写保护配置.pdf (570.02 KB, 下载次数: 45)
收藏 1 评论2 发布时间:2017-4-1 15:06

举报

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

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版