0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux驱动-spidev驱动使用方法

Linux阅码场 来源:Linux阅码场 2023-04-07 10:22 次阅读

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驱动。

736ff334-d4ea-11ed-bfe3-dac502259ad0.png

图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片选信号编号。

7384f694-d4ea-11ed-bfe3-dac502259ad0.png

图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。

73a22610-d4ea-11ed-bfe3-dac502259ad0.png

图3 设备节点名设置

(2)运行spidev_test

内核启动后,./dev路径下生成了spidev0.0设备节点。然后运行spidev_test,程序按默认配置参数执行了,SPI0发送的数据与图3中数组default_tx[]一致。若需设置参数,详见spidev_test.c 中的static void parse_opts(int argc, char *argv[])函数定义。

73ba9cb8-d4ea-11ed-bfe3-dac502259ad0.png

图4 spidev_test运行结果

审核编辑 :李倩

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

    关注

    87

    文章

    10990

    浏览量

    206736
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1615

    浏览量

    89602
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87218

原文标题:Linux驱动-spidev驱动使用方法

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【i.MX6ULL】驱动开发8—中断法检测按键 Linux中断和定时使用方法

    本篇主要介绍了Linux中断的使用方法,通过按键来进行中断实验测试,并使用Linux定时器进行按键去抖。
    的头像 发表于 05-25 09:09 3126次阅读
    【i.MX6ULL】<b class='flag-5'>驱动</b>开发8—中断法检测按键 <b class='flag-5'>Linux</b>中断和定时<b class='flag-5'>使用方法</b>

    两种LED驱动模式的功能及使用方法

    中颖MCU普通LED模块(非恒流)提供了两种LED驱动模式:亮灭模式、调光模式。两种模式的功能及使用方法简介如下。
    发表于 08-26 11:18 2453次阅读

    Linux系统中的Makefile的使用方法

    今天主要和大家聊一聊,Linux系统中的Makefile的使用方法
    发表于 11-17 09:35 3508次阅读

    Linux系统中驱动格式基本编写方法

    今天主要和大家聊一聊,编写Linux驱动格式与方法
    发表于 12-02 09:34 453次阅读

    Linux之PWM驱动

    本文主要讲述了Linux的PWM驱动框架、实现方法驱动添加方法和调试方法
    发表于 05-25 09:19 408次阅读
    <b class='flag-5'>Linux</b>之PWM<b class='flag-5'>驱动</b>

    基于Linux使用spidev驱动OLED

    如果不想编写spi设备驱动,那么linux内核提供了一个通用的spidev设备驱动,提供统一的字符设备操作,那么只需要在应用层读写和控制即可。以SPI OLED为例子,使用
    发表于 06-16 10:36 2720次阅读
    基于<b class='flag-5'>Linux</b>使用<b class='flag-5'>spidev</b><b class='flag-5'>驱动</b>OLED

    LED驱动电源灌封胶的使用方法

    客户并不了解LED驱动电源灌封胶的使用方法,现在由高导小编为大家讲解下关于LED驱动电源灌封胶的使用方法:  1、混合前:A、B 组分先分别用手动或机械进行充分搅拌,避免因为填料沉降而
    发表于 01-11 10:56

    LED驱动电源灌封胶的使用方法

    LED驱动电源灌封胶的使用方法LED驱动电源灌封胶适用于一般电子元器件、电源模块和线路板的灌封保护,以及各种电子电器的灌封,如开关电源、驱动电源、汽车HID灯模块电源、汽车点火系统模块
    发表于 02-15 10:22

    串行通信基础知识与UART驱动构件使用方法

    慕课苏州大学.嵌入式开发及应用.第二章.入门与软件框架.串行通信基础知识与UART驱动构件使用方法0 目录2 入门与软件框架2.1 串行通信基础知识与UART驱动构件使用方法2.1.1
    发表于 12-20 06:21

    简单分析linux内核中的结构体使用方法

    结构体的使用并不熟练,导致在linux开发中一头雾水。下面简单分析结构体的使用方法。1:结构体的定义struct 结构体名{ 成员列表; } 变量名列表;注意这里的变量名可以直接跟在后面也可以单独定义struct 结构体名 变量名 ;举例: ...
    发表于 01-19 08:26

    对高级驱动辅助系统的传感器的使用方法

    本文档介绍了对高级驱动辅助系统的传感器的使用方法,供网友参考。
    发表于 09-13 18:37 1次下载

    Linux设备驱动开发详解》第7章、Linux设备驱动中的并发控制

    Linux设备驱动开发详解》第7章、Linux设备驱动中的并发控制
    发表于 10-27 11:37 10次下载
    《<b class='flag-5'>Linux</b>设备<b class='flag-5'>驱动</b>开发详解》第7章、<b class='flag-5'>Linux</b>设备<b class='flag-5'>驱动</b>中的并发控制

    Embeded linux之buildroot的使用方法

    Embeded linux之buildroot使用方法
    发表于 05-15 14:10 3037次阅读
    Embeded <b class='flag-5'>linux</b>之buildroot的<b class='flag-5'>使用方法</b>

    Linux的QSPI驱动移植方法及验证方法

    本文主要讲述了Linux的QSPI驱动移植方法及验证方法
    的头像 发表于 04-14 10:20 2077次阅读
    <b class='flag-5'>Linux</b>的QSPI<b class='flag-5'>驱动</b>移植<b class='flag-5'>方法</b>及验证<b class='flag-5'>方法</b>

    Linux的PWM驱动框架及实现方法

    本文主要讲述了Linux的PWM驱动框架、实现方法驱动添加方法和调试方法
    的头像 发表于 05-14 15:24 1016次阅读
    <b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驱动</b>框架及实现<b class='flag-5'>方法</b>