新的内核将ADC/DAC/G_sensor这样的设备统一成IIO子系统,用户层通过访问IIO的接口来实现如ADC的触发、采样等操作。

下面给出IIO接口用户层的接口使用实例(以ADC的采样为例)

1. 方法一:直接读取/sys下的接口

以下方式使用软件写入start的方式,每次触发一次采样
$cat /sys/bus/iio/devices/iio:device0/in_voltagex_raw

这里的x代码不同的通道

获取scale:

$cat /sys/bus/iio/devices/iio\:device0/in_voltage_scale

实际的电压值 = in_voltagex_raw * scale

2. 方法二:通过ADC外部硬件trigger自动读取

这种方式下,每次ADC的触发都需要ADC的trg引脚的电平变化进行

//使能采样通道
$echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en
$cat trigger0/name
//这里读取trigger的名字,作为下一步的输入,名字不匹配将导致cerrent_trigger激活失败
$ echo fc030000.adc-dev0-external_rising > /sys/bus/iio/devices/iio:device0/trigger/current_trigger
$ echo 100 > /sys/bus/iio/devices/iio:device0/buffer/length
$ echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable

$cat /dev/iio:device0 > /var/adc.bin
每次手动触发adc的外部trigger引脚,上升沿触发,即可得到十六进制的ad采样数据

另外ADC时钟可以通过以下方式设定:

$echo freq > /sys/bus/iio/devices/iio:device0/samping_freq

3. 方法三:sys trigle

这种方式下直接通过软件即可进行一次adc采样触发,不用等待方法二中的外部触发引脚的改变

a. 内核配置里面选中
 <*>   SYSFS trigger

内核会创建iio_sysfs_trigger 目录

b.

$echo 123 > /sys/bus/iio/devices/iio_sysfs_trigger/add_trigger

这时会在device目录下创建 trigger1 目录,这里trigger0 是默认的硬件触发用的trigger

$echo sysfstrig123 > /sys/bus/iio/devices/iio:device0/trigger/current_trigger
$echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en
$ echo 100 > /sys/bus/iio/devices/iio:device0/buffer/length
$ echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable

这样每次执行

$echo 1 > /sys/bus/iio/devices/trigger1/trigger_now  就会进行一次采样

注意,trigger0目录下是没有trigger_now

关于iio子系统的驱动分析这里不做说明,后续有时间的话会专门写个系列来介绍。

linux IIO子系统使用说明相关推荐

  1. 【转】 linux iio子系统

    原文网址:http://blog.csdn.net/tsy20100200/article/details/47101661 最近由于工作的需要,接触了Linux iio子系统,对于这个目录其实以前是 ...

  2. Linux的iio数据流程,linux iio子系统

    转自http://blog.csdn.net/tsy20100200/article/details/47101661 最近由于工作的需要,接触了Linux iio子系统,对于这个目录其实以前是很少接 ...

  3. LINUX IIO子系统分析之五IIO BUFFER子模块实现分析

    上一章我们介绍了iio子系统中的iio event模块,本章我们将介绍iio buffer模块,iio buffer主要用于连续数据采集与缓存功能.IIO buffer模块借助IIO DEVICE字符 ...

  4. 一文带你深入了解Linux IIO 子系统

    [推荐阅读] 一文剖析Linux内核中内存管理 分析linux启动内核源码 关于如何快速学好,学懂Linux内核.内含学习路线 工业场合里面也有大量的模拟量和数字量之间的转换,也就是我们常说的 ADC ...

  5. LINUX IIO子系统分析之二 IIO子系统相关数据结构分析

    上一章我们简要说明了IIO子系统的架构,本章我们通过数据结构的定义,分析IIO子系统的设计实现,本章的主要内容如下: 一.IIO子系统各数据结构说明 二.数据结构间的关联说明 一.IIO子系统各数据结 ...

  6. LINUX IIO子系统分析之一 IIO子系统概述

    从本章开始,我们进行IIO子系统专栏的分析文档,本次IIO子系统专栏分析文档大概包含如下几章: 一. IIO子系统概述 二.IIO子系统相关数据结构分析 三.iio trigger 介绍 四.iio ...

  7. LINUX IIO子系统分析之七 虚拟iio device驱动实现

    前面几章我们基本完成了IIO子系统的所有内容,而该章即为本专栏的结束篇,主要用来实现一个虚拟的IIO DEVICE DRIVER,本章的内容主要包括如下几部分: 一. 虚拟IIO DEVICE的说明 ...

  8. LINUX IIO子系统分析之四 IIO EVENT介绍

    上一章我们介绍了iio子系统中的iio trigger模块,本章我们将介绍iio event模块,iio event主要用于阈值监测.自由落体监测等监测功能.因为IIO EVENT涉及IIO DEVI ...

  9. LINUX IIO子系统分析之六 iio device的驱动开发流程说明

    前面五章我们基本上把IIO 子系统的内部设计实现均作了说明,本章我们将说明iio device的驱动开发流程,本章的主要内容大致安排如下: 一.IIO子系统的关键技术点总结 二.IIO DEVICE的 ...

最新文章

  1. 一张图解释什么是遗传算法_一张图告诉你什么叫真正的满配m416,吃鸡玩家看懵了...
  2. Linux下编译build的命令,Linux命令行下编译Android NDK的示例代码
  3. 【springmvc+mybatis项目实战】杰信商贸-6.重点知识回顾
  4. 2020-09-16 如何在matlab figure中对latex符号进行大写操作
  5. java与android https,java – Https连接Android
  6. php代码丑,php – 屏幕截图你生命中见过的最丑陋的HTML
  7. 脉冲神经网络的开发公司AI-CTX
  8. 九里机器人_电子科技大学九里堤校区青少年科教基地为农民工留守子女开展科技讲学公益活动...
  9. tesseract 提升识别质量
  10. 双机热备的缺点_弱电工程中的双机热备是什么?带你了解服务器双机热备
  11. QCon思考之通过Quora和Spotify案例,直击数据处理背后的魅影
  12. 自定义一个ImageSwitcher
  13. python语法学习第五天--lambda表达式、filter()、map()
  14. python识别字符串码置_python 字符串内置方法整理
  15. Windows System32下常见快捷指令
  16. 微信小程序:开心锤锤超火动态表情包微信小程序源码下载自动采集
  17. 安卓开发 投屏安卓设备到电脑端 scrcpy
  18. 2020-12-03《Presto分布式SQL查询引擎——kkb笔记复习》
  19. C++实现TTS文字语音朗读Microsoft Speech SDK
  20. 喝一碗孟婆汤,走一回奈何桥(FLASH转载)

热门文章

  1. 薪酬福利管理太复杂?有实在RPA就够了
  2. 【内核调度、负载均衡】【load_balance】
  3. 电影垂直社交,移动电影院App先行
  4. T1042 查看 MAC、BMI、QMI寄存器, 查看DPAA丢包情况
  5. 数据库管理 第3关:授权1
  6. 怎样编辑pdf文件的贝茨编号
  7. 【蓝桥杯省赛JavaB组真题详解】数字三角形(2020)
  8. 大塚化学接管Astellas制药的部分头孢克肟业务
  9. 实战 | 巧用位姿解算实现单目相机测距
  10. call、apply、bind的联系和区别