spi_peripherals_driver

linux kernel spi外设驱动的编写,可以分为四步:

通过spi_sync()读写spi外设寄存器

  1. 配置设备树dts spi子节点

  2. 注册/注销 struct spi_driver 变量

  3. 当设备树与驱动匹配后,调用probe函数

  4. 通过spi_sync()读写spi外设寄存器

通过regmap API读写spi外设寄存器

  1. 配置设备树dts spi子节点(同上)

  2. 注册/注销 struct spi_driver 变量(同上)

  3. 当设备树与驱动匹配后,调用probe函数

  4. 通过regmap API读写spi外设寄存器

通过spi_sync()读写spi外设寄存器

1. 配置设备树dts spi子节点

&spi {
    cs-gpio = <&gpio1 20 GPIO_ACTIVE_LOW>;
    status = "okay";

    xxx {
        compatible = "xxx,xxx";
        status = "okay";
    };
};

2. 注册/注销 struct spi_driver 变量

  • 定义 struct spi_driver 变量

  • 调用相关API注册/注销

3. 当设备树与驱动匹配后,调用probe函数

设备树与驱动匹配,即设备树dts spi子节点的compatible属性 与 xxx_of_match_table结构体的.compatible变量相同,调用probe函数

4. 通过spi_sync()读写spi外设寄存器

  • 读操作

  • 写操作

通过regmap API读写spi外设寄存器

前提:spi控制器自动使能/失能CS引脚 或 spi控制器驱动手动使能/失能CS引脚,即 不需要spi外设驱动使能/失能CS引脚

1. 配置设备树dts spi子节点(同上)

2. 注册/注销 struct spi_driver 变量(同上)

3. 当设备树与驱动匹配后,调用probe函数

设备树与驱动匹配,即设备树dts spi子节点的compatible属性 与 xxx_of_match_table结构体的.compatible变量相同,调用probe函数

4. 通过regmap API读写spi外设寄存器

  • 读操作

  • 写操作

Last updated

Was this helpful?