IOT-9608I-L ADC端口的使用(连续采样ADC值)

目录

概述

1 硬件介绍

1.1 认识硬件

 1.2 引脚信号定义

2 软件功能实现

2.1 查看iio:device0下的接口信息

2.2 实现连续采样ADC

2.2.1 功能描述

2.2.2 代码实现

2.2.3 详细代码

3 测试


概述

本文主要讲述IOT-9608I-L ADC端口的使用方便,其内容包括板卡上的硬件接口位置,以及内核中驱动的查看方法。还通过编写一个案例以验证ADC使用的方法,并测试器输出的log内容。

1 硬件介绍

1.1 认识硬件

IoT-9608提供8路模拟量输入,连接器为2×5Pin, 2.54mm间距的简易牛角座,主板上的标志为“ADC”,工位为J5。

 1.2 引脚信号定义

IoT-9608提供8路模拟量输入,其中pin-10为电源地信号线。

引脚名称说明引脚名称说明
1AI_0模拟量输入通道 02AI_1模拟量输入通道 1
3AI_2模拟量输入通道 24AI_3模拟量输入通道 3
5AI_4模拟量输入通道 46AI_5模拟量输入通道 5
7AI_6模拟量输入通道 68AI_7模拟量输入通道 7
9NC未连接10GND系统电源地

2 软件功能实现

Linux 的 ADC 在应用层上可以直接操作/sys/bus/iio/devices/iio:device0/目录的文件,而对于 Linux 的 ADC 操作有两种模式,一种是单次读取模式,第二种是多次读取模式。

2.1 查看iio:device0下的接口信息

使用命令:

cd /sys/bus/iio/devices/iio:device0/

执行命令之后,可以看见如下信息: 

2.2 实现连续采样ADC

2.2.1 功能描述

使用IoT-9608的ADC接口通道4,实现多次连续采样功能。具体要求如下:

1)读取ADC RAW count值

2)将RAW count转换为实际电压值

3)终端上打印ADC的raw count值和实际电压值

2.2.2 代码实现

创建IOT_9608_ADC_Test.c,并编写如下代码:

代码第29行: 打开ADC通道文件

代码第30行:读取当前通道的ADC raw count

代码第32行:将读到的数值转换为实际的电压值

代码第33行: 打印数据到终端

2.2.3 详细代码

1)测试代码:

