江协学习笔记(ADC,DAM)

张开发
2026/6/20 19:50:20 15 分钟阅读
江协学习笔记(ADC,DAM)
ADC简介ADCAnalog-Digital Converter模拟-数字转换器 - ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量建立模拟电路到数字电路的桥梁 - 12位逐次逼近型ADC1us转换时间 - 输入电压范围0~3.3V转换结果范围0~4095 - 18个输入通道可测量16个外部和2个内部信号源 - 规则组和注入组两个转换单元 - 模拟看门狗自动监测输入电压范围 - STM32F103C8T6 ADC资源ADC1、ADC210个外部输入通道ADC的两个关键参数1·分辨率一般用位数来表示例如12位的AD值表示范围就是0~2的12-1次方量化结果范围就是0~4095位数越高量化结果越精细分辨率就越高2·转换时间就是转换频率Ad转换要花一小段时间如图上的1us就表示从ad转换开始,到产生结果要花1us的时间对应ad转换频率就是1MHZ。这就是32ADC的最快转换频率ADC内部结构普遍非32原理首先左边,这里有八路输入通道。通过通道选择开关选中一路输入到。选择开关这个点进行转换。它的下面是**地址锁存和译码**如果想选中哪个通道就把通道号放在这三个脚上,然后再给一个锁存信号上面对应的通路开关就可以自动拨好了所以下面这部分就相当于一个可以通过模拟信号的数据选择器想要转换时。只用拨一下开关选中对应通道然后开始就行了。这就是输入通道选择的部分。再就是电压比较器它可以判断两个输入信号电压的大小关系然后输出一个高低电平值表明谁大谁小。它的两个输入端一个是待测的电压另一个是DAC的电压输出端这里的DAC是数模转换器给它一个数据它就可以输出数据对应的电压这两个电压信号同时输入到电压比较器进行大小判断然后调整DAC的电压和另一个待测电压近似相等这样DAC输入的数据就是外部电压的编码数据了这就是DAC的实验原理。 这个电压调节的过程就是上面那个逐次逼近SAR来完成的。逐次逼近寄存器SAR从最高位MSB开始逐位试探比较比如对于8位ADC先设最高位为1其余位为0经DAC转换后与输入模拟电压比较若输出电压大于输入电压则该位清0否则保留为1 然后对下一位进行同样操作直到最低位LSB确定完成一次转换 。 再通过右边的缓冲器进行输出EOC就是转换结束信号Start是开始转换。给一个输入脉冲然后开始, Clock是ADC时钟。下面的VREF()和VREF(-)是DAC的参考电压同时也是ADC的参考电压。参考电压决定了ADC的量化范围比如VREF()5VVREF(-)0V 那么ADC能转换的模拟电压范围就是0 - 5V 并且参考电压越稳定量化精度相对越高。通常参考电压的正极会和VCC接在一起负极会和地接在一起。所以一般情况下ADC输入电压的范围就和ADC供电是一样的。基本结构总结左边是输入通道16个如下GPIO口外加两个内部的通道。然后进入ad转换器。里面有两个组一个是规则一个是注入。规则组最多可以选中16个通道注入组最多可以选择4个通道。然后转换的结果可以存放在ad数据寄存器里其中规则组只有一个数据寄存器注入组有4个然后在它的下面有触发控制提供开始转换的信号触发控制可以选择软件触发和硬件触发。硬件触发主要来源于定时器当然也可以选择外部中断的引脚。右边是来自于RCC的ADC时钟CLOCK,Adc逐次比较的过程就是由这个时钟推动的。然后在它的上面可以布置一个模拟看门狗用于监测转换结果的范围,如果超出设定的阈值就通过终端输出控制向c申请中断 另外注入组和规则组。转换完成后会有个EOC信号。他也会这一个标志位可以通向NVIC。最后右下角有一个开关控制,在库函数中就是ADC Cmd,给ADC上电,这些就是32ADC的内部结构图(ADC的16个通道与引脚复用的关系DMA简介DMADirect Memory Access直接存储器存取DMA 可以提供外设和存储器或者存储器和存储器之间的高速数据传输无须 CPU 干预节省了 CPU 的资源12 个独立可配置的通道DMA17 个通道 DMA25 个通道每个通道都支持软件触发和特定的硬件触发计算机系统的5大组成运算器控制器存储器输入输出设备CPU运算器控制器注软件触发通用硬件要有特定的触发通道ROM是只读存储器是一种非易失性掉电不丢失的存储器RAM是随机存储器是一种易失性掉电丢失的存储器数据传输宽度影响小转大高位补0大转小高位舍弃AD转换是“模数转换”的简称是将**模拟信号转换成数字信号**的过程。简单理解现实世界中的信号如声音、电压、温度等大多数是连续变化的模拟信号但计算机和数字电路只能处理离散的数字信号。所以我们需要一个AD转换器ADCAnalog to Digital Converter把模拟信号变成可以被处理的数字信号。举个例子你在用麦克风说话声音是一种模拟信号。麦克风把声音转成电压信号。AD转换器把这个电压信号变成一串数字才能在计算机中储存、处理或传输。AD转换的关键步骤包括采样Sampling把连续时间的模拟信号在时间上等间隔地“取点”。量化Quantization把采样得到的模拟电压值映射到有限个等级比如0~255。编码Encoding把每个量化后的等级转换为二进制数字。相关参数采样率Sampling Rate每秒采样多少次单位Hz。采样率越高越能还原原始信号。分辨率Resolution通常用几位bit表示比如8位、10位、12位、16位等位数越多转换精度越高。基本结构问题什么是 DMADMADirect Memory Access就是一种**不用CPU亲自搬数据**的方法让硬件帮你在“存储器”和“外设”之间搬运数据。---DMA 的基本结构看图讲解图中分成了左右两边* **左边是外设**比如串口、ADC、定时器需要告诉 DMA* 从哪里开始读起始地址* 每次读多大数据宽度* 每读一次地址要不要往后挪自增* **右边是存储器**比如 Flash、SRAM* 和外设那边设置是一样的。虽然图里写“外设”和“存储器”但你可以把 Flash 或 SRAM 当成“外设”来用实现“存储器对存储器”的传输没问题名字而已。数据是怎么搬的#### 三种搬法1. **外设 ➡ 存储器**比如 ADC 采集数据放到 SRAM2. **存储器 ➡ 外设**比如从内存读数据发给串口3. **存储器 ➡ 存储器**比如把 Flash 里的数据搬到 SRAM注意* ❌ Flash ➡ Flash 不支持* ❌ SRAM ➡ Flash 也不支持。---每次搬多少怎么搬这就要靠 **三个参数** 控制1. **起始地址**搬运从哪开始2. **数据宽度**每次搬多少字节8位、半字16位、字32位3. **地址自增**搬完后地址要不要往后挪常用于连续数据。---“传输计数器”和“自动重装器”是干嘛的* **传输计数器**告诉 DMA 总共要搬几次* 每搬一次就减一* 减到 0 就不搬了。* **自动重装器**决定搬完一轮之后要不要“自动开始下一轮”* 打开它就会一轮接一轮搬适合循环用* 不打开搬一次就停。就像洗衣机你设定转5分钟自动重装器就是“到了时间要不要自己再洗一遍”。---DMA 是怎么启动的必须有“触发”才会启动搬运两种方式1. **硬件触发**比如 ADC 转换完成或者定时器到了2. **软件触发**程序自己启动一次适合“存储器对存储器”的一次性搬运。图中的 M2M 就表示存储器到存储器的搬法一般配合“软件触发”。---什么条件下 DMA 才能搬数据启动 DMA 有三个前提1. DMA 开关要打开2. 传输次数 03. 有触发信号来了硬件或软件如果传输次数已经减到 0DMA就会停下来。如果你想再搬一次需要* 重新写传输次数* 再次启动 DMA不能在开启状态下修改参数。---总结DMA 就像个自动搬运工你告诉它* 从哪搬* 搬到哪* 每次搬多少* 总共搬几次* 什么时候搬触发方式它就自己把数据搬过去不用你 CPU 插手非常高效。

更多文章