Exynos_4412——ADC实验

news2024/9/27 21:26:11

目录

一、ADC简介

二、Exynos_4412下的ADC控制器

三、ADC寄存器详解

四、ADC编程


一、ADC简介

 ADC(Analog to Digital Converter)即模数转换器,指一个能将模拟信号转化为数字信号的电子元件

对于CPU来说只能处理数字信号,而很多外围输入信号都是模拟信号,所以就有了ADC。

以前用51的时候这个单片机功能比较少在使用一些传感器时需要在额外买ADC芯片,但是后来我学32以及现在用这个4412他们都比较高级内部集成了ADC电路,我们直接把信号接到ADC引脚就行了。

模拟数字转换器_百度百科

分辨率

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

 

二、Exynos_4412下的ADC控制器

 

 

可选10位精度或者12位精度,有四个通道,最大转换速度1M s是采样 ps是秒,采样频率是1M/s。

他有一个前提ADC时钟是5MHz。每五个时钟采样一次。支持采样保持功能和低功耗模式

模拟输入范围是0-1.8v,我发现一个问题4412的电压都很低,这样功耗低,不容易发热,但是驱动一些硬件的能力也随着减弱了。

 PCLK是时钟源,是100M的,这里拿66M举例,当分频是65时,分频后的时钟频率就是1M

采样时间就是1M在除以5,因为他五个周期采样一次所以就是200kHz 也就是5us采样一次。

但是注意他不能超过5M因为他的极限速度是1M

三、ADC寄存器详解

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

 

RES: 设置是10位还是12位

ECFLG:这个写的有问题它是只读的前面标错了,0正在转换1转换完成

PRSCEN: 1打开分频器0关闭分频器

PRSCVL:实际的分频倍数  一定要在19-255之间

STANDBY: 1待机模式(低功耗模式)0正常模式

READ_START:读走数据继续转化,不读就停止转化 1开启 0关闭

ENABLE_START:写1开始转化,然后自动变成0,开启READ_START模式此模式自动失效。

存储转化结果,读的时候要将高20位清零不然随机结果可能会影响结果。

由于ADC只有一个而我们有四个引脚支持ADC功能所以采取分时复用模式,同一时间只有一个通道可以转化

四、ADC编程

解压出一个新工程

 

#include "exynos_4412.h"

int main()
{
    unsigned int adc_value;
    //12
    ADCCON = ADCCON | (1 << 16);
    //使能ADC分频器
    ADCCON = ADCCON | (1 << 14);
    //100/(19+1)=5MHz 5 / 5 = 1MHz
    ADCCON = ADCCON & (~(0xFF << 6)) | (19 << 6);
    //关闭待机模式
    ADCCON = ADCCON & (~(1 << 2));
    //关闭通过读使能AD转换
    ADCCON = ADCCON & (~(1 << 1));

    ADCMUX = 3;

    while(1)
    {
        //开始
        ADCCON = ADCCON | 1;
        while(!(ADCCON & (1 << 15)));
        //读取
        adc_value = ADCDAT & 0xFFF;
        // 1800mV/2^12=1800/4096=0.44
        adc_value = adc_value * 0.44;
        printf("adc_value = %d mV\n",adc_value);
    }



    return 0;
}

 

 最大是1801差不多,因为这个0.44是约值。

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

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

相关文章

CADD药物设计;QSAR模型

1、CADD药物设计 计算药物设计&#xff08;CADD&#xff09;是一个使用计算技术来帮助设计和开发新药的领域。它涉及使用计算机程序来模拟潜在药物分子与体内靶蛋白之间的相互作用&#xff0c;以及预测这些分子的性质和行为。这可以帮助研究人员识别新的药物候选物&#xff0c;…

STM32使用红外测温

红外测温 文章目录红外测温前言一、原理二、STM32代码1.MLX90614.c2.MLX90614.h总结前言 一、原理 红外测温的原理可以直接去看卖家的手册&#xff0c;手册多余的话太多了&#xff0c;知道他是IIC通信的就行了&#xff0c; 下面直接给出代码 二、STM32代码 1.MLX90614.c …

synchronzied

synchronzied的作用 原子性&#xff1a;所谓原子性就是一个操作或者多个操作&#xff0c;要么全部执行并且执行的过程不会被任何因素打断&#xff0c;要么都不执行。被synchronzied修饰的类或对象的所有操作都是原子的&#xff0c;因为在执行之前必须先获得类或对象的锁、直到…

直播运营|如何打造可复制的直播增长闭环?

作为当下最热门的营销模式&#xff0c;直播带货对人员、场地及流程的把控等都提出了严格要求。而要提升直播运营、促成更高转化&#xff0c;直播复盘是关键的一环。 那么&#xff0c;直播后到底该如何高效复盘&#xff0c;为带货提效呢&#xff1f; 「帷幄开播 Whale Cast」新功…

_Linux 进程信号-基础篇

文章目录信号入门1. 生活角度2. Linux技术应用角度3. 知识小点4. 信号概念5. kill -l命令6. 信号处理常见方式产生信号1. 通过终端按键产生信号Core Dump2. 调用系统函数向进程发信号系统调用接口概述3. 由软件条件产生信号软件条件给进程发送信号概述4. 硬件异常产生信号理解除…

VS2012编译libjson库过程

下载libjson库 https://sourceforge.net/projects/libjson/ 最新版是2012-06-25的libjson_7.6.1.zip,大小为759.5 kB 解压缩包 由于是旧版本VS创建的项目,无法用新版VS直接打开项目编译了 使用VS2012新建一个Win32项目libjson 选择静态库,点完成 创建完成后项目列表 将l…

