核心内容摘要
AI原生应用领域知识库构建的关键要点与实践指南
SPI概念SPISerial Peripheral Interface串行外设接口是一种同步、全双工、高速的串行通信总线协议广泛用于微控制器MCU与各种外围设备如传感器、存储器、显示屏、ADC/DAC 等之间的短距离通信。
SPI 的四根基本信号线信号线全称方向功能SCLKSerial Clock主 → 从时钟信号由主设备生成MOSIMaster Out Slave In主 → 从主设备发送数据给从设备MISOMaster In Slave Out从 → 主从设备发送数据给主设备CS / SSChip Select / Slave Select主 → 从片选信号低电平有效用于选中某个从设备
SPI 的工作模式CPOL 与 CPHASPI 由两个参数决定CPOLClock Polarity时钟极性CPOL 0SCLK 空闲时为低电平CPOL 1SCLK 空闲时为高电平CPHAClock Phase时钟相位CPHA 0在第1个时钟边沿采样数据CPHA 1在第2个时钟边沿采样数据四种模式时序图
硬件连接ECSPI3 信号复用源ALT5对应 GPIOMISOUART2_RTS_BGPIO1_IO14MOSIUART2_CTS_BGPIO1_IO15SCLKUART2_RX_DATAGPIO1_IO16SS0 (CS)——未使用硬件 SS0GPIO1_IO20软件控制
驱动代码
引脚复用与电气特性配置//复用功能 IOMUXC_SetPinMux(IOMUXC_UART2_RTS_B_ECSPI3_MISO,
; IOMUXC_SetPinMux(IOMUXC_UART2_CTS_B_ECSPI3_MOSI,
; IOMUXC_SetPinMux(IOMUXC_UART2_RX_DATA_ECSPI3_SCLK,
; IOMUXC_SetPinMux(IOMUXC_UART2_TX_DATA_GPIO1_IO20,
; 、 //电气特性 IOMUXC_SetPinConfig(IOMUXC_UART2_RTS_B_ECSPI3_MISO, 0x10B
; IOMUXC_SetPinConfig(IOMUXC_UART2_CTS_B_ECSPI3_MOSI, 0x10B
; IOMUXC_SetPinConfig(IOMUXC_UART2_RX_DATA_ECSPI3_SCLK, 0x10B
; IOMUXC_SetPinConfig(IOMUXC_UART2_TX_DATA_GPIO1_IO20, 0x10B
;将 UART2 相关引脚复用为 ECSPI3 的 MISO、MOSI、SCLK 功能CS 保留为 GPIO。
0x10B1配置引脚为高速、100K 上拉、施密特触发适用于稳定高速 SPI 通信。
片选CSGPIO 初始化//片选信号线闲时为高 GPIO1-GDIR | (1
; GPIO1-DR | (1
;GPIO1_IO20 配置为输出默认高电平符合 SPI 器件“低电平有效”的片选逻辑。
实际通信时需软件手动拉低/拉高 CS 控制传输起止。
ECSPI3 核心寄存器配置1CONREG控制寄存器ECSPI3-CONREG 0; ECSPI3-CONREG | (7
| (0x0E
| (2
| (1
| (1
| (1
;设置数据宽度为 8 位SCLK 分频为 15约
4 MHz工作在 SPI Mode 0。
启用 TX/RX FIFO 并激活 ECSPI 模块。
2CONFIGREG配置寄存器ECSPI3-CONFIGREG 0; ECSPI3-CONFIGREG | (1
| (1
| (1
;
全双工数据收发函数unsigned int spi3_ch0_write_and_read(unsigned int data) { unsigned int ret 0; ECSPI3-CONREG ~(3
; while((ECSPI3 -STATREG (1
)
; ECSPI3-TXDATA data; while((ECSPI3 -STATREG (1
)
; ret ECSPI3-RXDATA; return ret; }采用轮询方式等待 FIFO 状态实现同步发送与接收。
调用者需自行管理 CS 信号函数本身仅处理数据收发。