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

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

[复制链接]
zero99 发布时间:2017-4-1 15:06
M95xxx EEPROM写保护 配置
8 ^  L: P* R1 Q' }; d

" K$ K8 [5 b6 z6 K  M* ]& z前言" i5 D( w" Y- [7 V/ L
1 s& Z5 {3 l* u8 R! {" L1 j
       以带标识页的M95M01-DF EEPROM为例, 介绍M95xxx系列EEPROM写保护和配置方法。, ]- l0 \# k3 m7 {) Y; X) g
0 i  G+ X5 N( I5 u
: L3 [- Y  [3 t  I. `
M95xxx EEPROM写保护介绍
0 b; _3 a8 Z7 B1 {引脚框图和信号描述) j4 |; ~$ N2 n0 I
11.jpg + `% e/ H5 `- {2 C& q& {% N; M
12.png
% w' Y  R2 [5 f4 P2 e+ @% T5 G  M信号描述:
2 A- Y+ I- U+ y" [2 n# L    ● 串行数据输出Q:该信号用来从设备移出串行数据,数据在时钟下降沿移出。
, a, Q) Q. x: B& e+ u! e    ● 串行数据输入(D):该信号用来输入串行数据到设备,当时钟上升沿时,被写入的指令、地址和数据的值被锁存。( m% ~/ x2 l' E0 ]! `$ Z* E
    ● 串行时钟(C):SPI通信的时钟。( i; Y5 g4 I5 b# }2 Q
    ● 芯片选择(S ):当输入信号为低时,设备被选择。
+ X$ i( A8 k( j9 v0 S0 f6 Z    ●  保持(HOLD ):HOLD 可以用来暂停串行通信,低电平有效。
" j5 O. V4 B7 s9 s/ S6 ?8 l" K    ●  写保护(W ):对内存进行写保护配置引脚,在通过写指令操作内存过程中,要维持该引脚的电平不变。
  {7 n9 U- A$ _0 p) K    ●  供电(VCC):供电引脚。1 U  c  c" t* \' S7 E9 ~  Z! f
    ●  地(VSS):接地引脚。" M" w6 g1 z0 I$ x# y

: U1 l' ~) {3 l# H' e5 W$ cM95xxx EEPROM指令
, N2 x5 `; V2 S3 H       所有的命令在发送时需要高位在前,指令集如下表所示:
0 o: E. @- v0 D. W0 U" Z9 N 13.jpg . i4 e( K5 ?/ H8 W+ H  j6 r. @
' I5 P4 C6 c3 W" M" L% `
WREN:通过WREN指令来使能写使能的WEL位。
2 v2 ?* e/ Q/ L( \
3 H1 O% T8 j% a4 O" |; u. F* S4 bWRDI:写禁止指令WRDI用来复位WEL位,该为设置位0时禁止写或写状态寄寄存器命令来访问EEPROM。
5 b, z' A3 t5 R- M$ [* T; ?9 d3 X
RDSR:读状态寄存器RDSR用来读状态寄存器,状态寄存器可以在任意时刻被读取,建议在发送一个新指令到EEPROM之前先检查写进度。状态寄存器地输出是连续的1个字节,从0到7位,状态寄存器如下:* E' l/ T( Q2 }  l5 C. J3 B
14.jpg
4 o) k2 O' m; i- y3 M4 _      ●  WIP位:写进度指示位,指示内存忙于在写周期中,该位为1则指示在写周期中忙,为0则空闲;: y- p. B! e+ e
      ●  WEL位:该为设置为1时,内部的写使能开启;当设置为0时,内部的写使能禁止,此时任何的写或写状态寄存器指令被阻止访问。WEL位可以被以下几种情况复位:9 x% b7 h' M" E0 T6 `
              • 上电
9 {' }+ j0 J5 H, {6 D/ ]              • WRDI指令执行完成1 z2 O4 y; y" R' r
              • WRSR指令执行完成' {( j: k" ^0 n, ~* N8 r
              • WRITE指令执行完成
" C4 ?2 @, U# V+ f9 i3 u
      ●  BP1,BP0位:块保护位(BP1,BP0)是非易失的,它们两位决定软件写保护的区域大小。这两位由写状态寄存器命令WRSR来设置。$ f  t5 X! Z) I
      ●    15.jpg

) d! s: S. G# g) F; Y. E: J1 i$ h      ●   SRWD位:状态寄存器写禁止位(SRWD)位和硬件保护信号W 结合起来操作。8 }4 @# s7 ~' I! `
WRSR:写状态寄存器(WRSR)用来写一个新值到状态寄存器中,在写状态寄存器命令操作之前,需要先执行写使能WREN指令。写状态寄存器用来改变BP1,BP0,SRWD位的值,写状态寄存器不影响b6, b5, b4, b6(WEL), b0(WIP)的值,即b1(WEL)位是由写使能命令WREN来改变其值的,而b0(WIP)是状态位,不能修改。
0 x3 q0 X! B, m: \* ]4 }5 y$ V" s3 s+ B4 k: t0 r
READ:读内存指令,当前如果有写周期在执行中,是无法进行读内存操作的。有效的地址位是A16~A0,地址位A23~A17不用关心。: S) y3 |5 i) Z- v+ p( `0 r# w
3 E1 w6 U" y" E) X* T: R: i8 [( f
WRITE:写内存指令,有以下几种情况,写内存指令是不被接受和执行的:
9 F( q5 T" N9 C" S" j    ●   写使能位WEL没有被置1;
6 S8 X: U# W1 n2 E' C7 ?' P" R0 N    ●   写周期在执行中;
, M. O6 C% d3 r& M    ●  在数据传输的最后一个位b0被锁存后,设备还没被取消选择,S 还未置高;, T6 v- @$ b/ y# K9 t
    ●   要访问的地址页在块保护的区域中。% U% E6 N4 J( V3 W

" q# t: S; c0 f- m  D: s. [RDID:读标识页指令,256字节的标识页是一个附加的页,能够被写和永久锁存为只读模式。读标识页的最大数量不能超过页边界,否则会读取到不可预测的数据。例如,从位置90开始读取标识页数据,读取的数量不能超过166,因为页边界时256字节。假如有写周期在执行中,那么读标识页指令不被接受和执行。+ b% Y. j  H+ c4 g6 N

$ [6 V# k: Z9 e3 e* L! O, `  pWRID:写标识页指令,256字节的标识页能够被写和永久锁存为只读模式。# g! O+ g% E; Z* M
5 d& q% G. g) f1 {
M95M01-DF写保护模式- c8 _( Q- c& |2 Y
8 P" {: T3 n2 v$ r: z. `" V4 }
M95M01-DF写保护写保护设置范围如下:
5 X& `7 |7 u/ f- t1 [  `3 U  j4 c0 J4 L8 b  ● 四分之一内存保护
5 _* z& B. }$ h' l  ● 一半内存保护
1 B" R" ~! o1 o9 _. `9 Z  ● 整个内存保护8 R" W9 D: p' U+ k1 g/ Y
  ● 也可以对内存不保护。/ V4 W3 d. u% `9 ~: j* g
M95M01-DF的保护状态分为软件保护和硬件保护模式。状态寄存器中的写禁止位SRWD,是配合写保护引脚W 一起使用的,它们一起决定的保护模式如下表所示:) }; E0 k4 h( L: f
16.png
9 U7 C" p, E8 s5 a; O' _9 q      写状态寄存器WRSR对b6,b5,b4,b1,b0位没有影响, b6,b5,b4一直是0。& o2 g& A" v0 f1 T0 G
      状态寄存器写禁止位SRWD在状态寄存器中的初始化状态为0,通过WREN命令设置了WEL位后,不管W 引脚的电平如何,都允许写状态寄存器WRSR。
0 P: p3 J1 [$ G. o$ r3 h+ T当状态寄存器写禁止位SRWD被置1后,根据W 引脚的电平有以下两种情况:* C* A) r3 ]/ W3 ], E. N* o$ D. ~# U( ?
   ● 当W 引脚为高时,通过WREN命令设置了WEL位后,允许写状态寄存器WRSR。- d  }0 Z! ]4 u0 L2 M3 b
   ● 当W 引脚为低时,不管是否通过WREN命令设置了WEL位,都不允许写状态寄存器WRSR。

