在SPI总线驱动框架中提供了一个spidev 的字符设备驱动,在应用层可以通过它来访问SPI总线。
应用层访问SPI总线的步骤
- 编写spidev设备树节点,在SPI总线的设备树节点下添加spidev设备的树节点,设备树示例如下所示:
spidev0: spidev@0 {
compatible = “spidev”;
reg = <0>;
spi-max-frequency = <50000000>;
};
其中compatible属性等于下列值,就会跟spidev驱动匹配:
- “rohm,dh2228fv”
- “lineartechnology,ltc2488”
- “spidev”
设备树与spidev匹配成功后会在/dev下创建一个名为spidevB.D的设备文件(B表示总线号,D表示它是这个SPI Master下第几个设备)
- 在应用层通过open打开spidev
- 通过ioctl对spidev进行配置(如配置模式、字节序、一次传输的字节数等,当然这些也可以通过设备树进行配置)
- 使用read读取SPI设备,使用write写SPI设备,若要进行双向传输也可以通过ioctl实现
- 使用完成后用close关闭spidev
spidev驱动程序分析
spidev.c通过file_operations向应用层提供接口
读函数
写函数
通过ioctl配置spidev或查询spidev当前配置
通过ioclt读写数据(可以同时读写)