硬件设计-SPI Flash硬件电路设计
SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、 LCD 等设备与 MCU 间,要求通讯速率较高的场合。这里就可以对比下iic,iic的速率较低,一般是低速设备之间通讯。
1.引脚说明
这里以华邦W25Q64为例。64Mbit大小。W25Q64的内部框图如下图所示。对于W25Q64的存储器组织,8MB划分为128个块(Block),每个块又划分为16个扇区(Sector);而总的8MB地址空间又可以划分为很多的页(Page),每一页有256个字节。按这样的规律划分存储地址,可以更高效地管理内存。
2.时序说明
3.控制命令
保护引脚WP, 此引脚并不是直接保护flash上的数据内容,而是保护状态寄存器不被异常改写.flash上的内容写保护是通过状态寄存器的BPxbit的不同组合来实现的. 对于环境相对恶劣的使用场景(供电不稳等.)需要对flash上的内容加以保护.整体的设计思路就是 使用状态寄存器的BPx位组合实现flash上数据内容的局部或整体写保护. 外部WP引脚的电平状态结合状态寄存器的SRP位实现状态寄存器的保护进而间接保护flash上受保护的数据内容.
通过BPx位组合实现的flash写保护,其实是把flash受保护区域置为了只读状态. 这种情况下除非改变flash状态寄存器的BPx位,解除写保护,否则无法擦写受保护区域.
- 写入操作前,必须先进行写使能
每个数据位只能由1改写为0,不能由0改写为1(成本和技术原因)
写入数据前必须先擦除,擦除后,所有数据位变为1(Flash有专门的擦除命令,操作时仅需要发送擦除命令即可),在Flash中0FFH代表空白
擦除必须按最小擦除单元(在本芯片中,最小的擦除单元是一个扇区Sector)进行
连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入(页缓存器的限制),在写入时,要注意写入的地址范围不能跨越页尾
写入操作结束后,芯片进入忙状态,不响应新的读写操作 - 读取操作
直接调用读取时序,无需使能,无需额外操作,没有页的限制,读取操作结束后不会进入忙状态,但不能在忙状态时读取
4.设计要点
- 一般写保护引脚,以及保持引脚直接上拉就好
- 电源滤波。
- 数据线上加上22R的电阻,起到阻抗匹配作用。