【Linux】-- 操作系统进程的状态

目录 描述进程-PCB 状态理论 Linux内核源代码的描述 R运行状态与S睡眠状态&#xff1a; 前台进程与后台进程 D磁盘休眠状态&#xff1a; T停止状态 X死亡状态 Z(zombie)-僵尸进程 僵尸进程的危害 进程状态总结 孤儿进程 进程优先级 Linux具体的优先级做法 PRI …

driftingblues6靶机(脏牛漏洞)

环境准备 靶机链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;463a 虚拟机网络链接模式&#xff1a;桥接模式 攻击机系统&#xff1a;kali linux 2021.1 信息收集 1.arp-scan -l 探测目标靶机 2.nmap -p- -A -T4 192.168.1.107 探测目标靶机开放端口和服务 …

Internet Download Manager2023稳定版下载器

Internet Download Manager&#xff08;简称IDM&#xff09; 是Windows平台老牌而功能强大的下载工具&#xff0c;一种将下载速度提高多达5倍。那如果想要使用这款软件&#xff0c;那就需要安装这款软件&#xff0c;如何正确的下载和安装呢&#xff1f;今天&#xff0c;小编就教…

【ES】 es | Elasticsearch 教程 | DSL命令 | 命令操作es

一、说明 1、通过kibana操作es 2、使用dsl命令操作es 3、需要已经安装es&#xff0c;必须 4、需要已经安装kibana&#xff0c;非必须 5、若是没有装kibana&#xff0c;可以用PostMan之类的请求工具 二、基础知识 1、Elasticsearch和RDBMS比较 说明1&#xff1a; es与传统关系数…

树莓派串口通信

文章目录一、树莓派串口介绍二、串口通信配置1.打开USART串口2.串口映射配置3.安装mini串口调试助手4. 解决打开ttyAMA0 时没有权限5.解决打开minicom串口助手的时候&#xff0c;键盘失灵一、树莓派串口介绍 树莓派4B一共包含两个串口&#xff0c;一个是硬件串口&#xff08;/…

LVGL学习笔记13 - 圆弧Arc

目录 1. Parts 2. 样式 2.1 旋转 2.3 设置角度范围 2.4 设置值范围 2.5 清除Knob显示 2.6 禁止点击调整值 2.7 修改圆环前景色 2.8 修改圆环背景色 2.9 修改圆弧末端形态 2.10 修改圆弧宽度 2.11 修改圆弧透明度 3. 事件 圆弧由背景和前景弧组成&#xff0c;通过lv_ar…

密码学_SHA-1

SHA-1&#xff08;Secure Hash Algorithm 1&#xff0c;安全散列算法1&#xff09;是一种密码散列函数&#xff0c;美国国家安全局设计&#xff0c;并由美国国家标准技术研究所&#xff08;NIST&#xff09;发布为联邦数据处理标准&#xff08;FIPS&#xff09;。SHA-1可以生成…

SpringCloud Netflix复习之Eureka

写作背景 SpringCloud Netflix作为SpringCloud第一代产品很经典&#xff0c;而且公司的老项目还在用SpringCloud Netflix的技术栈&#xff0c;有必要对SpringCloud Netflix的各种核心组件回归复习一下了。 本次复习的主角是微服务注册中心Eureka&#xff0c;本文的书写思路是五…

【大厂高频真题100题】《给表达式添加运算符》 真题练习第22题 持续更新~

给表达式添加运算符 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)+、- 或 * ,返回 所有 能够得到 target 的表达式。 注意,返回表达式中的操作数 不应该 包含前导零。 示例 1: 输入: num = "123&q…

innovus中的DanglingWire(悬垂线)的理解和处理

在innovus工具里边&#xff0c;用户经常会使用verifyConnectivity 来进行open &#xff0c;绕线完整性等问题的查验。对于绕线结果&#xff0c;尤其是PG绕线结果&#xff0c;使用这个命令可以很好的帮助用户在power planning阶段查验PG的闭合连接的状态&#xff08;在pg DB中使…

JavaScript 监听单个元素高宽变化MutationObserver

如果你只是想监听窗口大小变化 resize就能满足你 window.onresize () > {console.log("窗口变化"); };jqurey写法 $(window).resize(()>{console.log("窗口变化"); })但如果是要监听某一块元素 resize就不太适用了 例如 我们在界面上定义一个类名…

MATLAB-条形图、饼状图绘制

条形图 bar命令用于绘制二维的垂直条形图&#xff0c;用垂直的条形显示向量或者矩阵的值&#xff0c;可以显示矢量数据和矩阵数据。使用格式如下。bar( y) %为每一个y中元素画出条形 bar( x,y) %在指定的横坐标x上画出y,其中x为严格单增的…

49_IAP实验

目录 IAP介绍 一般的程序执行流程 IAP程序执行流程 实验源码&#xff1a; IAP介绍 STM32编程方式: 1.在线编程(ICP,In-Circuit Programming):通过JTAG/SWD协议或者系统加载程序(Bootloader)下载用户应用程序到微控制器中。 2.在程序中编程(IAP,In Application Programmi…

MySQL复制底层技术——LOGICAL_CLOCK并行复制、WRITESET并行复制

1. LOGICAL_CLOCK 并行复制 1&#xff0e;原理 从MySQL 5.7版本开始&#xff0c;支持LOGICAL_CLOCK级别的并行复制&#xff08;基于MySQL 5.6的库级别的Group Commit并行复制的大幅改进&#xff09;&#xff0c;通过设置参数slave_parallel_type为LOGICAL_CLOCK来启用&#x…