HC32F460_SPI驱动(一)

在开始介绍HC32F460的SPI驱动之前,先重点对SPI总线的功能与特点进行说明。

1、SPI总线简介

SPI(Serial Peripheral Interface,串行外设接口),是摩托罗拉提出的同步串行通信总线,属于短距离、板内高速通信,广泛用于 MCU 和 Flash、ADC、DAC、LCD、隔离芯片、FPGA 等外设之间。

标准4线SPI采用SCK(串行时钟)、MOSI(主发从收)、MISO(主收从发)、NSS/CS(片选)。其中串行时钟SCK由主机提供,收发双方共用同一个时钟信号,不需要像串口一样约定波特率。

SPI的通信速率由SCK时钟决定,与传统USART相比,速度极快,一般能做到数兆到数十兆Hz。

此外SPI为全双工通信接口,SCK每走一个时钟,主机发送1 bit的同时也会收到1bit。也即是即使只想发送,也会收到数据,同样即使只想接收,也需要同时发送数据。

1.1 工作模式

SPI具有4种模式,由CPOL(时钟极性)决定空闲时的SCK电平;CPAL(时钟相位)决定在哪个边沿采样数据。

  • CPOL(时钟极性):空闲时 SCK 电平
    • CPOL=0:空闲低电平
    • CPOL=1:空闲高电平
  • CPHA(时钟相位):在哪一个边沿采样数据
    • CPHA=0:第一个时钟沿采样
    • CPHA=1:第二个时钟沿采样

‌1.2 片选

需要说明的是:SPI 的片选(CS/NSS)确实有初始化和复位的作用‌,它不仅是"选不选从设备"的开关,还承担着界定一次通信事务、触发从设备内部状态复位的功能。很多从机芯片内部有状态机,靠 CS 的上升沿复位逻辑、锁存数据。比如 SPI Flash,如果片选时序不对,读出来的数据可能错位,且复位不干净。

‌‌

1.3 数据宽度

‌ SPI的数据宽度决定了每帧传输的位数,而每帧之间的NSS(片选信号)需要根据从设备的要求来设置帧间间隔。‌ 数据宽度常见有8位和16位,帧间NSS的拉高时间由从设备的时序要求决定,不能随意缩短。‌‌

NSS拉低表示通信开始,拉高表示结束。每帧之间NSS必须经历完整拉高-拉低过程,从设备靠此识别帧边界。

需要注意的是:在MCU自动控制NSS的时候,会在每帧传输后进行一次完整的拉高、拉低的进程。可能会导致从机误判,因此当需要连续传输多字节时,还是采用软件NSS为好(即GPIO控制)。

2、HC32F460的SPI

  1. HC32F460 片上集成 4 路硬件 SPI 外设;其中 SPI2、SPI3 仅具备一路硬件片选 NSS0,SPI0、SPI1 支持 NSS0~NSS3 四路硬件片选。
  2. 支持主机、从机模式配置;从机模式工程应用场景较少,本驱动库仅实现主机功能。
  3. 支持标准四线模式与三线时钟同步运行模式。三线时钟同步模式不再使用 NSS 作为帧同步信号,仅依靠 SCK 时钟边沿完成帧同步;NSS0 引脚会被释放,可配置为普通 GPIO 使用。
  4. 数据位宽支持 4~32bit 灵活配置。
  5. 校验位紧跟在一帧数据的最后一位之后,属于同一 NSS 周期内的最后一 bit。SPI 标准本身未定义校验位,校验位是否占用数据位宽由芯片设计决定。HC32F460 的 SPI 校验位由硬件集成在帧结构内:若配置 32bit 数据宽度并开启校验,有效数据位将变为 31bit。
  6. 支持 MSB、LSB 两种移位顺序:MSB 为高位优先传输,LSB 为低位优先传输。
相关推荐
矜辰所致12 天前
沁恒 RISC-V 蓝牙 CH58x SPI 使用说明
spi·ch58x·沁恒蓝牙·spi 半双工·spi 全双工
橘好き20 天前
将7针的SPI OLED做I2C使用
oled·spi·i2c
susplus1 个月前
【ARM 裸机开发 (IMX6ULL-mini)】SPI 协议与ADXL345 三轴加速度传感器
arm·spi·adxl345加速度传感器
ly76892 个月前
JVM 类加载机制:打破双亲委派模型的实践与陷阱
jvm·热部署·spi·类加载器·双亲委派
声讯电子3 个月前
把喇叭贴在麦克风边上,还能全双工通话?——AU-60把“不可能”变成了“常规操作”
语音识别·spi·ai降噪·usb接口·回音消除·波束定向
AI人工智能+电脑小能手4 个月前
【大白话说Java面试题 第163题】【06_Spring篇】第23题:说说SpringBoot 自动配置原理?
java·自动配置·springboot·spi·条件注解
阿拉斯攀登4 个月前
SPI 设备驱动开发
linux·驱动开发·嵌入式硬件·linux内核·嵌入式·linux驱动·spi
牛根生同志4 个月前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
大阳1235 个月前
ARM.8(ADC,SPI)
单片机·嵌入式硬件·adc·spi