嵌入式(六)模数转换ADC | ADC 工作模式 寄存器 轮询和中断方式

news2024/11/15 13:23:55

文章目录

  • 1 CC2530的ADC模块
  • 2 ADC工作模式
  • 3 ADC相关寄存器
    • 3.1数据寄存器
    • 3.2 控制寄存器
  • 4 ADC初始化配置
  • 5 ADC使用方式
    • 5.1 轮询方式
    • 5.2 中断方式

模拟/数字转换 (Analog to Digital Converter,简称ADC)

是将输入的模拟信号转换为数字信号。

各种被测控的物理量(如:速度、压力、温度、光照强度、磁场等)是一些连续变化的物理量,传感器将这些物理量转换成与之相对应的电压和电流就是模拟信号。单片机只能接收数字信号,要处理这些信号就必须转换成数字信号,模拟/数字转换是数字测控系统中必须的信号转换。

原理是进行,以一定的频率采样电压值,连续采样一段时间

1 CC2530的ADC模块

CC2530的ADC模块 支持最高14位二进制 的模拟数字转换具有12位的有效数据位。

它包括一个输入多路切换器,具有8个各自可配置的通道;以及一个参考电压发生器。

转换结果通过DMA(直接内存访问)写入存储器,还具有多种运行模式。

先介绍运行模式

2 ADC工作模式

1 输入

ADC模块的输入——从哪些端口输入

对于CC2530的ADC模块,端口P0引脚可以配置为ADC输入端,

依次为AIN0~AIN7。

可以把输入配置为单端或差分输入

在选择单端输入的情况下,通道号码0-7

在选择差分输入的情况下,通道号码8-11,差分输入包括输入对AIN0-AIN1、

AIN2-AIN3、AIN4-AIN5和AIN6-AIN7 共四对、

通道12-15分别是GND,预留通道,温度传感器,AVDD5 在应用中这个输入可以实现一个电池电压监测器的功能。

为什么要进行差分输入,差分输入方式比单端输入来说,有更强的抗干扰能力

序列ADC转换与单通道ADC转换

3 ADC相关寄存器

3.1数据寄存器

ADC有两个数据寄存器:用来存放转换结果

ADCL(0xBA)-ADC数据低位寄存器、

ADCH(0xBB)-ADC数据高位寄存器,

3.2 控制寄存器

APCFG

8位模拟量输入来自I/O引脚,不必通过编程将这些引脚变为模拟输入。但是,当相应的模拟输入端在APCFG寄存器中被禁用时,此通道将被跳过。当使用差分输入时,相应的两个引脚都必须在APCFG寄存器中设置为模拟输入引脚。

APCFG寄存器描述如图所示

在这里插入图片描述

ADC还有三个控制寄存器:ADCCON1、ADCCON2和ADCCON3

ADCCON1

ADCCON1.ST用于启动一个转换序列。当没有转换正在运行时这个位设置为高电平

ADCCON1.STSEL位选择哪个事件将启动一个新的转换序列。该选项可以选择为外部引脚P2.0上升沿或外部引脚事件,之前序列的结束事件,定时器1的通道0比较事件或ADCCON1.ST是1。

ADCCON2

寄存器位ADCCON2.SCH用于定义一个ADC转换序列,如果ADCCON2.SCH设置为一个小于8的值,ADC转换序列包括

从0通道开始,直到并包括所设置的通道号码。当ADCCON2.SCH设置为一个8和12之间的值,转换序列包括

从通道8开始差分输入,到ADCCON2.SCH所设置的通道号码结束。

ADCCON2.SREF用于选择参考电压。

ADCCON2.SDIV位用来选择抽取率,抽取率的设置决定分辨率和完成一个转换所需要的时间。

ADCCON2.SCH设置转换序列的最后一个通道数

ADCCON3

单通道ADC转换通过写ADCCON3寄存器触发,转换立即开始。

除非一个转换序列已经正在进行,在这种情况下序列一完成,单个通道的ADC转换就会被执行。

除可以设置为按序列进行ADC转换之外,CC2530的ADC模块可以编程实现任何单个通道执行一个转换,包括温度传感器(14)和AVDD5/3(15)两个通道。

单通道ADC转换通过写ADCCON3寄存器触发,转换立即开始。除非一个转换序列已经正在进行,在这种情况下序列一完成,单个通道的ADC转换就会被执行。

4 ADC初始化配置

LED初始化

串口通信初始化

AD初始化

注意分辨率与精确度的区别

分辨率 分辨率由比特数决定,比如16位器件,则可以表示65536个独立的数字值,那么对于1bit而言,代表着最小的电平为 A D C 电压范围 × 1 65536 ADC电压范围× \frac{1}{65536} ADC电压范围×655361

精确度 是指对于给定模拟输入,实际数字输出与理论预期数字输出之间的接近度。

理论上精确度和分辨率相同,但由于实际中出现各种误差源,因而不能达到很高的精确度,比如只能16位器件只能提供12位精确度(有效数据),对于这种情况,4LSb(最低有效位)表示ADC中生成的随机噪声

