以MicroChip的AT25128B型SPI EEPROM为例,AT25128B容量为128Kbit,即有16384个地址(131072bit,16Kbit×8,16384×8,3FFF×8),每个地址对应8bit数据。
AT25128B有个状态寄存器,要想搞懂写保护的机制,先要了解这些比特位的功能。
(1) Bit0位(RDY/BSY)
Bit0是RDY/BSY:Ready和Busy状态位。
为0时,表示设备处于空闲状态,可以接受新的数据传输。
为1时,表示设备处于忙碌的状态,不能开始新的数据传输。
(2) Bit1位(WEL)
Bit1是WEL,写操作使能位,有专门的命令对这个比特位进行控制。
WREN命令,设置WEL为1,此时可以对未保护的区域进行写操作,也可以对状态寄存器的其他比特位进行写操作。
WRDI命令,设置WEL为0,此时不能对状态寄存器进行任何写操作,即状态寄存器的Bit1位(WEL)和其他比特位都不能进行写操作。
芯片上电初始化时,WEL的值默认为0,意味着不能进行任何的写操作。
RDSR命令,可以读取整个状态寄存器的值,包括Bit1 WEL的值。
WRSR命令,写入除Bit1 WEL之外的其他可写入的比特位,比如WPEN、BP1、BP0。
(3) Bit3位(BP1)和Bit2位(BP0)
Bit3位和Bit2位分别是BP1和BP0:写保护地址区域设置位,根据不同的组合可以设置不同的写保护区。
00时,不保护任何地址的数据写操作;
01时,保护高1/4地址的数据写操作;
10时,保护高1/2地址的数据写操作;
11时,保护全部地址的数据写操作;
(4) Bit7位(WPEN)
Bit7是WPEN:写保护使能位。
为0时,外部的/WP写保护管脚没有任何功能;
为1时,使能/WP写保护管脚的功能。当外部/WP管脚为高电平时,写保护不生效;当/WP为低电平时,使能写保护功能。
(1)Bit1位(WEL)为0时
当Bit1位(WEL)为0时,不管/WP管脚和WPEN比特位是什么状态,受写保护的区域、不受写保护的区域以及状态寄存器,都无法进行写操作。
(2)Bit1位(WEL)为1时
当Bit1位(WEL)状态为1时,不管/WP管脚和WPEN比特位是什么状态,由BP1和BP0设置的写保护区域无法进行写操作,BP1和BP0未设置写保护的区域可正常支持写操作。
(3)Bit1位(WEL)为1且Bit7位(WPEN)为0时
当Bit1位(WEL)为1时,/WP管脚电平的高、低会影响对状态寄存器的写操作。
当Bit1位(WEL)为1,且Bit7位(WPEN)为0时【Bit7位(WPEN)状态为0,/WP管脚的功能被禁用】,不管/WP管脚的电平为高还是低,对非保护区域均不开启写保护功能,同时也可以正常地对状态寄存器进行读写。
当Bit1位(WEL)为1,且/WP管脚为高电平时,不管Bit7位(WPEN)的状态为0还是1,对非保护区域均不开启写保护功能,同时也可以对状态寄存器进行读写。
(4)Bit1位(WEL)为1且Bit7位(WPEN)为1时
当Bit7位(WPEN)为1时(使能/WP管脚写保护的功能),且/WP管脚为低电平时,此时写保护生效,无法对状态寄存器进行写入操作,包括Bit1位(WEL)也无法写入,此时软件方式上是无法解锁对状态寄存器的写入操作的,只能控制/WP硬件管脚才能解除。
所以,并不是/WP管脚使能了就不能执行写操作了,而是采用一系列的机制来实现相关区域数据的写保护操作。
1、【SPI WP写保护: 功能真的被大家误解了!-哔哩哔哩】 https://b23.tv/u66sFAi
2、AT25128B-XHL-B_(MICROCHIP(美国微芯))价格_PDF手册-立创电子商城