12.3在应用层使用SPI总线

在SPI总线驱动框架中提供了一个spidev 的字符设备驱动,在应用层可以通过它来访问SPI总线。

应用层访问SPI总线的步骤

  1. 编写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下第几个设备)
  1. 在应用层通过open打开spidev
  2. 通过ioctl对spidev进行配置(如配置模式、字节序、一次传输的字节数等,当然这些也可以通过设备树进行配置)
  3. 使用read读取SPI设备,使用write写SPI设备,若要进行双向传输也可以通过ioctl实现
  4. 使用完成后用close关闭spidev

spidev驱动程序分析

spidev.c通过file_operations向应用层提供接口
12.3在应用层使用SPI总线_第1张图片

读函数

12.3在应用层使用SPI总线_第2张图片

写函数

12.3在应用层使用SPI总线_第3张图片

通过ioctl配置spidev或查询spidev当前配置

12.3在应用层使用SPI总线_第4张图片

通过ioclt读写数据(可以同时读写)

12.3在应用层使用SPI总线_第5张图片

你可能感兴趣的:(linux,驱动开发,嵌入式硬件,arm开发)