AVR 单片机中的串行外设接口 (SPI)

2024 年 9 月 27 日 | 2 分钟阅读

AVR 单片机支持有线通信协议。 大多数单片机都带有支持通信协议的内部模块。

AVR 单片机中常用的协议是

  • SPI(串行外设接口)
  • TWI(两线接口)
  • UART(通用异步接收器发射器)通信
  • USI(通用串行接口)
  • USB(通用串行总线)
  • 以太网等。

SPI 是所有通信协议中最简单的协议。 设备内部的 8 位数据寄存器通过导线连接,这些数据寄存器用作移位寄存器,用于控制 SPI 网络内部的数据交换。 控制网络内部操作的设备称为主设备。


寄存器说明

SPI 的状态寄存器表如下所示

-
SPI(串行外设接口)状态寄存器
76543210
位名称SPIFWCOL-----SPI2X
读/写读取读取读取读取读取读取读取读取
初始值00000000

位 0 - SPI2X(双 SPI 速度位)

当该位置高时,当 SPI 处于主模式时,SPI 速度(系统时钟频率)将加倍。 这意味着最小 SCK 周期为 2 个 CPU 时钟周期。 当 SPI 配置为从机时,SPI 以低于时钟周期频率工作。

位 1...5-保留位

在 SPI 状态寄存器中,位 1 到位 5 是保留位,用于任何进一步的连接操作。

位 6-WCOL(写冲突标志)

如果在数据传输期间使用了 SPI 数据寄存器,则 WCOL 位置高。 通过首先读取设置了 WCOL 的 SPI 寄存器,然后用于访问 SPI 数据寄存器,来清除 WCOL 位。

位 7-SPIF(SPI 中断标志)

当数据串行传输完成时,将设置 SPIF 标志。 执行相应的中断处理向量时,硬件将清除 SPIF 标志。

SPI 的控制寄存器表如下所示

SPI 控制寄存器 - SPCR
76543210
位名称SPIESPEDORDMSTRCPOLCPHASPR1SPR0
读/写RWRWRWRWRWRWRWRW
初始值00000000

在 AVR 单片机中启用 SPI 操作

  • 为了启用 SPI 操作,以下步骤就足够了
    1. 设置或复位 SPCR 寄存器内的 MSTR 位。
    2. 设置 SPCR 寄存器内的 SPI 使能位。
    3. 配置 SPI 所属的数字 I/O 端口的 DDR(数据方向寄存器)的值。
    4. 配置分频器位不是强制性的。
  • SPI 交换主从机的 SPDR 寄存器的内容。 因此,必须采取预防措施,以免使用或传输垃圾内容。