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运行结果

审核编辑 :李倩

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分