目录
一、SPI总线介绍
SPI(Serial Peripheral interface):是由Motorola(摩托罗拉)公司开发的串行外围设备接口,是一种高速的,全双工,同步的通信总线。主要应用在 EEPROM,FLASH(存储),模块通信(显示控制芯片OLED、LCD),实时时钟,AD转换器,还有数字信号处理器和数字信号解码器等器件。
SPI通信速率:Mhz 25Mhz 需要看从机最大支持多快的速率
1.相关存储芯片特点
EEPROM和FLASH非易失性的存储芯片
W25Q64:属于FLASH存储芯片,非易失性
W25Q64特点:写入之前必须先擦除需要写入空间
W25Q64只能写入0,不能写入1
擦除操作:往W25Q64相对应的位置写入1
W25Q64存储单位:64Mbit
总存储大小:8Mbyte = 8,388,608byte
块:65536byte
扇区:4096byte
页(最小存储单位):256byte
最小擦除单位:扇区 一次擦除4096byte(16页)
最小存储单位(最小写入单位):页 256byte
W25Q64:存放一些不需要经常修改的数据
FLASH:保守擦除和写入次数 100万次作用 读取次数:无限次
功能:扇区擦除、半块擦除、块擦除、全片擦除
页写 --- 注意:写完256byte之后需要换页
读取 --- 一直读,读到W25Q64最末地址
二、SPI总线接口与物理拓扑结构
1.五线制接口全双工(4线SPI)双线单向通信
2.四线制(3线SPI)接口半双工
3.SPI物理拓扑结构
STM32中控:既可以作为主机,也可以作为从机
主从关系:一主多从,符合主从结构,主机起到主导性作用
只有主机能操作从机 --- 先发送后接收
三、特点
- 一主多从:主机可以去跟多个从机建立通信(不能同时建立)
- 只能选择一个从机建立通信
- 主从关系:主机起到一个主导地位,时钟线 片选只能由主机进行操控
- 从机不能主动向主机发送数据
四、SPI接口说明
SCK/SCL : 时钟线
- 同步通信,让主机和从机保持相同通信速率
- 控制数据收发,依靠时钟先的拉高或者拉低,决定数据什么时候发送,什么时候接收。(IO模拟SPI)
MOSI:主机发送从机接收 主机发送数据给从机
MISO:主机接收从机发送 主机接收从机数据
CS/NSS:片选
主机与从机建立通信管脚
拉低CS片选脚,建立通信
拉高CS片选脚,结束通信
五、SPI总线通信原理
1、建立通信:主机控制从机,拉低片选(CS = 0)
2、主机发送/接收数据 ---- SCK
SCK上升沿/下降沿采集数据 --- 命令/数据
SCK下降沿/上升沿发送数据 --- 数据
3、结束通信:拉高片选
六、SPI总线数据格式
UART:起始位 + 数据位 + 校验位 + 停止位
IIC:起始信号 + 数据位 + 响应位 + 停止信号
SPI:4种模式 MODE0 MODE1 MODE2 MODE3
MODE0/ MODE3:下降沿发送数据,上升沿接收数据
CPOL:时钟极性 --- 决定时钟线空闲电平
CPOL:0 时钟线空闲电平为低电平
CPOL:1 时钟线空闲电平为高电平
CPHA:时钟相位 --- 决定数据采样的边沿顺序 采样:接收数据
CPHA:0 数据在前沿进行采集(数据在奇数边沿进行采集)
CPHA:1 数据在后沿进行采集(数据在偶数边沿进行采集)
SPI控制器:通过配置CPOL和CPHA来决定使用哪一种模式
七、配置方法
置通信协议两种方法:根据实际情况选择使用哪一种配置方法
- 配置对应片上外设(配置SPI控制器 UART控制器) --- 配置寄存器
优点:不需要去看通信时序图(不需要将图片翻译成代码)
缺点:移植性差,换芯片后可能无法移植
- IO模拟通信时序(常用)
优点:移植性强
缺点:需要看懂时序图并且需要一定的阅图逻辑(必须看懂时序图)