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