linux iio
- 直接读取sys
以下方式使用软件写入start的方式,每次触发一次采样
cat /sys/bus/iio/devices/iio:device0/xxx_raw
- 通过外部硬件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
- 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