哪里去找做的好看的网站,凡科建站如何制作论坛,广告推广软文案例,建设银行梅李分行网站IIO DATA ACCESS IIO数据获取只有两种方法可以使用IIO框架访问数据; 通过sysf通道进行一次性捕获#xff0c;或通过IIO字符设备进行连续模式(触发缓冲)。One-shot capture#xff1a;单次获取一次性数据捕获通过sysfs接口完成。 通过读取与通道对应的sysfs条目#xff0c;您…IIO DATA ACCESS IIO数据获取只有两种方法可以使用IIO框架访问数据; 通过sysf通道进行一次性捕获或通过IIO字符设备进行连续模式(触发缓冲)。One-shot capture单次获取一次性数据捕获通过sysfs接口完成。 通过读取与通道对应的sysfs条目您将仅捕获特定于该通道的数据。 给定一个带有两个通道的温度传感器一个用于环境温度另一个用于热电偶温度# cd /sys/bus/iio/devices/iio:device0# cat in_voltage3_raw6646# cat in_voltage_scale0.305175781通过将比例乘以原始值来获得处理值。Voltage value: 6646 * 0.305175781 2028.19824053器件数据表说过程值以mV给出。 在我们的例子中它对应于2.02819V。Buffer data access缓冲区数据获取要使触发的采集工作必须在驱动程序中实现触发器支持。 然后要从用户空间内获取数据必须创建触发器分配它启用ADC通道设置缓冲区的维度并启用它。这里主要介绍两种sysfs触发器和hrtimer触发器。使用sysfs触发器获取使用sysfs触发器捕获数据包括发送一组命令少量sysfs文件。 让我们列举一下我们应该做些什么来实现这一目标1. 创建触发器在将触发器分配给任何设备之前应该创建它# echo 0 /sys/devices/iio_sysfs_trigger/add_trigger这里0对应于我们需要分配给触发器的索引。 在此命令之后触发器目录将在/ sys / bus / iio / devices /下作为trigger0。2. 将触发器分配给设备触发器由其名称唯一标识我们可以使用该触发器将设备绑定到触发器。 由于我们使用0作为索引因此触发器将命名为sysfstrig0# echo sysfstrig0 /sys/bus/iio/devices/iio:device0/trigger/current_t我们也可以使用下面这个命令cat /sys/bus/iio/devices/trigger0/name /sys/bus/iio/devices/iio:device0/trigger/current_trigger. 也就是说如果我们编写的值与现有的触发器名称不对应则不会发生任何事情。 为了确保我们真正定义了一个触发器我们可以使用cat/sys/bus/iio/devices/iio:device0/trigger/current_trigger.3. 启用扫描元素此步骤包括选择将其数据值推入缓冲区的通道。 应该注意驱动程序中的available_scan_masks# echo 1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage5_en# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage6_en# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage7_en4. 设置缓冲区大小这里应该设置缓冲区可以保存的样本集数量# echo 100 /sys/bus/iio/devices/iio:device0/buffer/length5. 启用缓冲区此步骤包括将缓冲区标记为准备接收推送数据# echo 1 /sys/bus/iio/devices/iio:device0/buffer/enable要停止捕获我们必须在同一个文件中写入0。6.使能触发器启动采集# echo 1 /sys/bus/iio/devices/trigger0/trigger_now现在数据获取已经完成下一步我们可以7. 禁用缓冲区# echo 0 /sys/bus/iio/devices/iio:device0/buffer/enable8.分离触发器Detach the trigger:# echo /sys/bus/iio/devices/iio:device0/trigger/current_trigger9.转储IIO字符设备的内容# cat /dev/iio:device0 | xxd –使用hrtimer触发器获取(4.5及以上内核版本)以下是允许使用hrtimer触发器捕获数据的命令集# echo /sys/kernel/config/iio/triggers/hrtimer/trigger0# echo50 /sys/bus/iio/devices/trigger0/sampling_frequency# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage4_en# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage5_en# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage6_en# echo1 /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage7_en# echo1 /sys/bus/iio/devices/iio:device0/buffer/enable# cat/dev/iio:device0 | xxd -0000000: 0188 1a30 0000 0000 8312 68a8 c24f 5a14 ...0......h..OZ.0000010: 0188 1a30 0000 0000 192d 98a9 c24f 5a14 ...0.....-...OZ.[...]然后我们查看类型以确定如何处理数据$ cat /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage_typebe:s14/162Voltage processing: 0x188 2 98 * 250 24500 24.5 vIIO tools您可以使用一些有用的工具来简化和加快使用IIO设备开发应用程序的速度。 它们在内核树中的tools / iio中可用lsiio.c枚举IIO触发器设备和通道iio_event_monitor.c: 监视IIO设备的IIO事件的ioctl接口generic_buffer.c: 检索处理和打印从IIO设备缓冲区接收的数据libiio: 一个功能强大的库由模拟设备开发用于接口IIO设备可从https://github.com/analogdevicesinc/libiio获得。