目录
1. 体系结构简介
Linux SPI体系结构和I2C很类似,都分为3个组成部分,分别是SPI核心、SPI总线驱动(控制器驱动)、SPI设备驱动,体系结构见下图。
1.1 SPI核心
SPI核心层代码位于drivers/spi/spi.c,头文件位于include/linux/spi/spi.h,SPI核心提供了SPI总线驱动和设备驱动的注册、注销方法,并提供一些需要控制器驱动实现的回调函数。
核心层包含一些重要的数据结构,如struct spi_master、struct spi_transfer、struct spi_message等,还有一些重要的注册、注销函数等。
1.2 SPI控制器驱动
SPI总线驱动是对SPI硬件体系结构中控制器端的实现,主要需要实现SPI硬件数据收发的功能,只有这样,挂接在SPI总线上的SPI设备才能通过SPI控制器读写数据并与CPU进行数据交互。
1.3 SPI设备驱动
SPI总线驱动是对SPI硬件体系结构中设备端的实现,设备一般挂接在受CPU控制的SPI控制器上,通过SPI控制器与CPU进行数据交互。
SPI设备驱动主要包含数据结构spi_driver和spi_device,我们需要根据具体设备实现其中的成员函数。