一、基本概念
1、定义: SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用高速数据总线,是串行外设接口。SPI有四根通信线分别为:SCK(时钟线) , MOSI (主设备输出,从设备输入), MISO(主设备输入,从设备输出) , SS(片选信号,用于主片选中从片)。同步,全双工模式。
同步:主从设备间有时钟线,主设备提供时钟信号。
全双工:接收数据和发送数据有单独的线,可以同时收发数据。
主机多条ss控制不同的从机。
2、通信原理:主机和从机利用SPI通信时,主要是通过移位寄存器来置换主机和从机的数据,也就是通过交换一个字节来实现数据的同时接收与发送。
【注:输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入,数据是高位先行】
二、数据帧
1、基本时序单元
①起始信号:
ss下降沿
②终止信号:
ss上升沿
③SPI的四种模式(一般用模式0)
模式0:->交换一个字节
CPOL=0 :空闲状态时, SCK 为低电平CPHA=0: SCK第一个边沿移入数据(上升沿),第二个边沿移出数据(下降沿)
模式1:->交换一个字节
CPOL=0:空闲状态时,SCK为低电平
CPHA=1:SCK第一个边沿移出数据(上升沿),第二个边沿移入数据(下降沿)
模式2:->交换一个字节
CPOL=1 :空闲状态时, SCK 为高电平CPHA=0 : SCK 第一个边沿移入数据(下降沿),第二个边沿移出数据(上升沿)
模式3:->交换一个字节
CPOL=1:空闲状态时,SCK为高电平
CPHA=1 :SCK第一个边沿移出数据(下降沿),第二个边沿移入数据(上升沿)
【注:在SS高电平期间,由于多个从机挂在MOSI总线上,若同时开始输出会引起冲突,因此在不对从机进行通信时,保持MISO为高阻态。】
④地址读/写
向ss指定的设备,发送读/写指令(Address),然后在指定的地址位读取/写入从机数据
【注:指令也是需要通过主机发送】