
M95xxx EEPROM写保护 配置3 o- l2 l* K' t6 y6 T1 _ 前言 以带标识页的M95M01-DF EEPROM为例, 介绍M95xxx系列EEPROM写保护和配置方法。: n% `/ i0 |; ?" K , F; q+ v! y: ^ M95xxx EEPROM写保护介绍# O1 b0 {+ ]+ w, [ 引脚框图和信号描述 ![]() ![]() 信号描述:1 G, H9 ^& \5 ?3 X9 Y+ K ● 串行数据输出Q:该信号用来从设备移出串行数据,数据在时钟下降沿移出。 ● 串行数据输入(D):该信号用来输入串行数据到设备,当时钟上升沿时,被写入的指令、地址和数据的值被锁存。 ● 串行时钟(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 ):对内存进行写保护配置引脚,在通过写指令操作内存过程中,要维持该引脚的电平不变。 ● 供电(VCC):供电引脚。 ● 地(VSS):接地引脚。) A% \# @( d; [) i7 F - y4 I; \* i' P/ w7 X6 B% M9 y5 k) z M95xxx EEPROM指令 所有的命令在发送时需要高位在前,指令集如下表所示: ![]() 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位,状态寄存器如下: ![]() ● WIP位:写进度指示位,指示内存忙于在写周期中,该位为1则指示在写周期中忙,为0则空闲; ● WEL位:该为设置为1时,内部的写使能开启;当设置为0时,内部的写使能禁止,此时任何的写或写状态寄存器指令被阻止访问。WEL位可以被以下几种情况复位: • 上电: M! J' b, b2 n( g" I/ c • WRDI指令执行完成 • 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 ● ![]() ● 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)是状态位,不能修改。 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 ● 写周期在执行中; ● 在数据传输的最后一个位b0被锁存后,设备还没被取消选择,S 还未置高;& U5 V( y6 Q/ o; | ● 要访问的地址页在块保护的区域中。 2 _# A8 j$ m" A# o RDID:读标识页指令,256字节的标识页是一个附加的页,能够被写和永久锁存为只读模式。读标识页的最大数量不能超过页边界,否则会读取到不可预测的数据。例如,从位置90开始读取标识页数据,读取的数量不能超过166,因为页边界时256字节。假如有写周期在执行中,那么读标识页指令不被接受和执行。 WRID:写标识页指令,256字节的标识页能够被写和永久锁存为只读模式。 _; H+ T3 @4 [1 v7 D2 I M95M01-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 ● 四分之一内存保护 ● 一半内存保护 ● 整个内存保护- J- o& s' Q" p# r7 x ● 也可以对内存不保护。 M95M01-DF的保护状态分为软件保护和硬件保护模式。状态寄存器中的写禁止位SRWD,是配合写保护引脚W 一起使用的,它们一起决定的保护模式如下表所示: ![]() 写状态寄存器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。 当状态寄存器写禁止位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: ● W 引脚输入低电平后,置SRWD位为1; ● 置SRWD位为1后,W 引脚输入低电平。$ D! G- v3 v/ P! V/ q 假如W 引脚一直为高,则硬件保护模式HSM不会被激活,此时只有软件保护模式SPM,使用状态寄存器中的BP1,PB0来设置要保护的内存区域。/ n% E4 c3 h. Y( T4 ` 硬件保护模式6 ]! e1 R+ Y5 B' q7 S W 引脚输入低电平且SRWD位为1时,此时配置为硬件保护模式。进入硬件保护模式下不可修改保护位BP0和BP1的值,保护的范围由BP0和BP1的值决定。 软件保护模式2 i1 l h0 C% O2 O$ i* [2 n t W 引脚输入低电平和SRWD位的值具有如下组合时,可配置为软件保护模式。% D- l2 A6 d X- Q0 M, a ![]() 软件保护模式下可以修改保护位BP0和BP1的值来决定保护的内存范围。 / e* @, S. j: p, @; |! p: h 上电状态 上电以后,EEPROM将会有如下状态: ● 待机模式; ● 设备上电后,EEPROM是被取消选择的状态,需要S 下降沿来开启指令传输;; t; L* S+ q. w9 \$ i) { ● 不在保持状态下;9 h( ?7 R5 L2 ?' d2 b ● 写使能锁存位是复位为0的; ● 写进度位使复位为0的;$ r9 {5 c9 w9 Z5 K- D. Q/ b- q- n- { 状态寄存器中的SRWD,BP1和BP0是断电后不会改变的,非易失的。" s7 b5 i" o" [& U 交货状态 整个内存区域和标识页的字节都设置为0xFF。状态寄存器写禁止位SRWD和块锁存位BP1、BP0都初始化为0。 M95xxx EEPROM写保护配置 由于状态寄存器中的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,使能写指令; 通过WRSR指令写入BP1,BP0的保护值;* C4 C. g, i" d- ?0 K# T- I0 M 通过WREN指令设置WEL位为1,使能写指令;" H) e9 [! R3 S$ k6 o 通过WRSR指令将SRWD位设置为高电平; W 引脚设置为低电平。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,使能写指令; 通过WRSR指令写入BP1,BP0的保护值;$ v! o5 j/ J7 }0 g8 D. ~) e 5 }, ^! ]& u4 `- H1 G) v. q- r# q9 { 不保护配置 W 引脚设置为高电平;1 I# ^5 j: c$ p$ J* m' G# p4 ?( \1 a 通过WREN指令设置WEL位为1,使能写指令; 通过WRSR指令写入BP1,BP0的保护值为不保护的组合值00; 通过WREN指令设置WEL位为1,使能写指令; 通过WRITE指令写入数据到EEPROM; 以上WRITE命令执行完成后,如果还想写入数据则需要通过WREN指令设置WEL位为1,使能写指令,然后再通过WRITE指令写入数据。 结论2 K; U ` K4 T' _9 g( w 通过对M95xxx系列EEPROM进行写保护介绍,能够快速指导用户编写HOST端对EEPROM内存保护的软件设计,帮助客户快速使用M95xxx系列EEPROM写保护功能,并提醒客户使用中应该从上电、出厂、运行状态考虑。 ) r" X7 s( U$ h/ |- Q 5 G4 B. P; H. t0 u ![]() |
资料很好,谢谢分享 |
谢谢分享 |