新的内核将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. 数据结构与算法:04 C#面向对象设计 II
  2. WCF RIA Service实体类中发复杂类型
  3. limit mysql 性能_MySQL 用 limit 为什么会影响性能?
  4. boost::geometry::strategy::distance::thomas用法的测试程序
  5. linux篇:查看Linux版本号
  6. thrift服务windows环境编译失败
  7. 分析 C# 2.0 新特性 -- 空类型(Nullable Types)
  8. TIOBE 2月编程语言排行榜新鲜出炉!C# 获3.08%增长率!
  9. 数据结构-树3-红黑树
  10. 【12-05】面试题
  11. 【java学习之路】(java SE篇)(练习)集合练习:经典例题
  12. c语言利用fun求最小值,2015年计算机二级《C语言》精选练习题及答案(1)
  13. h264和aac 封装成flv
  14. 【GMS认证】关于GSI和VTS解锁刷镜像命令总结
  15. jlink烧写linux内核,如何利用JLINK烧写U-boot到NAND Flash中
  16. arris sbr-ac1900p/sbr-ac3200p梅林固件
  17. 金山小火车【转自官网】(如果错误,请留言)
  18. 宽带连接连接被远程计算机终止win10,Win10宽带无法连接提示“调制解调器报告了一个错误”怎么解决?...
  19. 如何利用渠道码活码精准引流
  20. WTL_Freecell-Release05-v1.3-20190129 (WTL空当接龙v1.3)

热门文章

  1. JZOJ5399. 【NOIP2017提高A组模拟10.7】Confess bitset
  2. 人脸对齐LBF(二)
  3. 计算机病毒中英文,计算机网络病毒与防范 中英文.doc
  4. 怎么将CAD转换为JPG格式?CAD格式转换轻松教你搞定!
  5. squid代理-----透明代理模式
  6. Go语言教程[一、Go语言概述]
  7. 发现无法解决的相同从属程序集的不同版本之间的冲突
  8. 生成带参数的2维码(微信2次开发)
  9. 自然语言处理简介(1)---- 服务梳理与传统汉语分词
  10. Caused by: java.lang.NullPointerException: Location is required解决办法