SPI通信协议

发布于:2025-08-05 ⋅ 阅读:(17) ⋅ 点赞:(0)

1.SPI是全双工通信,通信简单,传输数据速率快,一主多从模式,是高速的全双工,同步的通信总线,

非差分与差分的概念是指在远距离传输时候,是否通过两根电平的差来判断是传输是高还是低,一般远距离传输使用差分总线,近距离的都是非差分,RS485就是一种差分总线

与I2C相比,无应答机制,使用的是片选机制但是传输速率快,是同步,是全双工,只支持一主机多从机,SPI有CS,SCLK,M

2.通信连接机制

每个从机除了连接三个共同的共享线,每个从机都独立连接一个CS片选线,低电平有效 

.级联模式

从机共享CS片选线,第一个从机的SDO连接第二个的SDI,最后一个连接的主机

3.SPI串行移位寄存器

4.SPI框图如下

需要设置SCK时钟的波特率

 5.SPI发出的数据采样模式

CPOL(时钟极性)  CPHA(时钟相位)

模式0,CPOL=0,CPHA=0,时钟空闲电平为0,第一个边沿进行数据SPI采样

第二个边沿X的位置进行数据在数据线上的变换,第一个边沿检测MOSI,或MISO电平

发送的数据一般使用MSB(高位优先),还要设置一个GPIO口为片选线

6.CUBEMX快速配置SPI控制器

二.SPI的HAL库开发

HAL库函数接口

 阻塞方式无法实现任务的并发,于是非阻塞方式SPI的API如下:

触发中断任务,任务不会等待,会马上返回,当发送或者接收完成会触发回调函数,运用上列非阻塞函数,发送或者接收完成不知道,需要在它触发的回调函数中处理才知道发送是否完成

以下是相应的回调函数

3.SPI的DMA方式

DMA方式也会和中断一样调用这些回调函数

三.W25q64的SPI---FLash芯片读写,擦除,

1.数据手册通用描述,标准SPi最大133Mhz

引脚图

2.WP:写保护, HOLD/RESET挂起或重置引脚

分成128个块,每个块分为16个扇区

 写或者读是通过状态寄存器配置

3.本次用到的状态寄存器

当在写入或擦除,寄存器自动置1,当写入擦除完成置0

4.w25q64相关指令

读取ID,发送0x9F,读取8位设备MF,然后读取16位ID

读数据,发送0x03,在24位地址读取8位数据

如果是写入数据,要进行相应的擦除扇区

 写入过程如下

先擦除在写入,每次要进行写使能

扇区擦除和页编程写入相关指令如下

扇区擦除位20h,页编程为02h,写使能为06h,读取设备号为9fh,读取数据为03h

5.W25q64flash存储管理

 四.w25q64驱动

1.制造商ID和设备ID