一、SPI通信协议原理

图片:1、W25Q64flash存储芯片 2、SPI OLED显示屏 3、2.4G无线通信模块NRF24L01 4、Micro ID卡
SPI通信最大速率取决于芯片厂商的设计需求。需要四根通信线,全双工。一主多从(通过ss片选进行从机选择),无应答机制设计。
硬件电路

作为单端信号,所有的设备都需要共地。主从机还需要供电。推挽输出保证了SPI下降沿和上升沿都非常快,保证了通信速率。
防止从机的推挽输出MISO引脚断路,SPI规定当从机SS未被选中,从机的MISO一定要为高阻态。
通信移位示意图:

可以看到主从机皆发送高位先行,接收低位先接收到然后移位。通信根据时钟(波特率发生器进行时钟通信同步)。
上升沿所有数据向左移位一次,移除出的1bit在引脚电平上。下降沿设备从线上读取电平到移位寄存器的最低位。
第一个上升沿

第一个下降沿

若需要发送同时接收,直接交换数据到位移寄存器,交换结束后读取位移寄存器数据即可。
若只需要发送,则直接交换数据到位移寄存器,然后不读取交换后的数据即可。
若只想接收,则随便发送一个数据,将置换过来的数据读取就行。
基本通信单元:低电平片选

时序基本单元:根据CPOL和CPHA(时钟相位)配置SPI模式,不同的模式规定了空闲状态的SCK,SCK第一个边沿进行移入/移除数据。

第一个边沿移入数据的话,那么SS选中低电平时进行第一个数据的移出。SCK高电平位移寄存器进行数据获取。


若交换一字节后继续操作主机不需要进行取消片选。
模式中最常用的为模式0;
通信时序示例:

主机 发送0x06,从机返回0xFF,可以看到高位先行。模式0下,SCK默认低电平,SCK第一个边沿进行移入(上升沿),第二个边沿(下降沿)进行移出。(ss起始为数据移出)。若要进行持续写数据,在SCK下降沿写入数据,SCK上升沿读取数据写入即可(没有应答机制,直接持续时序即可)。
SPI通信和I2C不一样,一般第发送的第一个字节为指令码(表示为什么操作),后面为具体操作。详细应该根据芯片通信协议手册。
指定地址写(高位先行):

示例为指定地址写,W25Q64为24bit地址为3byte,所以发送控制指令后需要发送3byte地址(同样高位先行),
指定地址读(高位先行):

示例为指定地址读,W25Q64为24bit地址为3byte,所以发送控制指令后需要发送3byte地址(同样高位先行),读数据和从机交换的数据任意,此处为0xFF。
总的来说,指定地址写和指定地址都都是根据W25Q64协议来的,实际上SPI通信模式0时序没变。
二、模块介绍
W25Q64(AT24C02使用I2C):

非易失性存储器一般为Flash(Nor Flash、Nand Flash)、EEPROM。
易失性存储器一般为SRAM、DRAM。
固件程序存储为XIP(eXecute in Place):直接把程序文件下载到外挂芯片中,需要执行程序时,直接读取外挂文件的程序芯片进行执行。就地执行,比如电脑里的BIOS固件。
双重SPI和四重SPI,利用总线线束进行多根一起收发(MISO、MOSI、WP写保护、HOLD),提高通信速率。
寻址为24bit, = 1677216/1024/1024 = 16MB,所以最大寻址空间为16MB。W25Q64为8MB,可进行完全寻址(含义为:寻址24bit表示,说明flash的可使用容量大小肯定小于

最低0.47元/天 解锁文章
1918

被折叠的 条评论
为什么被折叠?



