我爱编程

运动控制器20:STM32的SPI模块

2018-01-18  本文已影响0人  吴松乾

SPI简介

  1. 大容量的SPI接口支持I2S,默认为SPI
  2. 全双工,半双工,同步和串行通信四种方式
  3. 主模式为从设备提供时钟

SPI主要特点

  1. 3线全双工
  2. 2线单工
  3. 8位和16位帧格式
  4. 主模式OR从模式
  5. 预分频
  6. 可编程时钟极性和相位
  7. 可编程数据顺序
  8. 发送和接收的中断,忙状态
  9. 硬件CRC
  10. 故障,过载和CRC错误标志
  11. 支持DMA,单字节收发缓冲,并产生中断

SPI的功能描述

概述

  1. 引脚,4PIN,MI,MO,SCK,NSS,NSS为输出时,片选,做输入时,如果拉低,则强制主模式进入从状态,该引脚可不用。
  2. 两种模式:
    • 软件NSS模式,引脚作为它用,要设置引脚时可以写寄存器。
    • 硬件NSS模式,使能后拉低NSS,其他设备进入从模式。如果不能拉低,表示总线忙,返回失效。
  3. 时钟信号的相位和极性CPOL和CPHA
    • CPOL,闲置时时钟电平。
    • CPHA,1:第二个边沿进行采样。0:第一个边沿采样。

配置为从模式

配置为主模式

  1. 设置波特率
  2. 设置极性和相位
  3. 数据格式为8位还是16位
  4. 设置高位还是低位在前
  5. 设置NSS引脚
  6. 设置主从和使能


    1.png

上面为串行12864的通信时序,CPOL=1,CPHA=1,我们可以设置为双线单工通信。

配置为单工通信

  1. 单工有两种,1时钟+1双向线或者1时钟+1单向
  2. 只发送时只用到SCK和MO引脚,不需要处理接收缓冲

发送和接收过程

主模式下,有四种方式:

  1. 全双工
  2. 单向只接收
  3. 双向模式时,发送时不接受
  4. 只接收不发送

主模式全双工流程如下:单向只发送同这种模式

  1. 使能SPI模块
  2. 写入发送的数据
  3. 等待TXE=1,发送完毕,如果要接收,等待RXNE=1,然后读出
  4. 发送完毕后,检查BSY=0后关闭SPI

双面液晶的通信流程如下:

  1. 使能
  2. 写入要发送的数据
  3. 等待发送完,读取TXE
  4. 写入第二个……,读取TXE
  5. 读BSY=0后,关闭

CRC计算

  1. CRC计算可选择需要的多项式
  2. 使能以后,将在通信的最后,自动再发送CRC
  3. 接收的时候可以再计算一遍,然后和接收到的CRC进行对比

状态标志

  1. 发送完成 TXE
  2. 接收完成 RXNE
  3. 忙 BSY

关闭SPI

主模式全双工通信时,等待发送完最后一个数据TXE=1后,读BSY=0后,关闭SPI

利用DMA

TXE=1时触发DMA,DMA将数据写入DR后清除TXE,如果只发送,则只使能DMA发送通道

中断

可设置TXE和RXNE中断

上一篇 下一篇

猜你喜欢

热点阅读