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

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

3天内不再提示

IIO子系统是什么

麦辣鸡腿堡 来源:嵌入式Linux系统开发 作者:嵌入式Linux系统开 2023-07-30 11:48 次阅读

IIO子系统简介

IIO 全称是 Industrial I/O,翻译过来就是工业 I/O,大家不要看到“工业”两个字就觉得 IIO 是只用于工业领域的。大家一般在搜索 IIO 子系统的时候,会发现大多数讲的都是 ADC,这是因为 IIO 就是为 ADC 类传感器准备的,当然了 DAC 也是可以的。大家常用的陀螺仪、加速度计、电压/电流测量芯片、光照传感器、压力传感器等内部都是有个 ADC,内部 ADC 将原始的模拟数据转换为数字量,然后通过其他的通信接口,比如 IIC、SPI 等传输给 SOC。

因此,当你使用的传感器本质是 ADC 或 DAC 器件的时候,可以优先考虑使用 IIO 驱动框架。

1、iio_dev 结构体

IIO 子系统使用结构体 iio_dev 来描述一个具体 IIO 设备,此设备结构体定义在include/linux/iio/iio.h 文件中

2、iio_dev 申请与释放

在使用之前要先申请 iio_dev,申请函数为 iio_device_alloc,函数原型如下:

struct iio_dev *iio_device_alloc(int sizeof_priv)

sizeof_priv:私有数据内存空间大小,一般我们会将自己定义的设备结构体变量作为 iio_dev 的私有数据,这样可以直接通过 iio_device_alloc 函数同时完成 iio_dev 和设备结构体变量的内存申请。申请成功以后使用 iio_priv 函数来得到自定义的设备结构体变量首地址。

返回值:如果申请成功就返回 iio_dev 首地址,如果失败就返回 NULL。

3、iio_dev 注册与注销

前面分配好 iio_dev 以后就要初始化各种成员变量,初始化完成以后就需要将 iio_dev 注册 到内核中,需要用到 iio_device_register 函数

4、iio_info

iio_dev 有个成员变量:info,为 iio_info 结构体指针变量,这个是我们在编写 IIO 驱动的时候需要着重去实现的,因为用户空间对设备的具体操作最终都会反映到 iio_info 里面。iio_info结构体定义在 include/linux/iio/iio.h 中

5、iio_chan_spec

IIO 的核心就是通道,一个传感器可能有多路数据,比如一个 ADC 芯片支持 8 路采集,那么这个 ADC 就有 8 个通道。Linux 内核使用 iio_chan_spec 结构体来描述通道,定义在 include/linux/iio/iio.h 文件中。

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

    关注

    2548

    文章

    50656

    浏览量

    751796
  • 子系统
    +关注

    关注

    0

    文章

    109

    浏览量

    12383
收藏 人收藏

    评论

    相关推荐

    请问IIO软件是做什么的?

    IIO软件是做什么的?刚接触AD9361,SD卡中的系统带的软件,可我看了半天,不知道具体该怎么设置波形,还有设置好的波形是输出波形,还是输入波形啊?
    发表于 08-03 06:58

    HC-SR04超声波测距模块调试方法

    ;okay";};2. 驱动编写,笔者在iio子系统下进行驱动编写,在路径 kernel/drivers/iio/下创建ultrasonic/,参考这款传感器的规格书,下面是部分驱动代码
    发表于 02-14 16:16

    请问IIO Oscilloscope master代码在linux系统下怎么打开

    `目前在学IIO Oscilloscope,在ubuntu系统下,不知道github下载的IIO Oscilloscope master代码怎么打开,百度教程没有找到,希望谁知道帮忙解答一下,万分感激!!谢谢!!`
    发表于 02-27 12:09

    嵌入式Linux系统ADC按键驱动的相关资料分享

    设备树节点RK3308支持SAR-ADC,我们工程默认已经支持了该驱动,在rk3308.dtsi中可以找到节点:这个设备节点是在rk3308-evb-v10.dtsi中被开启的:3 应用3.1 了解IIO子系统IIO
    发表于 12-24 08:24

    【OpenHarmony资料合集】Sensor子系统/图形子系统/Ability子系统介绍

    1、OpenHarmony资料合集之Sensor子系统  人类获取外界信息必须借助于感觉器官,而在研究自然现象和规律以及生产活动仅靠感官已经远远不够了,为了适应这种情况,出现了传感器。随着物联网
    发表于 03-14 16:35

    rk3288平台上的adc驱动使用步骤与方法

    adc现在使用了iio子系统,文件位置位于driver/iio/adc/rockchip_adc.c设备树文件、adc: adc@ff100000 {compatible = "
    发表于 05-11 10:16

    分享一下如何在用户空间操作IIO设备

    1、手把手教如何用Linux下IIO设备  IIO是 Industrial I/O 的缩写,是Linux下为工业输入输出所设计的子系统。其主要目的是为模数转换 (ADC) 或数模转换 (DAC)或
    发表于 09-21 15:37

    请问IIO触发缓冲区如何使用?

    我使用 ASM330LHH 作为 Linux IIO。添加了源和 DTS。我们发现/sys/bus/iio也增加了一个设备。我还检查了从 sysfs 以直接模式读取数据。因此,我认为H/W连接
    发表于 01-04 09:11

    OpenHarmony:全流程讲解如何编写ADC平台驱动以及应用程序

    adc_iio_adapter.c决定,不可修改。adc_iio_adapter.c实际是对Linux IIO子系统进行操作来控制ADC。注意: channelNum:表示通道数量
    发表于 09-04 16:34

    Linux 开发IIO子系统入门

    前阵子工作上做了一些关于 ADC 的支持,由于现在 ADC 相关的支持都被移动到了 IIO (Industrial I/O) 子系统下,我查阅了一些关于 IIO 资料,包括书籍、文章、内核文档和代码
    的头像 发表于 10-27 10:44 4510次阅读
    Linux 开发<b class='flag-5'>IIO</b><b class='flag-5'>子系统</b>入门

    AD7606 mbed IIO应用程序

    AD7606 mbed IIO应用程序
    发表于 03-22 13:57 13次下载
    AD7606 mbed <b class='flag-5'>IIO</b>应用程序

    AD7280A IIO锂离子电池监控系统Linux驱动程序

    AD7280A IIO锂离子电池监控系统Linux驱动程序
    发表于 04-14 20:31 2次下载
    AD7280A <b class='flag-5'>IIO</b>锂离子电池监控<b class='flag-5'>系统</b>Linux驱动程序

    IIO示波器的应用

    IIO示波器的应用
    发表于 05-15 13:09 8次下载
    <b class='flag-5'>IIO</b>示波器的应用

    手把手教如何用Linux下IIO设备(附代码)

    IIO是 Industrial I/O 的缩写,是Linux下为工业输入输出所设计的子系统。其主要目的是为模数转换 (ADC) 或数模转换 (DAC) 或两者兼而有...
    发表于 01-25 16:01 1次下载
    手把手教如何用Linux下<b class='flag-5'>IIO</b>设备(附代码)

    IIO驱动框架创建和相关配置

    IIO驱动框架创建 分析 IIO 子系统的时候大家应该看出了,IIO框架主要用于 ADC 类的传感器,比如陀螺仪、加速度计、磁力计、光强度计等,这些传感器基本都是IIC 或者 SPI
    的头像 发表于 07-30 11:53 1351次阅读