电压计算公式 =ADC/精度*参考电压。

Value=(ADCH*256+ADCL)*3.3/8192。

ADC:把AD转换后得到的ADCL、ADCH做处理,将ADCL(低6位)放在低字节,ADCH(高8位)放在高字节。将一个uint16右移两位(最后两位没有用),即得到14位ADC。精度:根据所选位数,例如本任务位数选14位,精度=2^13=8192。

注意三个ADCCON1,2,3区别

首先通过ADCCON1寄存器将EOC标志清零。若为序列ADC转化则需要用到ADCCON2寄存器,若为单通道ADC转换则需要使用ADCCON3寄存器。通过这两个寄存器其一可以设置ADC转换的参考电压和通道的抽取率(精度)。若为ADCCON2寄存器还可以设置序列转换的范围,对于ADCCON3寄存器可以设置单个通道的转化。最后通过ADCCON1寄存器的STSEL位和ST位来启动ADC转换。

5 ADC使用方式

5.1 轮询方式

while(1) {
	if(ADCCON1>=0x80) { //ADCCON1.EOC,转换完毕判断
		LED1 = 0; //转换完毕指示
		LED2= 1; //打开数据处理指示灯
		temp[1] = ADCL;
		temp[0] = ADCH;
		adc |= (uint)temp[1];
		adc |= ( (uint) temp[0] )<<8;
		adc>>=2; // ADCL[1:0]没用使用
		num = adc*3.3/8192;//定参考电压为3.3V。14位分辨率
		adcdata[1] = (char)(num)%10+48;
		adcdata[3] = (char)(num*10)%10+48;
		UartTX_Send_String(adcdata,6); //串口送数
		LED2= 0; //完成数据处理
		delay(30000);
		InitialAD(); //启动下一次转换
		} 
}

5.2 中断方式

通过设置ADCCON3启动的单次ADC转换完成时才会产生中断。 (序列ADC转换完成不会产生中断)

#pragma vector = ADC_VECTOR
__interrupt void ADC_ISR(void) {
	float num; char temp[2]; uint adc=0;
	temp[1] = ADCL;
	temp[0] = ADCH;
	adc |= (uint)temp[1];
	adc |= ( (uint) temp[0] )<<8;
	adc>>=2; // ADCL[1:0]没用使用
	num = adc*1.25/8192;//参考电压为1.25V,12位有效位
	adcdata[1] = (char)(num)%10+48;
	adcdata[3] = (char)(num*10)%10+48;
	adcComplete1 = 1; //设置转换完成的全局变量
}

序列转换和单次转换的区别

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

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

相关文章

基于SSM的企业员工管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

PIG框架学习2——资源服务器的配置详解

一、前言 1、pig资源服务器的配置 Spring Security oauth2相关的依赖是在pigx-common-security模块中引入的&#xff0c;其他模块需要进行token鉴权的&#xff0c;需要在微服务中引入pigx-common-security模块的依赖&#xff0c;从而间接引入相关的Spring security oauth2依赖…

YOLOv5改进 | 损失函数篇 | MPDIoU、InnerMPDIoU助力细节涨点

一、本文介绍 本文为读者详细介绍了YOLOv5模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU。提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些…

[文件I/O操作] 文件的介绍

目录 1.认识文件 2.树型组织结构和目录 3.文件路径 4.文件类型 5.用Java代码操作文件 5.1 File概述 5.2代码实例 5.2.1观察get系列代码的差异 ​编辑 5.3.2普通文件的创建、删除 ​编辑 5.3.3普通文件的删除 ​编辑 5.3.4观察目录的创建 ​编辑 5.3.5 观察文件重…

【SpringBoot】事务管理

1. 事务管理的概念 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位。事务会把所有的操作作为一个整体&#xff0c;一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&#xff0c;要么同时失败。 事务的操作主要有三步&#xff1a; 开启事务&…

逆置算法和数组循环移动算法

元素逆置 概述&#xff1a;其实就是将 第一个元素和最后一个元素交换&#xff0c;第二个元素和倒数第二个元素交换&#xff0c;依次到中间位置。用途&#xff1a;可用于数组的移动&#xff0c;字符串反转&#xff0c;链表反转操作&#xff0c;栈和队列反转等操作。 逆置图解 …

Javaweb之Mybatis的XML配置文件的详细解析

2. Mybatis的XML配置文件 Mybatis的开发有两种方式&#xff1a; 注解 XML 2.1 XML配置文件规范 使用Mybatis的注解方式&#xff0c;主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能&#xff0c;建议使用XML来配置映射语句&#xff0c;也就是将SQL语句写在…

陆地探测一号01组(L波段差分干涉SAR)卫星

