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

    文章

    11373

    浏览量

    211295
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1731

    浏览量

    92845
  • 总线
    +关注

    关注

    10

    文章

    2914

    浏览量

    88695

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

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

收藏 人收藏

    评论

    相关推荐

    Linux系统中的Makefile的使用方法

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

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

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

    Linux之PWM驱动

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

    基于Linux使用spidev驱动OLED

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

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

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

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

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

    HT46R94内建LED驱动功能最佳使用方法

    HT46R94内建LED驱动功能最佳使用方法
    发表于 04-11 08:43 27次下载

    IGBT驱动模块EXB841使用方法的改进

    IGBT驱动模块EXB841使用方法的改进 摘要: 本文对目前在电力电子技术中广泛使用的IGBT驱动模块EXB841的使用方法进行了改进,克服了EXB841本身的缺陷,提高了保护
    发表于 05-08 15:11 84次下载

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

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

    LINUX内核与驱动的最新编译方法

    linux源码树的驱动目录增加自己的驱动目录,比如:现在新增一个网络设备驱动
    发表于 05-08 14:42 1799次阅读

    Embeded linux之buildroot的使用方法

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

    利用Linux开发板为TLV320ADC5120开发Linux内核驱动方法

    利用Linux开发板为TLV320ADC5120开发Linux内核驱动方法
    发表于 10-28 11:59 0次下载
    利用<b class='flag-5'>Linux</b>开发板为TLV320ADC5120开发<b class='flag-5'>Linux</b>内核<b class='flag-5'>驱动</b>的<b class='flag-5'>方法</b>

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

    本文主要讲述了Linux的QSPI驱动移植方法及验证方法
    的头像 发表于 04-14 10:20 3492次阅读
    <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 1595次阅读
    <b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驱动</b>框架及实现<b class='flag-5'>方法</b>

    linux驱动程序的编译方法是什么

    Linux驱动程序的编译方法主要包括两种: 与内核一起编译 和 编译成独立的内核模块 。以下是对这两种方法的介绍: 一、与内核一起编译 与内核一起编译意味着将
    的头像 发表于 08-30 14:46 858次阅读