首页/新闻资讯/正文详情

嵌入式 Linux(i.MX6ULL)ADC 驱动学习博客

发布时间:2026/9/27 7:09:34 来源:云帆数科 栏目:资讯中心
嵌入式 Linux(i.MX6ULL)ADC 驱动学习博客
最近在学习 i.MX6ULL 裸机开发写了一段 ADC 采集代码踩了不少引脚配置、ADC 校准的坑。本文结合代码搞懂 ADC 基础概念、逐次逼近原理、转换流程、分辨率。一、什么是 ADCADC 全称模数转换器Analog-to-Digital Converter。 现实世界里的信号大多是模拟信号连续变化的电压比如电位器分压、光敏电阻电压电压可以取区间内任意值。 但是单片机 / ARM 芯片只能识别数字信号0、1。ADC 的作用就是把连续变化的模拟电压转换成对应的离散数字量。简单一句话ADC 就是模拟电压 → 数字数值的转换器。对应我们代码读取电位器产生的模拟电压通过 ADC 转换得到数字值再换算成实际电压adc1_get_value()函数把原始采样值转为 0~3.3V。二、什么是逐次逼近法SAR ADCi.MX6ULL ADC 就是这个类型i.MX6ULL 内部 ADC 属于逐次逼近型 ADCSuccessive Approximation RegisterSAR ADC核心算法就是逐次逼近法。原理通俗理解 类似天平称重。要测一个未知重量从最重砝码开始尝试放上去如果太重就拿掉不重就保留依次换更小砝码不断比较直到所有砝码尝试完毕。放到 ADC 里面含义 输入电压变化大于约 0.806mVADC 输出的数字值才会变化电压变化小于这个值ADC 识别不出来输出数字量不变。重点区分 分辨率只代表最小可分辨电压不等于精度。精度包含偏移误差、增益误差这就是为什么 i.MX6ULL 需要 ADC 校准用来修正误差。举例五、代码整体小结本次裸机代码实现 i.MX6ULL ADC1 通道 1 单次采集。存在优化点当前代码是查询方式也可以改成 ADC 中断方式CPU 不用一直轮询等待转换结束。总结ADC 是嵌入式非常常用外设传感器电位器、光敏、热敏电阻几乎都要靠 ADC 把模拟信号交给 CPU 处理。理解 SAR 逐次逼近原理、分辨率概念看懂寄存器操作对后续 Linux 下 ADC 驱动学习打下基础。内部 DAC 生成一个参考电压比较器对比待测模拟电压和DAC 输出电压从最高位开始依次试探每一位如果 DAC 电压 待测电压 → 当前位保留为 1如果 DAC 电压 待测电压 → 当前位清 0逐位试探高位→低位全部位判断完成得到最终数字结果。我们代码读取的 12bit ADC 原始值就是逐次逼近算法输出的数字结果。三、ADC 转换完整过程结合我们 i.MX6ULL 代码整个 ADC 工作分为硬件初始化 → ADC 校准 → 启动单次转换 → 等待转换完成 → 读取结果 → 电压换算1. 引脚初始化配置 GPIO 引脚复用为 ADC 输入功能配置 PAD 电气属性上下拉、使能等IOMUXC_SetPinMux(IOMUXC_GPIO1_IO01_GPIO1_IO01, 0); IOMUXC_SetPinConfig(IOMUXC_GPIO1_IO01_GPIO1_IO01, IOMUXC_SW_PAD_CTL_PAD_PKE(1));GPIO1_IO01 复用为 ADC 通道 1作为模拟电压输入脚。2. ADC 模块配置与校准i.MX6ULL 的 ADC 必须做校准内部模拟电路会有误差上电后执行校准消除偏移误差。校准完成后配置 ADC 时钟、分频、使能 ADC 模块。3. 启动 ADC 转换往HC[0]寄存器写入通道号触发一次 ADC 采样转换ADC1-HC[0] 1; //选择通道1启动转换4. 等待转换完成查询HS寄存器的转换完成标志位判断 ADC 是否转换结束while ((ADC1-HS (1 0)) 0); //等待转换完成标志置15. 读取原始采样结果转换完成从结果寄存完整流程总结return ADC1-R[0] 0xFFF; //取出低12位ADC结果6. 换算实际电压参考电压是 3.3V12bit ADC 范围 0~4095。 公式实际电压 原始值 / 4095 * 参考电压return adc1_get_origin_value() / 4095.0 * 3.3;完整流程总结引脚配置 → ADC 模块初始化 校准 → 写通道号启动转换 → 查询标志等待完成 → 读原始数字值 → 计算真实电压。四、ADC 分辨率含义分辨率ADC 能够分辨的最小输入电压变化量代表 ADC 识别微小电压变化的能力。一般用位数描述我们 i.MX6ULL ADC 是12 位 ADC。12bit输出数字范围0 ~ 2¹² - 1 0 ~ 4095一共 4096 个量化等级。参考电压 Vref3.3V最小可分辨电压LSB Vref / 2^N 3.3 / 4096 ≈0.806mV8bit ADC0~255同样 3.3V 下最小分辨电压≈12.9mV分辨能力比 12bit 差很多。位数越高分辨率越高能识别更小的电压变化。复用 GPIO 引脚作为模拟输入

