STM8 学习笔记15:SPI

SPI

1 概述

SPI(串行外设设备接口,Serial Peropheral Interface)是一种高速的,全双工,串行、同步的通信总线。

2 特性

  1. 主或从操作
  2. 8 或 16 位传输帧格式
  3. 通信速率一般在 50MHz 以下
  4. 可编程的时钟极性和相位
  5. 可编程的数据顺序,MSB 在前或 LSB在前
  6. 可触发中断的专用发送和接收标志
  7. 支持可靠通信的硬件 CRC
    • 在发送模式下,CRC 值可以被作为最后一个字节发送
    • 在接受到最后一个字节时自动进行 CRC 出错检查

3 SPI是如何工作的?(SPI框图)

3.1 SPI 通信框图简化版

在这里插入图片描述

3.2 SPI 框图

在这里插入图片描述
① SPI相关引脚
MOSI(输出数据线)
MISO(输入数据线)
SCK(时钟)
NSS(片选)
② 数据发送和接受
与缓冲区、移位寄存器以及引脚相关
③ 时钟信号
SPI 时钟信号是通过 SPI_CR1 寄存器配置
④ 主控制逻辑
设计两个控制寄存器 SPI_CR1/2 用于配置 SPI 工作,SPI_SR 用于查看工作状态

3.3 SPI 移位操作

在这里插入图片描述
CLK在第一个边沿产生时,数据被传输到 MOSI/MISO 引脚,第二个边沿产生时,数据就被传输到移位寄存器。通过8个流程,1字节的数据就被交换。
Note

  1. 主机只向从机进行写操作,可以忽略接收到的从机数据。
  2. 主机要对从机进行读操作,需要发送一个空数据来引发从机发送数据。

4 SPI 工作模式

时钟极性(CPOL):没有数据传输时时钟线的空闲状态电平
0:SCK 在空闲状态保持低电平
1:SCK 在空闲状态保持高电平
时钟相位(CPHA):时钟线在第几个时钟边沿采样数据
0:SCK 的第一(奇数)边沿进行数据位采样,数据在第一个始终边沿被锁存
1:SCK 的第二(偶数)边沿进行数据位采样,数据在第二个边沿被锁存
在这里插入图片描述

5 相关寄存器

SPI模式,主模式

  1. SPI_CR1.MSTR 主设备选择(Master selection)
    作用:用于选择 SPI 的主从模式
    方向,双向全双工
  2. SPI_CR2.BOM 双向数据模式使能(Bidirectional data mode enable)
  3. SPI_CR2.RXONLY 仅接受(Receive only)
    作用:用于选择 SPI 的方向
    NSS,软件管理且 SSI 为 1,SPI 才能通信
  4. SPI_CR2.SSM 软件从设备管理(Software slave management)
    作用:用于使能软件管理通信
  5. SPI_CR2.SSI 内部从设备选择(Internal slave select)
    作用:用于决定 NSS 的电平
    数据传输顺序,8 位 MSB
  6. SPI_CR1.LSBFIRST 帧格式(Frame format)
    作用:选择 SPI 传输的帧格式
    SPI使能
  7. SPI_CR1.SPE SPI使能(SPI enable)
    波特率
  8. SPI_CR1.BR 波特率控制(Baud rate control)
    Note:当通信正在进行的时候,不能修改这些位
    SPI工作模式
  9. SPI_CR1.CPOL 时钟极性
  10. SPI_CR1.CPHA 始终相位
  11. SPI_SR.TXE 发送缓冲为空(Transmit buffer empty)
    作用:用于检查发送是否完成,当 TXE 位置 1 ,表示数据已经全部发送出去
  12. SPI_SR.RXNE 接收缓冲非空(Receive buffer not empty)
    作用:用于检查是否接收到数据,但 RXNE 位置 1 ,表示已经接受到数据。
  13. SPI_DR 数据寄存器

6 SPI 发送实验配置

  1. 配置 CLOCK、GPIO
  2. 配置 SPI 工作参数
  3. 使能 SPI
  4. SPI 发送
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值