LV.12 D19 ADC实验 学习笔记
一、ADC简介
1.1 ADC
ADC(Analog to Digital Converter)即模数转换器,指一个能将模拟信号转化为数字信号的电子元件

1.2 ADC主要参数
分辨率
ADC的分辨率一般以输出二进制数的位数来表示,当最大输入电压一定时,位数越高,分辨率越高; n位的ADC能区分输入电压的最小值为满量程输入的1/2^n; 比如一个12位的ADC,最大输入电压为1.8v,那么该ADC能区分的最小电压为1.8v/2^12≈0.00044v,当转换的结果为m时,则 实际的电压值为m*(1.8v/2^12);

二、 Exynos4412下的ADC控制器


这4个引脚是ADC专用引脚。(本次实验实验XadcAIN3)

可选10位精度或者12位精度,有四个通道,最大转换速度1M s是采样 ps是秒,采样频率是1M/s。
他有一个前提ADC时钟是5MHz。每五个时钟采样一次。支持采样保持功能和低功耗模式
模拟输入范围是0-1.8V

PCLK是时钟源,是100M的,这里拿66M举例,当分频是65时,分频后的时钟频率就是1MHz
因为他五个周期采样一次,1MHz在除以5是ADC的转换频率,所以转换速度就是200kHz,频率的倒数就是转换周期,也就是5us。
但是注意,时钟频率不能超过5M,因为他的极限转换速度是1M。
三、ADC寄存器

控制寄存器、延迟寄存器、数据寄存器、中断功能寄存器、选择通道寄存器

RES: 设置精度是10位或12位
ECFLG:这个写的有问题,它是只读的位,如果转换完成则会自动置1,否则是0.
PRSCEN: 写1打开分频器,写0关闭分频器
PRSCVL:设置寄存器的分频倍数。如果你往这个区域写了个N,实际的分频倍数则是N+1。ADC的最大转换速度是1MHz,所以时钟频率不能超过5MHz,所以N一定要设置在19-255之间。
STANDBY: 1待机模式(低功耗模式),0正常模式
READ_START: ADC转化的数据会放入一个寄存器,读走数据就会自动进行下次转化,不读就停止转化。写1开启此模式,写0关闭
ENABLE_START:写1开始转换,然后自动变成0。如果开启READ_START模式,则此模式自动失效。

ADCADT寄存器:用于存储转化结果,只用[11:0]位,读的时候要将高20位清零,不然随机结果可能会影响结果。

