谷动谷力

标题: Linux驱动-spidev驱动使用方法 [打印本页]

作者: sunsili    时间: 2023-4-8 22:25
标题: Linux驱动-spidev驱动使用方法
Linux驱动-spidev驱动使用方法

1.概述
    本文主要讲述了Linux的spidev驱动使用方法。介绍了spidev驱动的配置方法及验证方法。
    Linux内核版本:6.2.8。硬件平台:ARM SOC。
2.原理
    Linux内核集成了spidev驱动,提供了SPI设备的用户空间API,支持用于半双工通信的read()和write()访问接口以及用于全双工通信和I/O配置的ioctl()接口;使用时,只需将SPI从设备的compatible属性值添加到spidev驱动的spidev_dt_ids[]数组中,即可将该SPI从设备创建为spidev设备。同时,Linux内核也集成了SPI测试工具spidev_test,用于在用户态对spidev驱动功能进行测试和验证。
3.配置方法
(1)配置内核,使能CONFIG_SPI_SPIDEV,以添加spidev驱动。
图1 使能CONFIG_SPI_SPIDEV配置界面
(2)添加SPI从设备的compatible属性值到linux-6.2.8/drivers/spi/spidev.c的spidev_dt_ids[]数组。添加compatible属性值后,则会将SPI从设备创建为/dev/spidevB.C设备节点,供用户空间API使用,其中B为SPI总线编号,C为SPI片选信号编号。
图2 添加SPI从设备的compatible属性值代码
4.验证方法
(1)编译spidev_test
    以SPI0总线的片选0为例,其生成的设备节点名为spidev0.0,故首先将测试例程linux-6.2.8/tools/spi/spi_test.c中的设备节点名改为"/dev/spidev0.0"。然后在linux-6.2.8/tools/spi路径下直接执行make,即可生成可执行程序spi_test。
图3 设备节点名设置
(2)运行spidev_test
    内核启动后,./dev路径下生成了spidev0.0设备节点。然后运行spidev_test,程序按默认配置参数执行了,SPI0发送的数据与图3中数组default_tx[]一致。若需设置参数,详见spidev_test.c 中的static void parse_opts(int argc, char *argv[])函数定义。
图4 spidev_test运行结果
5.参考文献
(1)linux-6.2.8/Documentation/spi/spi-summary.rst
(2)linux-6.2.8/Documentation/spi/spidev.rst







欢迎光临 谷动谷力 (http://bbs.sunsili.com/) Powered by Discuz! X3.2