相关推荐

Linux 内核 oops 日志逐字段解读:从 RIP+0x1c 一路定位到源码第 27 行(附真实崩溃现场)
Linux 内核 oops 日志逐字段解读:从 RIP+0x1c 一路定位到源码第 27 行(附真实崩溃现场)

先给结论:内核 oops 看着三十几行,其实只有四块 —— 标题、全局状态、寄存器、调用栈。定位凶手只需要两个寄存器:RIP(哪条指令)和 CR2(哪个地址)。通用寄存器不能当判据。 下面是一次在 qemu … · 2026/9/27 7:09:34

Agent明明说完成了,为什么还在不停转圈
Agent明明说完成了,为什么还在不停转圈

文章目录前言1. 先把三个词摆清楚,不然后面全白看2. 工具调用:step 为什么总说“还没完”2.1 没有工具调用呢?模型直接说完了3. 三个入口,长得像,干的事完全不同3.1 自激问题:文件观察器把自己玩醒了4. 结束… · 2026/9/27 7:09:28

NVIDIA Agent Skills 一条命令装进 Codex、Cursor、Kiro 的完整安装教程
NVIDIA Agent Skills 一条命令装进 Codex、Cursor、Kiro 的完整安装教程

NVIDIA Agent Skills 一条命令装进 Codex、Cursor、Kiro 的完整安装教程 【免费下载链接】skills Agent Skills for NVIDIA products — install into Claude Code, Codex, and other coding agents to run Physical AI, robotics, simulation, CUDA, and RAG workflows end to… · 2026/9/27 7:09:22

新手入门避坑:关键词推广怎么做才不烧钱
新手入门避坑:关键词推广怎么做才不烧钱

新手入门避坑:关键词推广怎么做才不烧钱 改个需求建站公司拖一周,这种经历太常见了。对于刚入行做网站运营或SEO的新手来说,最崩溃的不是技术本身,而是那种“说了半天,对方装听不懂”的无力感。很多新手以为关键词推广就是花钱买排名,结果钱花了,排… · 2026/9/27 7:53:16

typescript-book 技术解析:TypeScript 7 原生语言服务如何修复 Go to Implementation 的 O(K²) 内存增长
typescript-book 技术解析:TypeScript 7 原生语言服务如何修复 Go to Implementation 的 O(K²) 内存增长

文档教程 【免费下载链接】typescript-book The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. 项目地址: https://gitcode.com/gh_mirrors/typ/typescript-book 点击查看 免费下载 本文基于开源仓库 … · 2026/9/27 7:53:10

C++语言原理与实践(九):vector类的介绍与使用
C++语言原理与实践(九):vector类的介绍与使用

本篇目标:std::vector 是 C 标准库中最常用的容器之一。它可以理解为一个能够自动管理内存、按需扩容的动态数组。与普通数组相比,vector 不需要提前确定最终长度;与链表相比,它的元素连续存储,随机访问速度快&#xf… · 2026/9/27 7:53:10

.net个人网站开发视频对比评测:3步解决无人问津
.net个人网站开发视频对比评测:3步解决无人问津

.net个人网站开发视频对比评测:3步解决无人问津 网站做好了没人访问,这大概是.NET开发者最头疼的噩梦。你盯着后台零流量的数据,心里直打鼓:代码跑得挺顺,页面也挺快,为啥就是没动静?这时候,别急着改代码,先看看你的技术栈和SEO基础打没… · 2026/9/27 7:53:04

PaddleSeg 均方误差损失 MSELoss 完全指南:原理、参数详解与真实应用场景
PaddleSeg 均方误差损失 MSELoss 完全指南:原理、参数详解与真实应用场景

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/27 7:53:04

JDK 27 正式发布:Java 27 值不值得升级?从 JEP 527 后量子 TLS 到 G1 默认化的决策清单
JDK 27 正式发布:Java 27 值不值得升级?从 JEP 527 后量子 TLS 到 G1 默认化的决策清单

JDK 27 正式发布:Java 27 值不值得升级?从 JEP 527 后量子 TLS 到 G1 默认化的决策清单 JDK 27 于 2026 年 9 月 15 日正式 GA,成为 2026 年下半年 Java 生态最集中的讨论点 [1][3]。围绕它的信息里既有真实的版本节奏变化,也有大… · 2026/9/27 7:53:03

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码