SPI简介
- 大容量的SPI接口支持I2S,默认为SPI
- 全双工,半双工,同步和串行通信四种方式
- 主模式为从设备提供时钟
SPI主要特点
- 3线全双工
- 2线单工
- 8位和16位帧格式
- 主模式OR从模式
- 预分频
- 可编程时钟极性和相位
- 可编程数据顺序
- 发送和接收的中断,忙状态
- 硬件CRC
- 故障,过载和CRC错误标志
- 支持DMA,单字节收发缓冲,并产生中断
SPI的功能描述
概述
- 引脚,4PIN,MI,MO,SCK,NSS,NSS为输出时,片选,做输入时,如果拉低,则强制主模式进入从状态,该引脚可不用。
- 两种模式:
- 软件NSS模式,引脚作为它用,要设置引脚时可以写寄存器。
- 硬件NSS模式,使能后拉低NSS,其他设备进入从模式。如果不能拉低,表示总线忙,返回失效。
- 时钟信号的相位和极性CPOL和CPHA
- CPOL,闲置时时钟电平。
- CPHA,1:第二个边沿进行采样。0:第一个边沿采样。
配置为从模式
略
配置为主模式
- 设置波特率
- 设置极性和相位
- 数据格式为8位还是16位
- 设置高位还是低位在前
- 设置NSS引脚
-
设置主从和使能
1.png
上面为串行12864的通信时序,CPOL=1,CPHA=1,我们可以设置为双线单工通信。
配置为单工通信
- 单工有两种,1时钟+1双向线或者1时钟+1单向
- 只发送时只用到SCK和MO引脚,不需要处理接收缓冲
发送和接收过程
主模式下,有四种方式:
- 全双工
- 单向只接收
- 双向模式时,发送时不接受
- 只接收不发送
主模式全双工流程如下:单向只发送同这种模式
- 使能SPI模块
- 写入发送的数据
- 等待TXE=1,发送完毕,如果要接收,等待RXNE=1,然后读出
- 发送完毕后,检查BSY=0后关闭SPI
双面液晶的通信流程如下:
- 使能
- 写入要发送的数据
- 等待发送完,读取TXE
- 写入第二个……,读取TXE
- 读BSY=0后,关闭
CRC计算
- CRC计算可选择需要的多项式
- 使能以后,将在通信的最后,自动再发送CRC
- 接收的时候可以再计算一遍,然后和接收到的CRC进行对比
状态标志
- 发送完成 TXE
- 接收完成 RXNE
- 忙 BSY
关闭SPI
主模式全双工通信时,等待发送完最后一个数据TXE=1后,读BSY=0后,关闭SPI
利用DMA
TXE=1时触发DMA,DMA将数据写入DR后清除TXE,如果只发送,则只使能DMA发送通道
中断
可设置TXE和RXNE中断
网友评论