1. 卫星简介 陆地探测一号01组A/B卫星&#xff08;LT-1A/1B&#xff09;先后于2022年1月26日、2月27日在酒泉卫星发射中心成功发射&#xff0c;又被称为L波段差分干涉SAR卫星&#xff0c;是《国家民用空间基础设施中长期发展规划&#xff08;2015-2025年&#xff09;》中首个科…

DeepPurpose 生物化学深度学习库;蛋白靶点小分子药物对接亲和力预测虚拟筛选

参考: https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/107649770 https://github.com/kexinhuang12345/DeepPurpose ##安装 pip install DeepPurpose rdkitDeepPurpose包括: 数据: 关联TDC库下载,是同一作者开发的 https://blog.csdn.net/weixin_42357472/artic…

Windows:笔记本电脑设置休眠教程

前言 不知道大家在使用【Windows】笔记本有没有这个习惯&#xff0c;我会把他的电池选项的【休眠】设置进行打开。因为作为我们开发人员电脑一般是一周关一次机&#xff0c;有时候一个月关一次机。这时候【休眠】功能就给我们提供了一个好处&#xff0c;我们选择了【休眠】后电…

3D点云上的深度学习综述

1 Title Deep Learning for 3D Point Clouds: A Survey&#xff08;Yulan Guo; Hanyun Wang; Qingyong Hu; Hao Liu; Li Liu; Mohammed Bennamoun&#xff09;【IEEE Transactions on Pattern Analysis and Machine Intelligence 2020】 2 Conclusion Deep learning on point…

[C#]使用sdcb.paddleocr部署v4版本ocr识别模型

【官方框架地址】 https://github.com/sdcb/PaddleSharp 【算法介绍】 PaddleOCR&#xff0c;全称为PaddlePaddle OCR&#xff0c;是PaddlePaddle深度学习平台下的一款强大的光学字符识别工具。它利用深度学习技术&#xff0c;实现了高精度的文字识别&#xff0c;可以帮助用户…

Python | 基于Mediapipe框架的手势识别系统

一、项目要求 1、题目 本题着力于解决会商演示系统中的非接触式人机交互问题&#xff0c;具体而言&#xff0c;其核心问题就是通过计算机视觉技术实现对基于视频流的手势动作进行实时检测和识别。通过摄像头采集并识别控制者连续的手势动作&#xff0c;完成包括点击、平移、缩放…

Opencv实验合集——实验七:二维码和条形码匹配

1.概念 二维码&#xff08;QR码&#xff09; 概念&#xff1a; 二维码是一种矩阵式的二维条码&#xff0c;由黑白方块组成&#xff0c;可以存储大量的信息&#xff0c;包括文本、链接、数字等。QR码的编码方式是在矩阵中通过不同的黑白方块组合表示不同的信息。 特点&#xf…

【读书笔记】《白帽子讲web安全》跨站脚本攻击

目录 前言&#xff1a; 第二篇 客户端脚本安全 第3章 跨站脚本攻击&#xff08;XSS&#xff09; 3.1XSS简介 3.2XSS攻击进阶 3.2.1初探XSS Payload 3.2.2强大的XSS Payload 3.2.2.1 构造GET与POST请求 3.2.2.2XSS钓鱼 3.2.2.3识别用户浏览器 3.2.2.4识别用户安装的软…

【linux学习】重定向

目录 重定向标准输出、标准输入和标准错误标准输出重定向标准错误重定向将标准输出和标准错误重定向到同一个文件处理不想要的输出标准输入重定向 管道过滤器uniq-报告或者忽略文件中重复的行wc-打印行数、字数和字节数grep-打印匹配行head/tail 打印文件的开头部分/结尾部分te…

嵌入式系统习题(考试相关)

文章目录 上一篇嵌入式系统概述ARM技术概述ARM指令Thumb指令集ARM程序设计 上一篇 嵌入式系统复习–基于ARM的嵌入式程序设计 嵌入式系统概述 嵌入式系统中常用的通信接口包括哪些&#xff1f; RS-232C串行通信接口&#xff0c;RS-422串行通信接口&#xff0c;RS-485串行通信…

【APACHE】的认识和基础配置参数

#主页传送:江南的江 #每日鸡汤&#xff1a;人生没有如果和假设&#xff0c;只有后果和结果。生活有进有退&#xff0c;输什么也不能输心情。生活简单就是迷人的&#xff0c;学会简单其实就是不简单。要学会平静地接受现实&#xff0c;学会对自己说声顺其自然&#xff0c;学会坦…

基于实时Linux+FPGA实现NI CompactRIO系统详解

利用集成的软件工具链&#xff0c;结合信号调理I/O模块&#xff0c;轻松构建和部署实时应用程序。 什么是CompactRIO&#xff1f; CompactRIO系统提供了高处理性能、传感器专用I/O和紧密集成的软件工具&#xff0c;使其成为工业物联网、监测和控制应用的理想之选。实时处理器提…

leetcode——杨辉三角

https://leetcode.cn/problems/pascals-triangle/ 杨辉三角&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 核心思想&#xff1a;找出杨辉三角的规律&#xff0c;发…