谷动谷力

 找回密码
 立即注册
查看: 782|回复: 0
收起左侧

Linux驱动-spidev驱动使用方法

[复制链接]
发表于 2023-4-8 22:25:32 | 显示全部楼层 |阅读模式
Linux驱动-spidev驱动使用方法
8 G$ d. Z4 k9 w

7 U& h3 {2 u6 r) v, }
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驱动。
640?wx_fmt=png.jpg
图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片选信号编号。
640?wx_fmt=png.jpg
图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。
640?wx_fmt=png.jpg
图3 设备节点名设置
(2)运行spidev_test
    内核启动后,./dev路径下生成了spidev0.0设备节点。然后运行spidev_test,程序按默认配置参数执行了,SPI0发送的数据与图3中数组default_tx[]一致。若需设置参数,详见spidev_test.c 中的static void parse_opts(int argc, char *argv[])函数定义。
640?wx_fmt=png.jpg
图4 spidev_test运行结果
5.参考文献
(1)linux-6.2.8/Documentation/spi/spi-summary.rst
(2)linux-6.2.8/Documentation/spi/spidev.rst
9 D$ n+ ~. g' E. U1 L; v5 I: r
- Q# k; M' {4 M8 l. k: Q
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-3-28 20:09 , Processed in 0.091478 second(s), 39 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表