IIO DATA ACCESS IIO数据获取

只有两种方法可以使用IIO框架访问数据; 通过sysf通道进行一次性捕获,或通过IIO字符设备进行连续模式(触发缓冲)。

One-shot capture:单次获取

一次性数据捕获通过sysfs接口完成。 通过读取与通道对应的sysfs条目,您将仅捕获特定于该通道的数据。 给定一个带有两个通道的温度传感器:一个用于环境温度,另一个用于热电偶温度:

# cd /sys/bus/iio/devices/iio:device0

# cat in_voltage3_raw6646# cat in_voltage_scale0.305175781

通过将比例乘以原始值来获得处理值。

Voltage value: 6646 * 0.305175781 = 2028.19824053

器件数据表说过程值以mV给出。 在我们的例子中,它对应于2.02819V。

Buffer data access:缓冲区数据获取

要使触发的采集工作,必须在驱动程序中实现触发器支持。 然后,要从用户空间内获取数据,必须:创建触发器,分配它,启用ADC通道,设置缓冲区的维度,并启用它。这里主要介绍两种:sysfs触发器和hrtimer触发器。

使用sysfs触发器获取:

使用sysfs触发器捕获数据包括发送一组命令少量sysfs文件。 让我们列举一下我们应该做些什么来实现这一目标:

1. 创建触发器:在将触发器分配给任何设备之前,应该创建它:

# echo 0 > /sys/devices/iio_sysfs_trigger/add_trigger

这里,0对应于我们需要分配给触发器的索引。 在此命令之后,触发器目录将在/ sys / bus / iio / devices /下作为trigger0。

2. 将触发器分配给设备:触发器由其名称唯一标识,我们可以使用该触发器将设备绑定到触发器。 由于我们使用0作为索引,因此触发器将命名为sysfstrig0:

# echo sysfstrig0 > /sys/bus/iio/devices/iio:device0/trigger/current_t

我们也可以使用下面这个命令:cat /sys/bus/iio/devices/trigger0/name> /sys/bus/iio/devices/iio:device0/trigger/current_trigger. 也就是说,如果我们编写的值与现有的触发器名称不对应,则不会发生任何事情。 为了确保我们真正定义了一个触发器,我们可以使用cat/sys/bus/iio/devices/iio:device0/trigger/current_trigger.

3. 启用扫描元素:此步骤包括选择将其数据值推入缓冲区的通道。 应该注意驱动程序中的available_scan_masks:

# echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage5_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage6_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage7_en

4. 设置缓冲区大小:这里应该设置缓冲区可以保存的样本集数量:

# echo 100 > /sys/bus/iio/devices/iio:device0/buffer/length

5. 启用缓冲区:此步骤包括将缓冲区标记为准备接收推送数据:

# echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable

要停止捕获,我们必须在同一个文件中写入0。

6.使能触发器:启动采集:

# echo 1 > /sys/bus/iio/devices/trigger0/trigger_now

现在数据获取已经完成,下一步我们可以

7. 禁用缓冲区:

# echo 0 > /sys/bus/iio/devices/iio:device0/buffer/enable

8.分离触发器Detach the trigger:

# echo "" > /sys/bus/iio/devices/iio:device0/trigger/current_trigger

9.转储IIO字符设备的内容

# cat /dev/iio:device0 | xxd –

使用hrtimer触发器获取(4.5及以上内核版本)

以下是允许使用hrtimer触发器捕获数据的命令集:

# echo /sys/kernel/config/iio/triggers/hrtimer/trigger0

# echo50 > /sys/bus/iio/devices/trigger0/sampling_frequency

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage5_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage6_en

# echo1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage7_en

# echo1 > /sys/bus/iio/devices/iio:device0/buffer/enable

# cat/dev/iio:device0 | xxd -

0000000: 0188 1a30 0000 0000 8312 68a8 c24f 5a14 ...0......h..OZ.0000010: 0188 1a30 0000 0000 192d 98a9 c24f 5a14 ...0.....-...OZ.

[...]

然后,我们查看类型以确定如何处理数据:

$ cat /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage_type

be:s14/16>>2

Voltage processing: 0x188 >> 2 = 98 * 250 = 24500 = 24.5 v

IIO tools

您可以使用一些有用的工具来简化和加快使用IIO设备开发应用程序的速度。 它们在内核树中的tools / iio中可用:

lsiio.c:枚举IIO触发器,设备和通道

iio_event_monitor.c: 监视IIO设备的IIO事件的ioctl接口

generic_buffer.c: 检索,处理和打印从IIO设备缓冲区接收的数据

libiio: 一个功能强大的库,由模拟设备开发,用于接口IIO设备,可从https://github.com/analogdevicesinc/libiio获得。

linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取-Go语言中文社区...相关推荐

  1. xshell下载mysql到本地文件_在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹)-Go语言中文社区...

    在Xshell中上传下载文件到本地(linux中从多次ssh登录的dbserver里面的文件夹) 1 列出所有需要copy的sh文件 -bash-4.1$ ll /mysqllog/osw/*.sh ...

  2. 编译高性能linux so库,关于如何在linux环境下生成a库和so库(改,附图)-Go语言中文社区...

    一般linux环境下的链接库分为a库和so库,分别表示静态链接库和动态链接库,其作用是把C程序编译好做成一种可执行链接文件,c主程序文件调用这些程序的函数接口是可以使用a库或so库,在主程序中只需要i ...

  3. linux iio 设备驱动,Linux设备驱动之IIO子系统——IIO框架数据读取,linuxiio

    Linux设备驱动之IIO子系统--IIO框架数据读取,linuxiio IIO DATA ACCESS IIO数据获取 只有两种方法可以使用IIO框架访问数据; 通过sysf通道进行一次性捕获,或通 ...

  4. linux内核字符驱动设备,Linux学习笔记——linux内核字符设备驱动-Go语言中文社区...

    尝试在树莓派安装的raspbian系统上进行linux字符设备驱动 1.更新安装kernel header源码 sudo apt-get update sudo apt-get install ras ...

  5. zynq Linux软件中断,zynq7010 在 linux 系统下 irq_f2p 中断驱动-Go语言中文社区

    1 说明 zynq 平台,需要用到 pl (FPGA)端发送中断给 ps端(ARM),发送的中断名称为 IRQ_F2P[15:0],该中断一共有16个,中断号分别为 61-68, 84-91.本文针对 ...

  6. Linux文件系统中文版,Linux 文件系统-Go语言中文社区

    文件系统: rootfs: 根文件系统 FHS: linux /boot : 系统启动相关的文件,如内核,initrd, 以及grub(bootloader) /dev : 设备文件 设备文件: 块设 ...

  7. go移植linux内核书名叫啥,嵌入式 Linux根文件系统移植之Linux文件系统简介-Go语言中文社区...

    学号:16020311003    姓名:杨虎成 [嵌牛导读]Linux支持多种文件系统,文件系统接口实现为分层的体系结构,将用户接口层.文件系统实现和操作存储设备的驱动程序分隔开 [嵌牛鼻子]Lin ...

  8. linux 安装centos7,linux CentOs7 安装 Autojump 方便高效省事-Go语言中文社区

    一.简介 autojump是一个命令行工具,它允许你可以直接跳转到你喜爱的目录,而不用管你现在身在何处. 有多种安装手法,但我只推荐我接下来介绍的一种: 首先确定你的系统开启EPEL保证有软件包源(在 ...

  9. android电视盒子设备名字,Android电视TV盒子开发——常用ADB命令-Go语言中文社区...

    目前智能电视(TV).盒子(机顶盒)基本都是Android系统,所以开发盒子app的重任自然就会落到我们这些苦逼Android程序员身上. PS:目前盒子的Android版本绝大部分还都是在6.0以下 ...

最新文章

  1. 利用SQL Server EXISTS结构
  2. 一起学nRF51xx 15 - spis
  3. windows下安装nodejs、webpack及打包步骤
  4. Redis的内存淘汰策略
  5. python一元三次方程拟合_一元三次方程的求根公式
  6. 为人示弱,做事留余 | 摸鱼系列
  7. ASP.NET Core跨域设置
  8. mariadb数据库增删改查
  9. 对Chrome自动发送邮件插件的改进
  10. Go-技篇第二 命名规范
  11. python基础作业_017--python基础作业
  12. AutoCAD2004下载AutoCAD2004中文版安装教程
  13. 百度SEO站群全网音乐搜索下载网站源码
  14. Origin8画图:画百分比堆积柱形图
  15. 股票量化实盘交易接口如何做回测?
  16. 攻防世界-web-mfw
  17. VUE.js组件通信精髓归纳(基础篇)
  18. 程序员的键盘 ikbc poker3 使用心得
  19. Gentoo无线网卡安装之broadcom-sta(wl)篇(三)
  20. lammps胶体输出的日志文件

热门文章

  1. python去掉空白行_python去掉空白行的多种实现代码
  2. wpf 点击按钮弹出选择框_关于WPF的弹出窗口
  3. python notebook软件_Jupyter notebook快速入门教程(推荐)
  4. pythonsuper函数_怎么使用python super函数调用父类
  5. 一块GPU模拟猴子大脑,普通台式机变超算,英国大学研究登上Nature子刊
  6. 每天中一次500万彩票,谷歌CEO 2019薪酬曝光,总计2.81亿美元
  7. 查询linux服务器事物传输失败日志,查看fail2ban日志代替lastb查看登录失败记录
  8. 500张思维导图记38000单词_思维导图记单词,环环相扣难遗忘——2020奇速英语夏令营第三天...
  9. 【转载保存】Lucene7.1.0超详细的使用文档
  10. TextRank、BM25算法提取关键字、文章自动摘要优秀文章保存