ADC模数转换器(内含:1.实物图+2.ADC简介+3.ADC框图+4.ADC基本结构图+5.输入通道+6.转换模式+7.触发控制+8.数据对齐+9.硬件电路)

简介: ADC模数转换器(内含:1.实物图+2.ADC简介+3.ADC框图+4.ADC基本结构图+5.输入通道+6.转换模式+7.触发控制+8.数据对齐+9.硬件电路)

1.实物图如下:


71f46c872f424fd5a4ae831038f5ed51.png


左侧为电位器,用这个电位器产生0~3.3V连续变化的模拟电压信号。然后接到STM32的PA0口上,之后用STM32内部的ADC读取电压数据,显示在屏幕上。屏幕第一行显示AD转换后的原始数据,第二行是经过处理后的实际电压值。


手动拧电位器,左拧,AD值减少,电压减少;AD值最小为0,电压最小也为0V;右拧,AD值变大,电压增大;AD最大值为4095(2的12次方-1).对应电压3.3V。


GPIO只能读取引脚的电平,结果只能是高电平or低电平。使用ADC后,就可以对高低电平之间任意电压量化,最终用一个变量表示,读取变量,就能得到引脚的具体电压。所以ADC就是电压表,测GPIO的引脚电压,放在变量里。


4c25612c31db496ebd12c7689fd36289.png


外接光敏电阻,热敏电阻和反射红外模块,他们的AO,模拟电压输出端分别接在A1,A2,A3引脚。


遮挡光线,温度升高,手靠近有反光,光敏电阻,热敏电阻和反射红外阻值增大。


2.ADC简介


2a9423d1a34b499096ccbf63cab97f29.png


逐次逼近型ADC


581e561527cc46d18e2b705e0ce7e44d.png


独立的8位逼近型芯片。左上方的IN0~IN7为8为输入通道,通道选择开关选择一路,经过比较器。


选择哪一路,看的是左下方的地址锁存和译码。把通道号给ADDA~ADDC,ALE是锁存信号。


注:ADC0809只有八路选择开关。STM32有18路通道选择开关。


比较器的两个电压分别是,外部通道输入电压(未知),已知DAC输出电压。进行判断,如果DAC输出电压较大,调小DAC数据;如果DAC输出电压较小,增大DAC数据。直到DAC与外部通道输入电压相近。即逐渐逼近SAR(二分法)


3.ADC框图


69f2d0fa19704b31ad0e5793948a7462.png

42793a8ef15a4fe6b5e3e75206e7a177.png


模拟看门狗如上图,模拟看门狗-->注入通道数据寄存器和规则通道数据寄存器。若超过阈值,就申请看门狗事件传递给上方并预警,最终给NVIC的ADD中断。


以下为ADC框图中的16个引脚的具体说明:


ea4f7ca92f664393a3cc3af554c2fc5f.png


16个外部输入引脚,两个内部输入,共18个通道。


注:选择时,较高级,一次性规则通道最多选择16个;注入通道最多选择4个。但是规则通道数据寄存器一次性只能处理一个通道的数据,需要DMA请求来将处理过的请求搬运走。


注入通道数据寄存器可以同时处理4个通道的数据。


以下为ADC框图的START(开始转换信号)具体说明:


5b486ec3b4224713a950618973207e93.png


触发ADC转换的信号有两种:1.软件触发。2.硬件触发(如上图)


不能反复的触发中断,影响系统的操作。如,需要做到:给TIM31定1ms时间,更新事件选择为TRGO输出,ADC选择开始触发信号为TIM3的TRGO。此时,TIM3的更新事件就通过硬件自动触发ADC转换。不需要触发中断了。


4e6dd84c871b42188b68cd1d5bb9b981.png


VREF+,VREF-是ADC的参考电压,决定ADC输入电压的范围。VDDA,VSSA是ADC的供电引脚。一般情况下,VREF+接VDDA;VREF-接VSSA。(也可能在芯片内部就已经接好)


ADCLOCK是CLOCK,是用于驱动内部逐次比较的时钟。


ADC预分频器是来自于RCC的。如下图:


0f618f70529b4e3eb880c478c473fe45.png


注:此处的ADC是72MHz,但是ADCCLOCK最大是14MHz,所以只能选择6分频,8分频。


4.ADC基本结构图(总结/简化上图)


47afbca1851346a083f02930ab5c2ccb.png


5.输入通道(16个外部通道):


a311238b6577420ab25d7113bd12e17c.png


注:ADC1,ADC2引脚基本相同,我们用的芯片没有ADC3,且没有PC0~PC5(通道10~通道15).


ADC参数中有控制转换(单次转换,连续转换),扫描模式(扫描模式还是非扫描模式).


非扫描模式:只能选择一个,只有序列一(里面可写如通道2)起作用,可选择。此时ADC对通道2进行模数转换。转换结果完成后将结果放在数据寄存器里,同时给EOC标志位置1。因此,直接判断EOC标志位,如果转换完了,就读取数据寄存器的结果。(单次转换;可反复操作,但需要等待)若想更换通道,则再启动前就改为通道2。(连续转换:可以自动转换)


