STMCU小助手
发布时间:2022-3-27 17:00
|
01. SPI简介 SPI 接口提供两个主要功能,支持 SPI 协议或 I 2 S 音频协议。默认情况下,选择的是 SPI 功能。可通过软件将接口从 SPI 切换到 I2S。 串行外设接口 (SPI) 可与外部器件进行半双工/全双工的同步串行通信。该接口可配置为主模式,在这种情况下,它可为外部从器件提供通信时钟 (SCK)。该接口还能够在多主模式配置下工作。 它可用于多种用途,包括基于双线的单工同步传输,其中一条可作为双向数据线,或使用CRC 校验实现可靠通信。 I2S 也是同步串行通信接口。它可满足四种不同音频标准的要求,包括 I 2 S Philips 标准、MSB 和 LSB 对齐标准,以及 PCM 标准。它可在全双工模式(使用 4 引脚)或半双工模式(使用 3 个引脚)下作为从器件或主器件工作。当 I 2 S 配置为通信主模式时,该接口可以向 外部从器件提供主时钟。 02. SPI特性 ● 基于三条线的全双工同步传输 ● 基于双线的单工同步传输,其中一条可作为双向数据线 ● 8 位或 16 位传输帧格式选择 ● 主模式或从模式操作 ● 多主模式功能 ● 8 个主模式波特率预分频器(最大值为 f PCLK /2) ● 从模式频率(最大值为 f PCLK /2) ● 对于主模式和从模式都可实现更快的通信 ● 对于主模式和从模式都可通过硬件或软件进行 NSS 管理:动态切换主/从操作 ● 可编程的时钟极性和相位 ● 可编程的数据顺序,最先移位 MSB 或 LSB ● 可触发中断的专用发送和接收标志 ● SPI 总线忙状态标志 ● SPI TI 模式 ● 用于确保可靠通信的硬件 CRC 功能: — 在发送模式下可将 CRC 值作为最后一个字节发送 — 根据收到的最后一个字节自动进行 CRC 错误校验 ● 可触发中断的主模式故障、上溢和 CRC 错误标志 ● 具有 DMA 功能的 1 字节发送和接收缓冲器:发送和接收请求 03. SPI功能说明
通常,SPI 通过 4 个引脚与外部器件连接: ● MISO:主输入/从输出数据。此引脚可用于在从模式下发送数据和在主模式下接收数据。 ● MOSI:主输出/从输入数据。此引脚可用于在主模式下发送数据和在从模式下接收数据。 ● SCK:用于 SPI 主器件的串行时钟输出以及 SPI 从器件的串行时钟输入。 ● NSS:从器件选择。这是用于选择从器件的可选引脚。此引脚用作“片选”,可让 SPI主器件与从器件进行单独通信,从而并避免数据线上的竞争。从器件的 NSS 输入可由主器件上的标准 IO 端口驱动。NSS 引脚在使能(SSOE 位)时还可用作输出,并可在SPI 处于主模式配置时驱动为低电平。通过这种方式,只要器件配置成 NSS 硬件管理模式,所有连接到该主器件 NSS 引脚的其它器件 NSS 引脚都将呈现低电平,并因此而作为从器件。当配置为主模式,且 NSS 配置为输入(MSTR=1 且 SSOE=0)时,如果NSS 拉至低电平,SPI 将进入主模式故障状态:MSTR 位自动清零,并且器件配置为从模式。 04. SPI中断
05. 相关寄存器 5.1 SPI 控制寄存器 1 (SPI_CR1) (不用于 I 2 S 模式) SPI control register 1 偏移地址:0x00 复位值:0x0000
5.2 SPI 控制寄存器 2 (SPI_CR2) SPI control register 2 偏移地址:0x04 复位值:0x0000
5.3 SPI 状态寄存器 (SPI_SR) SPI status register 偏移地址:0x08 复位值:0x0002
5.4 SPI 数据寄存器 (SPI_DR) SPI data register 偏移地址:0x0C 复位值:0x0000
5.5 SPI_I 2 S 配置寄存器 (SPI_I2SCFGR) SPI_I 2 S configuration register 偏移地址:0x1C 复位值:0x0000
5.6 SPI_I 2 S 预分频器寄存器 (SPI_I2SPR) SPI_I 2 S prescaler register 偏移地址:0x20 复位值:0000 0010 (0x0002) |
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
SPI 32位宽DMA方式收发失败问题
SPI 高温读错最后一位?STM32F42xx 官方根治方案
经验分享 | LAT1470 SPI传输长度超过1024时出现异常的问题分析
经验分享 | 使用EXIT0同步触发SPI的DMA发送话题
经验分享 | STM32H723 SPI 通讯异常排查:实时观察窗口的 “隐形干扰” 解决方案
【STM32C0评测】4、驱动Lorasx126x,实现透传
经验分享 | STM32 SPI半工单线通信示例
经验分享 | 多个SPI的DMA传输为何仅1个有效?
经验分享 | STM32C0 HAL 库的 SPI 驱动导致的 Hardfault 问题分析
微信公众号
手机版