1458|5

248

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【Luckfox幸狐 RV1106 Linux 开发板】6-ADC测试 [复制链接]

 
本帖最后由 qiao--- 于 2024-2-19 15:45 编辑

前言:本期测评ADC的功能。在Linux系统中有一个框架是专门管理传感器ADC等模拟量的框架,他就是IIO框架。IIO(Industrial I/O)框架是一个用于Linux系统的通用I/O子系统,用于管理和控制各种工业设备和传感器。IIO 子系统通过 sysfs 文件系统和用户空间提供了统一的接口,允许用户轻松地访问和配置模拟设备。这意味着应用程序可以使用标准的 Linux 文件I/O操作来与传感器和模拟设备进行通信。

 

 

Luckfox幸狐 RV1106 Linux 开发板的引脚分布图如下,我圈出的两个引脚具有ADC的功能。

  开发板默认开启了 ADC 接口,测量范围为0V~1.8V,我们用串口登录到系统可以查看对应IIO的文件系统接口,他在文件系统的/sys/bus/iio/devices/目录下

 

这个IIO设备下记录着这个设备的一些相关属性,我们可以进去查看一下

 

在这个目录中,主要用到的文件是in_voltage0_raw 、 in_voltage1_raw 和 in_voltage_scale这三个文件,其中in_voltage0_raw和in_voltage1_raw文件分别记录着上面我们所查看的两个引脚的电压值,而in_voltage_scale 文件包含了一个比例因子,可以将原始电压值转换为实际电压值。可以使用cat命令查看他是多少

 

为了方面编写测试程序,这里我选择用脚本的方式来编写示例代码,这样的好处是我们只需要在板子的终端上编写代码,而不需要去交叉编译。

而我们的示例代码也非常的简单,我们只需要读取in_voltage0_raw 、 in_voltage1_raw 这两个文件里面的数值,然后再将他们与比例因子相乘就是实际电压值了。

我们在系统中新建一个adc_tset.sh脚本

 

编写如下的脚本,脚本的功能就是读取in_voltage0_raw 、 in_voltage1_raw 这两个文件里面的数值,然后再将他们与比例因子相乘打印出来

 

脚本代码:

#!/bin/sh

echo "Press Ctrl+C to quit"
ADC_DIR="/sys/bus/iio/devices/iio:device0"

while true
do
    scale_value=$(cat "$ADC_DIR/in_voltage_scale")
    IN0_raw_value=$(cat "$ADC_DIR/in_voltage0_raw")
    IN1_raw_value=$(cat "$ADC_DIR/in_voltage1_raw")
    IN0_voltage=$(awk -v raw="$IN0_raw_value" -v scale="$scale_value" 'BEGIN { printf "%.6f\n", raw * scale / 1000 }')
    IN1_voltage=$(awk -v raw="$IN1_raw_value" -v scale="$scale_value" 'BEGIN { printf "%.6f\n", raw * scale / 1000 }')
    echo "IN0_Voltage: $IN0_voltage V,IN1_Voltage: $IN1_voltage V"
    sleep 1
done

赋予这个脚本可执行的权限

 chmod 777 adc_test.sh

最后运行这个脚本即可看到如下的实验现象:

 

视频效果如下:

IMG_8520

 

总结:通过对系统IIO设备接口的读写可以轻松的读取io通道的实际电压。

最新回复

IIO做一些数据状态还可以,我们实际项目使用也不会改,直接C++里面调用文件读取获得这个值,低频操作   详情 回复 发表于 2024-2-21 09:28
点赞(1) 关注(1)
 
 

回复
举报

7244

帖子

2

TA的资源

版主

沙发
 

看结果好像漂移不是很厉害,mV级别的漂移。

点评

感觉还好,算1.8V挺稳定的 [attachimg]787236[/attachimg]    详情 回复 发表于 2024-2-20 16:24
 
 
 

回复

248

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
wangerxian 发表于 2024-2-19 18:04 看结果好像漂移不是很厉害,mV级别的漂移。

感觉还好,1.8V算挺稳定的

 

点评

可以测试一下采样率最快能达到多少。  详情 回复 发表于 2024-2-20 17:18
 
 
 

回复

7244

帖子

2

TA的资源

版主

4
 
qiao--- 发表于 2024-2-20 16:24 感觉还好,1.8V算挺稳定的  

可以测试一下采样率最快能达到多少。

 
 
 

回复

365

帖子

0

TA的资源

版主

5
 

IIO做一些数据状态还可以,我们实际项目使用也不会改,直接C++里面调用文件读取获得这个值,低频操作

点评

是这样的    详情 回复 发表于 2024-2-29 19:05
 
 
 

回复

248

帖子

0

TA的资源

纯净的硅(初级)

6
 
LitchiCheng 发表于 2024-2-21 09:28 IIO做一些数据状态还可以,我们实际项目使用也不会改,直接C++里面调用文件读取获得这个值,低频操作

是这样的

 

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表