SPI调试指南
SPI硬件支持
X5共支持7路SPI控制器,其中6路(spi0-spi5)位于LSIO子系统,1路(spi6)位于DSP子系统。 所有SPI控制器均支持主/从模式。 RDK X5 上留出来的引脚主要是在 40pin 中,分别是SPI1和SPI2,可以参考RDK X5 40pin介绍 其他的 SPI 口并不在 40pin 上。
Linux SPI驱动框架介绍
- spi driver层:主要实现对SPI硬件IP的操作,另外还实现了spi framework定义的接口。
- spi framework层:可以理解为spi driver的适配层,对下层定义了一组driver层需要实现的接口,对上提供了通用接口屏蔽了硬件细节。
- spi char device层:为用户空间提供节点,方便用户空间与内核空间进行数据交换。
代码路径
X5使用新 思的ssi控制器,驱动代码位于:drivers/spi目录下,主要有三个文件:
drivers/spi/spi-dw-core.c
drivers/spi/spi-dw-mmio.c
drivers/spi/spi-dw-dma.c
控制器硬件说明
X5的所有SPI均控制器可以运行Master/Slave模式。Master及Slave的运行限制如下:
- SPI-Master:最高频率50MHz
- SPI-Slave:最高频率32MHz
X5的所有SPI控制器均可以运行在中断/DMA模式。中断模式运行限制如下:
- SPI-Slave:
- Rx:CPU定频在1.5GHz时,可以达到32MHz
- Tx:CPU定频在1.5GHz时,可以达到16MHz
- SPI-Master:均可正常通讯。
DTS配置说明
X5 SPI控制器的设备树定义位于SDK包的kernel文件夹下的arch/arm64/boot/dts/hobot/x5.dtsi
文件内。
注意:x5.dtsi中的节点主要声明SoC共有特性,和具体电路板无关,一般情况下不用修改。
X5 SPI控制器默认关闭,请根据实际硬件情况,在对应的DTS文件内使能相应的SPI控制器。
以使能SPI2为例:
&spi2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spi2>;
};
DTS配置SPI使用DMA
如果需要使用DMA,则需要在对应的DTS文件内绑定对应的DMA握手,以SPI2为例:
&spi2 {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spi2>;
dma-names = "tx", "rx";
dmas = <&axi_dmac 25>, <&axi_dmac 24>;
};