( J, L& |$ q% v8 O4 V      内存中的数据,可以被设置为软保护(SPM),也可以设置为硬保护,其中软保护是通过设置块保护位BP1,BP0。以下两种情况发生时,将会进入硬件保护模式HSM:6 K1 T- i. n( I3 A# J
   ●  W 引脚输入低电平后,置SRWD位为1;
# J% x% ^" @, l& n9 [; H+ f# A      ●  置SRWD位为1后,W 引脚输入低电平。) Y8 X* u1 \) g
      假如W 引脚一直为高,则硬件保护模式HSM不会被激活,此时只有软件保护模式SPM,使用状态寄存器中的BP1,PB0来设置要保护的内存区域。
6 j  C; K; h0 a+ q  Q+ u1 O" _

  A9 J% l1 ]; ?, |1 R+ ^硬件保护模式$ r' p1 ?4 u, N5 A4 @1 Z2 z
      W 引脚输入低电平且SRWD位为1时,此时配置为硬件保护模式。进入硬件保护模式下不可修改保护位BP0和BP1的值,保护的范围由BP0和BP1的值决定。; J5 Y- _# i* z
$ F6 u) b& O; K6 D; N% d# t
软件保护模式
  ^( ~0 I3 Q5 }0 B% o4 PW 引脚输入低电平和SRWD位的值具有如下组合时,可配置为软件保护模式。% P8 X0 s. M( c: ^& ]* T" ?( B
