SPI
介绍SPI的功能和使用方法。
模块介绍
SPI 是soc和外设之间的一种串行接口总线(spi), 只支持1x模式。SPI有主、从两种模式 ,通常一个主设备(master)和一个或多个从设备(slave)连接。主设备选择一个从设备进行通信,完成数据交互。主设备提供时钟,读写操作都由主设备发起。k1 spi暂时只支持主设备模式。
功能介绍
Linux spi驱动框架分为三部分: spi core、spi控制器驱动和spi设备驱动。
spi core主要作用:
- spi总线和spi_master类注册
- spi控制器添加和删除
- spi设备添加和删除
- spi设备驱动注册与注销
spi 控制器驱动:
- spi master控制器驱动,对spi master控制器进行操作
spi 设备驱动
- spi device驱动
源码结构介绍
控制器驱动代码在drivers/spi目录下:
|-- spi-k1x.c #k1 spi驱动
关键特性
特性
特性 | 特性说明 |
---|---|
通信协议 | 支持SSP/SPI/MicroWire/PSP协议 |
通信频率 | 最高频率支持53MHz, 最低频率支持6.3kbps |
通信倍数 | x1 |
支持外设 | 支持spi-nor和spi-nand |
性能参数
通信频率
最高频率支持53MHz, 最低频率支持6.3kbps
通信倍速
spi 通信倍速支持 x1。
测试方法
可以通过示波器或者逻辑分析测试sck信号频率
配置介绍
主要包括驱动使能配置和dts配置
CONFIG配置
CONFIG_SPI 为SPI总线协议提供支持,默认情况,此选项为Y
Device Drivers
SPI support (SPI [=y])
CONFIG_SPI_K1X 为K1 spi控制器驱动提供支持,默认情况下,此选型为Y
Device Drivers
SPI support (SPI [=y])
K1X SPI Controller (SPI_K1X [=y])
dts配置
pinctrl
查看方案原理图,找到 spi 使用的 pin 组。参考pinctrl章节,确定 spi 使用的 pin 组。
假设 spi3 可以直接采用 k1-x_pinctrl.dtsi 中定义 pinctrl_ssp3_0 组。