SPI通信-(STM32)

一、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,2^{24} = 1677216/1024/1024 = 16MB,所以最大寻址空间为16MB。W25Q64为8MB,可进行完全寻址(含义为:寻址24bit表示,说明flash的可使用容量大小肯定小于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值