17.jpg - q4 v/ G( v7 C8 \7 F
软件保护模式下可以修改保护位BP0和BP1的值来决定保护的内存范围。
) Z4 I( {7 ~: A. I/ [4 R
; g" R, x) w) \9 O& r1 n上电状态
; D( Q/ Z& ]# X    上电以后,EEPROM将会有如下状态:1 s" f  Q( b+ ^
  ●  待机模式;0 H. k' x! x- M& R0 z# ~7 g% t  m
  ●  设备上电后,EEPROM是被取消选择的状态,需要S 下降沿来开启指令传输;" ]+ M( o' ]# Y% h7 l+ W
  ●  不在保持状态下;
, J  S) j0 {0 P' I  ●  写使能锁存位是复位为0的;3 m7 r* N6 U' c2 C/ P; D) J1 D
  ●  写进度位使复位为0的;
- w$ Q. F$ t) U6 Y% e- k2 {     状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的。

- _+ y, ~& |& O! _2 A& A
) |- O* b. l0 L8 V' \交货状态
6 ^& v4 g0 P( X) w3 t9 N* U( a    整个内存区域和标识页的字节都设置为0xFF。状态寄存器写禁止位SRWD和块锁存位BP1、BP0都初始化为0。; E. C& O* Q) A! ^$ G* s$ q

5 r2 L3 L3 K% t2 f8 M# ^8 h2 lM95xxx EEPROM写保护配置
8 Y6 i/ q$ X( u& G3 X; v      由于状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的,所以无论是硬件保护还是软件保护,在配置硬件保护或者软件保护时,还需要考虑状态寄存器中的SRWD,BP1和BP0位的上电状态和出厂状态,以保证写保护软件能正常使用。以下是参考的硬件保护、软件保护、不保护的配置方法。( P5 \! d9 |+ {( {( L. w# A
, _' z/ l9 F( f0 [9 E
硬件保护配置) u, W, \! H" D$ i- z
W 引脚设置为高电平;% f# ^$ {: o+ c' m# k% E4 ]
通过WREN指令设置WEL位为1,使能写指令;2 u$ d: v2 ?5 J1 @; n8 {8 @$ c1 O
通过WRSR指令写入BP1,BP0的保护值;
/ I) `+ g1 X+ |  q通过WREN指令设置WEL位为1,使能写指令;
$ `; u& m0 X9 `7 {+ L+ t- ]; a: k通过WRSR指令将SRWD位设置为高电平;
. N! ?; N/ `' s/ d! E: Z4 W# DW 引脚设置为低电平。
" H6 K+ G: A/ ?; p
0 u  l2 A! ^, j  {7 J软件保护配置
6 V6 t, ~. v9 q, l* ]W 引脚设置为高电平;/ \# p. ?, f1 h" Y/ _* g1 X
通过WREN指令设置WEL位为1,使能写指令;4 C% X1 z& R% Q" c5 h
通过WRSR指令写入BP1,BP0的保护值;
1 R$ P/ @9 C  Y' ?7 v: V' o# g6 j7 Z/ V# H/ b5 e
不保护配置
! r, U# `$ n( y/ s6 p  JW 引脚设置为高电平;0 ?; @4 Q3 H7 C" M2 w- [
通过WREN指令设置WEL位为1,使能写指令;
+ I, `. \" o$ j1 @通过WRSR指令写入BP1,BP0的保护值为不保护的组合值00;
4 u: R. z6 D* E$ I# C* @+ y. d# A通过WREN指令设置WEL位为1,使能写指令;0 T, o0 ]& M, T( N; c
通过WRITE指令写入数据到EEPROM;3 c  n$ b' U4 m! k8 R) c
以上WRITE命令执行完成后,如果还想写入数据则需要通过WREN指令设置WEL位为1,使能写指令,然后再通过WRITE指令写入数据。$ v3 G  @0 w* w( P$ }
; K  f: Q# _( \; N: f- T1 L3 |  |- w
结论
2 i9 {) a. E* }( }$ y2 w通过对M95xxx系列EEPROM进行写保护介绍,能够快速指导用户编写HOST端对EEPROM内存保护的软件设计,帮助客户快速使用M95xxx系列EEPROM写保护功能,并提醒客户使用中应该从上电、出厂、运行状态考虑。
8 E8 R6 x7 R& O8 E- K* I% M/ w  v

8 K# f; c, a5 ^3 Y; T3 X) z

6 q+ T3 T: E, W: F8 J& a M95xxx EEPROM写保护配置.pdf (570.02 KB, 下载次数: 54)
赞 收藏 1 评论2 发布时间:2017-4-1 15:06

举报

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

所属标签

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