ADCMUX寄存器:用于选择转换的通道。由于ADC只有一个,而我们有四个引脚支持ADC功能,所以采取分时复用模式,同一时间只有一个通道可以转化。(本次实验实验AIN3)
步骤:对ADCCON寄存器进行设置,然后选择转换的通道,然后设置ADCCON的[0]位开始转换,ADCCON的[15]位变成1,然后区ADCDAT寄存器读取转换结果。
四、ADC编程
#include "exynos_4412.h"int main()
{unsigned int AdcValue;/*将ADC的精度设置为12bit*/ADCCON = ADCCON | (1 << 16);/*使能ADC的分频器*/ADCCON = ADCCON | (1 << 14);/*设置ADC的分频 ADC时钟频率=PLCK/(19+1)=5MHz,ADC的转换频率=5MHz/5=1MHz*/ADCCON = ADCCON & (~(0xFF << 6)) | (19 << 6);/*关闭待机模式,使能正常模式*/ADCCON = ADCCON & (~(1 << 2));/*关闭通过读使能AD转换*/ADCCON = ADCCON & (~(1 << 1));/*选择转换通道 3通道*/ADCMUX = 3;while(1){/*开始转换*/ADCCON = ADCCON | 1;/*等待转换完成*/while(!(ADCCON & (1 << 15)));/*读取转换结果*/AdcValue = ADCDAT & 0xFFF;/*将结果转换成实际的电压值 =AdcValue*(1800/4096) mv*/AdcValue =AdcValue * 0.44;/*打印转换结果*/printf("AdcValue = %dmv\n", AdcValue);}return 0;
}
五、作业
1.编程实现通过LED状态显示当前电压范围
注:
电压在1501mv~1800mv时,LED2、LED3、LED4、LED5点亮
电压在1001mv~1500mv时,LED2、LED3、LED4点亮
电压在501mv~1000mv时,LED2、LED3点亮
电压在0mv~500mv时,LED2闪烁
#include "exynos_4412.h"void Delay(unsigned int Time)
{while(Time--);
}int main()
{unsigned int AdcValue;/*将ADC的精度设置为12bit*/ADCCON = ADCCON | (1 << 16);/*使能ADC的分频器*/ADCCON = ADCCON | (1 << 14);/*设置ADC的分频 ADC时钟频率=PLCK/(19+1)=5MHz,ADC的转换频率=5MHz/5=1MHz*/ADCCON = ADCCON & (~(0xFF << 6)) | (19 << 6);/*关闭待机模式,使能正常模式*/ADCCON = ADCCON & (~(1 << 2));/*关闭通过读使能AD转换*/ADCCON = ADCCON & (~(1 << 1));/*选择转换通道 3通道*/ADCMUX = 3;/*LED2*/GPX2.CON = GPX2.CON | (0x1 << 28);/*LED3*/GPX1.CON = GPX1.CON | 0x1;/*LED4*/GPF3.CON = GPF3.CON | (0x1 << 16);/*LED5*/GPF3.CON = GPF3.CON | (0x1 << 20);while(1){/*开始转换*/ADCCON = ADCCON | 1;/*等待转换完成*/while(!(ADCCON & (1 << 15)));/*读取转换结果*/AdcValue = ADCDAT & 0xFFF;/*将结果转换成实际的电压值 =AdcValue*(1800/4096) mv*/AdcValue =AdcValue * 0.44;/*打印转换结果*/printf("AdcValue = %dmv\n", AdcValue);if(AdcValue > 1501){GPX2.DAT = GPX2.DAT | (1 << 7);GPX1.DAT = GPX1.DAT | 1;GPF3.DAT = GPF3.DAT | (1 << 4);GPF3.DAT = GPF3.DAT | (1 << 5);}else if(AdcValue > 1001){GPX2.DAT = GPX2.DAT | (1 << 7);GPX1.DAT = GPX1.DAT | 1;GPF3.DAT = GPF3.DAT | (1 << 4);}else if(AdcValue > 501){GPX2.DAT = GPX2.DAT | (1 << 7);GPX1.DAT = GPX1.DAT | 1;}else{GPX2.DAT = GPX2.DAT | (1 << 7);Delay(1000000);GPX2.DAT = GPX2.DAT & (~(1 << 7));}}return 0;
}
相关文章:
LV.12 D19 ADC实验 学习笔记
一、ADC简介 1.1 ADC ADC(Analog to Digital Converter)即模数转换器,指一个能将模拟信号转化为数字信号的电子元件 1.2 ADC主要参数 分辨率 ADC的分辨率一般以输出二进制数的位数来表示,当最大输入电压一定时,位数越高,…...
ubuntu配置免密登录vscode
1、配置免密登录 (1)在windows系统cmd下运行命令 ssh-keygen 一路回车,将会在C:\Users\用户名\.ssh目录下生成两个文件:id_rsa和id_rsa.pub。如下图所示。 (2)进入.ssh目录。如果想使用root用户࿰…...
软件工程--面向对象分析用通俗语言20小时爆肝总结!(包含用例图、活动图、类图、时序图......)
面向对象方法分为面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP),本文详细介绍面向对象分析 本文参考教材:沈备军老师的《软件工程原理》大多图片来源其中 目录 面向对…...
HarmonyOS—ArkTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化【鸿蒙专栏-11】
文章目录 ARKTS中@Observed和@ObjectLink装饰器的嵌套类对象属性变化@Observed 类装饰器说明装饰器参数类装饰器的使用@ObjectLink 变量装饰器说明装饰器参数同步类型允许装饰的变量类型被装饰变量的初始值举例装饰器的限制条件观察变化和行为表现观察的变化框架行为使用场景1.…...
网络通信安全的坚固防线双向认证技术详解
目录 什么是双向认证 双向认证的工作原理 双向认证的实现方式 双向认证的重要性 双向认证的挑战 安全最佳实践 小结 什么是双向认证 双向认证,又称为双向身份验证或双向鉴别,是一种在通信双方之间建立信任关系的安全机制。在通信过程中࿰…...
Appium+python+unittest搭建UI自动化框架
阅读本小节,需要读者具备如下前提条件: 1. 掌握一种编程语言基础,如java、python等。 2. 掌握一种单元测试框架,如java语言的testng框架、python的unittest框架。 3. 掌握目前主流的UI测试框架,移动端APP测试框架…...
使用paddledetection的记录
首先在这里使用的是是paddle--detection2.7的版本。 成功进行训练 目录: 目录 数据集准备 配置文件的修改 使用的是BML的平台工具: !python -m pip install paddlepaddle-gpu2.5 -i https://mirror.baidu.com/pypi/simple --user %cd /home/aistudio…...
MySQL数据库的备份与恢复
在管理MySQL数据库时,备份和恢复是保证数据安全和完整性的关键环节。本文将指导您如何有效地备份MySQL数据库,并在需要时进行数据恢复。 请注意,如果没有 mysql> 的标志,说明我们是在外面终端进行的操作 创建备份文件路径 在…...
Pycharm配置jupyter使用notebook详细指南(可换行conda环节)
本教程为事后记录,部分图片非实操图片。 详细记录了pycharm配置jupyter的方法,jupyter添加其他conda环境的方法,远程密码调用jupyter的方法,修改jupyter工作目录的方法。 文章目录 一、入门级配置1. Pycharm配置Conda自带的jupyt…...
企业微信ipad版,http协议接口发开,获取客户群列表
版本介绍: HTTP协议接口可以通过该接口实现企业微信的各种功能,使用HTTP协议可以避免使用hook形式的需要开启PC客户端的方式,同时可以实现三端同时在线,不影响PC和手机端的登录状态,调用简单,可以支持几千…...
Double 4 VR智能互动教学系统在小语种课堂中的教学应用
小语种课堂一直是教育领域的一个难点。由于语言本身的复杂性和文化背景的差异,小语种教学一直是一个挑战。传统的课堂教学方法往往难以激发学生的学习兴趣和动力,教学效果不尽如人意。而Double 4 VR智能互动教学系统为小语种课堂带来了新的可能。 Double…...
OSEK OS任务调度的底层逻辑
先参考 FreeRTOS的任务触发底层逻辑 简述RTOS任务调度底层逻辑 AUTOSAR-OS的调度机制-调度表(没理解透,继续更新) OSEK与FreeRTOS在任务调度上最大的区别在于,FreeRTOS是基于全抢占任务调度和时间片轮转调度机制,具有…...
‘tsc‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
最近在用nodejs typescript 某游戏服务器在做一些研究 nodejs-tcs 问题描述: 1.使用命令npm install -g typescript安装typescript后,输入 tsc命令,一直报错 tsc 不是内部或外部命令,也不是可运行的程序 或批处理文件。 2.目…...
windows文件删除权限
一、普通文件 这里指的是所有可以被随意删除的文件。 二、可更改权限的文件 如果想要删除的文件无法被删除,那大概是权限不够,这时候:鼠标右键、属性、安全、编辑、选择相应的组或用户(如果不知道哪个可以全选,反正…...
Nginx的location块相关知识积累(包括常用的正则匹配表达式的介绍)
Nginx的location块相关知识积累 01-location块的优先级 注意:如果Nginx的配置中有多个location块,那么各location块的匹配优先级并不是完全按照代码的先后顺序来决定各location优先级的。而是按下面的规则来决定的: 在 Nginx 中,…...
rabbitMq确认机制之ConfirmType
配置方式 Bean(name "connectionFactory")Primarypublic ConnectionFactory normalConnectionFactory(Value("${spring.rabbitmq.username}") String username,Value("${spring.rabbitmq.password}") String password,Value("${spring.rab…...
ubuntu下QT搭建Android开发环境
一、前言 用QT开发android和直接使用android开发的区别 使用Qt开发Android应用和直接使用Android开发工具(例如Android Studio)有一些区别,主要体现在开发工具、语言、界面设计和性能等方面: 开发工具: Qt Creat…...
QT 做一个登录,注册的跳转页面
思路: 1.登录需要判断账号与密码是否想等,相等才可跳转新页面,匹配失败输入框提示”账号密码不匹配”。 2.注册不需要判断,直接跳转新页面即可。 widget.cpp文件 #include "widget.h" #include "ui_widget.h&qu…...
数据库第十第十一章 恢复和并发简答题
数据库第一章 概论简答题 数据库第二章 关系数据库简答题 数据库第三章 SQL简答题 数据库第四第五章 安全性和完整性简答题 数据库第七章 数据库设计简答题 数据库第九章 查询处理和优化简答题 1.什么是数据库中的事务?它有哪些特性?这些特性的含义是什么…...
Vue3:利用vueusejs键盘绑定
VueUse 键盘事件名 onKeyDown - 别名 onKeyStroke(key, handler, {eventName: ‘keydown’})onKeyPressed - 别名onKeyStroke(key, handler, {eventName: ‘keypress’})onKeyUp - 别名 onKeyStroke(key, handler, {eventName: ‘keyup’}) // 绑定回车事件// https://develo…...
STL到STEP格式转换:跨越制造业数字鸿沟的工程化解决方案
STL到STEP格式转换:跨越制造业数字鸿沟的工程化解决方案 【免费下载链接】stltostp Convert stl files to STEP brep files 项目地址: https://gitcode.com/gh_mirrors/st/stltostp 在现代化制造与设计流程中,3D数据格式的互操作性已成为制约生产…...
微信小程序wxapkg逆向解析原理与合规源码还原实践
1. 这不是“破解”,而是合法合规的源码审计实践微信小程序生态里,每天有数百万个新版本上线,而开发者真正能拿到手的,往往只有.wxapkg文件——一个经过混淆、压缩、资源内联、逻辑分包的二进制容器。很多人第一反应是:…...
KLayout 0.29.12版图编辑工具:DRC验证引擎性能提升20%与多工艺节点设计支持
KLayout 0.29.12版图编辑工具:DRC验证引擎性能提升20%与多工艺节点设计支持 【免费下载链接】klayout KLayout Main Sources 项目地址: https://gitcode.com/gh_mirrors/kl/klayout KLayout是一款开源的集成电路版图编辑与验证工具,专注于GDSII/O…...
puzzle(0312)找牛
目录 内固问题、最大内固问题 找牛 (10) (17) 内固问题、最大内固问题 参考内固、外固 寻找特定的内固集,即内固问题。 寻找最大内固数的内固集,即最大内固问题。 无向图的最大内固集(即…...
iOS设备激活解锁终极指南:Applera1n工具完整使用教程
iOS设备激活解锁终极指南:Applera1n工具完整使用教程 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 还在为二手iOS设备的激活锁问题而烦恼吗?Applera1n是一款专为iOS 15-16系统…...
终极资源嗅探指南:猫抓浏览器扩展帮你轻松捕获网页媒体资源
终极资源嗅探指南:猫抓浏览器扩展帮你轻松捕获网页媒体资源 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字时代,…...
Wand-Enhancer:如何通过本地客户端增强技术提升Wand应用体验
Wand-Enhancer:如何通过本地客户端增强技术提升Wand应用体验 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer Wand-Enhancer是一款针对Wand&a…...
Windows远程桌面免费解锁指南:家庭版也能享受多用户并发连接
Windows远程桌面免费解锁指南:家庭版也能享受多用户并发连接 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap 你是否曾经因为Windows家庭版无法使用远程桌面而烦恼?或者需要多人同时访问同一…...
非Root安卓设备上使用Frida Gadget实现应用层Hook
1. 为什么非Root设备上Hook安卓App不再是“不可能任务”很多人第一次听说Frida,脑海里自动浮现出的场景是:一台已Root的测试机、adb shell里敲着su、frida-server在后台静静运行、然后用frida-trace监听onCreate——一套行云流水的操作,但前提…...
ContextMenuManager:Windows右键菜单终极管理指南,让你的电脑效率翻倍
ContextMenuManager:Windows右键菜单终极管理指南,让你的电脑效率翻倍 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否厌倦了Windo…...