注:如果是连续转换,还需要配置参数:通道数目(作用是例如规定7,只看前七个通道,其他的不看)


6.转换模式:


a92414af0fb94d2bbf42669a404204d9.png

30384a5303a54971ab5f43100ba6e115.png

543844c60bf74b8dbbf56d45b26734bd.png

3f1297bc251c48578b53578940494e59.png


7.触发控制:


42b426f49dbb442bb0c435ea14379b09.png


8.数据对齐(12位数据转16位数据):一般选择数据右对齐(直接最高位补4个0),如果选择左对齐,则数据比实际数据大了2的4次方,即16倍。


1b97a0d9a96e43d5b4a73bfba649514f.png


转换时间:


00318f92620b4add916690fda45f32fe.png


采样时间是采样保持花费的时间,在程序中可配置。采样时间越大,毛刺信号(不理想信号)越少。12.5个ADC周期是量化编码花费的时间。


校准:


2fd52d5fb30048688a77c9bd763215bb.png


注:此处只需要记得有校准操作和代码即可,不需要理解。


9.硬件电路:


c8e4e0d0a994484ab9f035f308b5d59b.png


电阻不能太小,否则会费电甚至烧损。


注:想更了解的,可翻看参考手册STM32F10XXX(中文)的第11章节,模拟/数字转换


相关文章
|
编解码
STM32:ADC单通道(内含:1.实物图/接线图+2.代码部分如下+3.AD用到的库函数总结)
STM32:ADC单通道(内含:1.实物图/接线图+2.代码部分如下+3.AD用到的库函数总结)
827 0
STM32:ADC单通道(内含:1.实物图/接线图+2.代码部分如下+3.AD用到的库函数总结)
|
网络协议 Shell Linux
【Shell 命令集合 网络通讯 】Linux 创建网络连接 nc命令 使用教程
【Shell 命令集合 网络通讯 】Linux 创建网络连接 nc命令 使用教程
533 1
|
传感器 Linux Python
一起玩转树莓派(19)——红外遥控控制实验
红外遥控是生活中非常常见的电子器具,电视机,空调,音响等电器都可以通过遥控器进行控制。本篇博客,我们尝试来通过红外发生器和红外信号接受器来进行红外控制实验,在树莓派上通过红外遥控的按键来处理LED灯的控制。
2174 0
|
自然语言处理 监控 语音技术
STM32 使用SYN6288语音模块
STM32 使用SYN6288语音模块
1525 0
|
传感器 物联网 5G
物联网的通信技术以及Wi-Fi、一键配网技术、BLE、GPRS(2G)、LTE-Cat1 、NB-IoT简介
物联网的一个重要的特点是接入了网络,因此这些设备才能将传感器采集的数据上传到云平台,然后根据平台对数据的分析做出反应。而这种接入网络的技术,就是通信技术,是物联网的基础之一。通信的方式可以分为有线和无线两种方式,因为有线通信的成本较高,无线通信技术在物联网中应用比较广泛。
564 1
|
算法 5G 数据安全/隐私保护
大规模MIMO通信系统信道估计matlab性能仿真,对比LS,OMP,MOMP以及CoSaMP
本文介绍了大规模MIMO系统中的信道估计方法,包括最小二乘法(LS)、正交匹配追踪(OMP)、多正交匹配追踪(MOMP)和压缩感知算法CoSaMP。展示了MATLAB 2022a仿真的结果,验证了不同算法在信道估计中的表现。最小二乘法适用于非稀疏信道,而OMP、MOMP和CoSaMP更适合稀疏信道。MATLAB核心程序实现了这些算法并进行了性能对比。以下是部分
572 84
|
12月前
|
开发框架 Java .NET
C#与Java
在动态且不断发展的软件开发世界中,Java 和 C# 是两个巨头,每个都有自己独特的优势、理念和生态系统。本文深入比较了 Java 和 C#,探讨了它们的历史背景、语言特性、性能指标、跨平台功能等。
345 19
C#与Java
|
传感器 机器学习/深度学习 监控
基于STM32的智能工厂生产线故障诊断系统设计与实现
基于STM32的智能工厂生产线故障诊断系统设计与实现
385 2
|
10月前
|
机器学习/深度学习 传感器 边缘计算
基于深度学习的图像识别技术在自动驾驶中的应用####
随着人工智能技术的飞速发展,深度学习已成为推动自动驾驶技术突破的关键力量之一。本文深入探讨了深度学习算法,特别是卷积神经网络(CNN)在图像识别领域的创新应用,以及这些技术如何被集成到自动驾驶汽车的视觉系统中,实现对复杂道路环境的实时感知与理解,从而提升驾驶的安全性和效率。通过分析当前技术的最前沿进展、面临的挑战及未来趋势,本文旨在为读者提供一个全面而深入的视角,理解深度学习如何塑造自动驾驶的未来。 ####
403 1