STM32笔记 --SPI 同步串行通信

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012292754/article/details/83782770

1 SPI 介绍

  • SPI 是由Motorola 公司提出的一种同步串行外围接口;
  • SPI 是一个全双工的同步串行接口,在数据传输过程中,总线上只能是一个主机和一个从机进行通信;

1.1 接口

  1. MISO(Matser In Slave Out)
  2. MOSI
  3. SCK : Serial Clock,串行时钟信号
  4. SS: Slave Select ,从机选择信号,低电平有效

1.2 SPI 基本机构

相当于8位移位寄存器的首位相接,构成 16 位环形移位寄存器

在这里插入图片描述

1.3 时钟信号的相位和极性

  • SPI 接口可由 CPOL 和 CPHA 设定4种不同传输格式的时序;
  • CPOL 决定时钟脉冲 SCK 的有效脉冲方式(正脉冲、负脉冲),CPHA决定数据线 MOSI 什么时候输出数据或者采集数据;
  • CPOL=0,空闲为0;
  • CPHA =0,第一个跳变沿采样;CPHA=1,第二个跳变沿采样;
    在这里插入图片描述
    在这里插入图片描述

2 SPI 主模式配置

在这里插入图片描述

2.1 数据发送

  1. 当一字节写入发送缓冲器,发送开始;
  2. 在发送第一个数据位时,数据字被并行地(通过内部总线)传入移位寄存器,而后串行地移出到 MOSI 脚; MSB 在前与否取决于 SPI_CR1 寄存器中 LSBFIRST 位。 数据从发送缓冲器传输到移位寄存器时 TXE 标志位将被置位,如果设置 SPI_CR1 寄存器中的 TXEIE 位,将产生中断;
  3. 在写发送缓冲器之前,需要确认 TXE 标志位 应该是1;

2.2 数据接收

当数据传输完成。

  1. 移位寄存器里的数据传送到 接收缓冲器,并且 RXNE 标志被置位。如果 SPI_CR2 寄存器中 RXEIE 位被设置,则产生中断;
  2. 读 SPI_DR 寄存器时, SPI 设备返回接收到的数据字。读 SPI_DR寄存器将清除 RXNE 位。

猜你喜欢

转载自blog.csdn.net/u012292754/article/details/83782770