/***************************************************************
Copyright  2024-2029. All rights reserved.
文件名     : IOT_9608_ADC_Test.c
作者       : tangmingfei2013@126.com
版本       : V1.0
描述       : IOT_9608 ADC测试程序
其他       : 无
日志       : 初版V1.0 2024/04/23
***************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define   FILE_ADC_PATH   "/sys/bus/iio/devices/iio:device0/in_voltage4_raw"int main()
{int cnt = 0;int count = 100;FILE  *fd=NULL;char strValue[5];int value;float adc;while(count--){fd=fopen(FILE_ADC_PATH,"r");fscanf(fd,"%s",strValue);   //读端口的ADC值value=atoi(strValue);adc=((float)value/4096.0)*3.3;printf("%03d  row count = %s adc=%.4fV\n",cnt, strValue, adc);fclose(fd);sleep(1);cnt++;}return 0;
}

2)测试代码的Makefile

#!/bin/sh
all:arm-none-linux-gnueabi-gcc IOT_9608_IO_Test.c -o adc-test02clean:rm -f adc-test*

3 测试

编译代码,然后将生成的可执行文件共享到nfs目录中

1) 挂载nfs命令:

mount -t nfs 192.168.1.193:/home/nfsroot /mnt -o nolock

2)执行文件

通过调节电阻的值,采集到ADC的数值也会随着调节幅度而变化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8040.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

无人机运营合格证:民用无人机驾驶航空器运营合格证书

无人机运营合格证是指经国家相关部门审核通过并颁发给相应无人驾驶航空器运营机构的一种资质证明。获得该证书的机构具备相关的技术和管理能力&#xff0c;能够安全、合规地运营无人驾驶航空器。 无人机运营合格证的申请流程一般包括报名、培训学习、考试准备、考试报名、考试…

fabric搭建生产网络

fabric搭建生产网络 一、生成组织结构与身份证书 解包 hyperledger-fabric-linux-amd64-2.5.0.tar.gz 1.1、crypto-config.yaml配置文件 ./bin/cryptogen showtemplate > crypto-config.yaml 将crypto-config.yaml内容修改为&#xff1a; # -------------------------…

网络基础-默认网关

默认网关&#xff0c;又称缺省网关&#xff0c;缺省路由器&#xff1b;它是指在一个连接两个不同网络的设备&#xff0c;为网关设备&#xff1b;当主机需要发送数据包到另一个子网或者另一个网络时&#xff0c;它会首先检查目标地址是否在本地子网内&#xff1b;如果不在本地子…

【C++干货基地】揭秘C++STL库的魅力:stiring的初步了解和使用

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

分布式与一致性协议之ZAB协议(六)

ZAB协议 成员发现 成员发现是通过跟随者和领导者交互来完成的&#xff0c;目标是确保大多数节点对领导者的关系没有异议&#xff0c;也就是确立领导者的领导地位。成员发现的实现流程如图所示。 1.领导者选举结束&#xff0c;节点进入跟随者状态或者领导者状态后&#xff0…

快速搭建linux虚拟机环境

1、虚拟机资源 VMwareWorkstation&#xff1a;Download VMware Workstation Pro virtualbox&#xff1a;Oracle VM VirtualBox 2、虚拟机系统资源 链接&#xff1a;系统资源链接 提取码&#xff1a;0gat 说明&#xff1a;此处的系统资源是采用VMwareWorkstation 虚拟机进…

简单两步将Lllama、Qwen等开源大模型安装到自己的电脑上

现在已经有非常多优秀的开源大语言模型了&#xff0c;比如Command R、Mistral、Qwen、MiniMax、Baichuan、Phi3等&#xff0c;其中Lllama3和Qwen等已经和GPT4的性能比较接近了。 如果能把这些免费的开源大模型部署到本地电脑或手机上&#xff0c;可以完全自由的使用&#xff0…

深入探索van Emde Boas树:原理、操作与C语言实现

van Emde Boas (vEB) 树是一种高效的数据结构&#xff0c;用于处理整数集合。它是由荷兰计算机科学家Jan van Emde Boas在1977年提出的。vEB树在处理整数集合的查找、插入、删除和迭代操作时&#xff0c;能够以接近最优的时间复杂度运行。vEB树特别适合于那些元素数量在某个较小…

【边东随笔】(2) “顶级掠食者” 的生存智慧:信心 | 狠心 | 耐心

&#xff08;北美鳄龟, Alligator Snapper&#xff09; "优雅&#xff0c;且致命。" 非常谨慎&#xff0c;在水域中会先找到躲避将自身安置于有利地形。浮出水面换气&#xff0c;水体稍有异动就会退回水中&#xff0c;优秀掠食者对自身优势牢牢的把握&#xff08; 信…

hadoop学习---基于Hive的教育平台数据仓库分析案例(二)

衔接第一部分&#xff0c;第一部分请点击&#xff1a;基于Hive的教育平台数据仓库分析案例&#xff08;一&#xff09; 意向用户模块&#xff08;全量分析&#xff09;&#xff1a; 需求指标&#xff1a; 需求一: 计期内&#xff0c;新增意向客户&#xff08;包含自己录入的意…

kraken2 最新版安装,极简模式

kraken2 git clone https://github.com/DerrickWood/kraken2.gitcd kraken2./install_kraken2.sh /opt/krakenvim .bashrc ---------------- # Kraken export PATH"/opt/kraken:$PATH" ----------------source .bashrc Note: 不晓得是不是我设置了清华源&#xff0c…

下载源代码并交叉编译riscv FreeBSD系统和内核

RISCV系统曾经让人神秘到无法接触&#xff0c;交叉编译更是只有耳闻&#xff0c;现在随着RISCV的普及&#xff0c;它们神秘的面纱已经被慢慢揭开。 交叉编译作为RISCV系统中的一个重要环节&#xff0c;也随着RISCV的普及而变得更加容易理解和操作。交叉编译允许开发者在一个平…

LeetCode算法题:8.字符串转换整数 (atoi)

请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格检查下一个字符&#xff08;假设还未到字符末…

WordPress原创插件:当日24小时发布文章标题变红

WordPress原创插件&#xff1a;当日24小时发布文章标题变红 <?php// 添加自定义样式 function title_red_plugin_styles() {$current_time time();$post_time get_the_time(U);$time_difference $current_time - $post_time;if ($time_difference < 86400) {echo&l…

24_Scala集合Map

文章目录 Scala集合Map1.构建Map2.增删改查3.Map的get操作细节 Scala集合Map –默认immutable –概念和Java一致 1.构建Map –创建kv键值对 && kv键值对的表达 –创建immutable map –创建mutable map //1.1 构建一个kv键值对 val kv "a" -> 1 print…

Web3智能物联网:科技连接的未来世界

在当今科技飞速发展的时代&#xff0c;Web3智能物联网正逐渐成为人们关注的焦点。随着区块链技术的不断成熟和普及&#xff0c;以及物联网的普及和应用&#xff0c;Web3智能物联网作为二者的结合&#xff0c;将为未来的数字世界带来革命性的变化。本文将深入探讨Web3智能物联网…

二十、Java的反射机制

1、Java反射机制的概念 所谓反射从程序的运行结果来看也很好理解,即可以通过对象反射求出类的名称。如下: 正常方式:引入需要的“包.类”名称---->通过new实例化----->取得实例化对象。 反射方式:实例化对象---->getClass()方法------>得到完整的“包.类”名…

基于Django框架课堂投票系统的设计与实现

基于Django框架课堂投票系统的设计与实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 学生角色功能实现 注册登录界面 此处输入账号并设置登录密码&#xff0c;填写用户名、性别、生源地等相关信息…

视频断点上传

什么是断点续传 通常视频文件都比较大&#xff0c;所以对于媒资系统上传文件的需求要满足大文件的上传要求。http协议本身对上传文件大小没有限制&#xff0c;但是客户的网络环境质量、电脑硬件环境等参差不齐&#xff0c;如果一个大文件快上传完了网断了没有上传完成&#xf…

【busybox记录】【shell指令】tr

目录 内容来源&#xff1a; 【GUN】【tr】指令介绍 【busybox】【tr】指令介绍 【linux】【tr】指令介绍 使用示例&#xff1a; 转换字符 - 默认 转换字符 - 不翻译指定字符数组 此指令目前接触少&#xff0c;用得少&#xff0c;把精力放到其他常用指令上 常用组合指令…