linux iio


原文链接: linux iio
  1. 直接读取sys

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

  1. 通过外部硬件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

  1. 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

————————————————
版权声明:本文为CSDN博主「子子木」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xjq163/article/details/80790613

`