linux IIO子系统使用说明

新的内核将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子系统的驱动分析这里不做说明,后续有时间的话会专门写个系列来介绍。

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值