STM32-adc

adc : analog digital converter : 模拟信号转换成数字信号

变化的电压信号,,, 转换成数字信号

12位,,逐次逼近型adc

采样深度:用多少位2进制来表示采样转换结果

12位二进制数 表示 采样的转换结果,,,

一般adc,,都是10位,12为,,一些高端的adc是用的14位,16位

逐次逼近型:

逐次逼近型: 里面有比较器,,, 从最高的一位开始,,依次往后加,,类似天平慢慢增加砝码

采样保持电路:


adc多路复用 : 只使用一个adc,,同时去转换多个模拟输入

adc1对应的引脚

常规序列: 后面开关,采样的闭合时间,,,,,,,,,

regular sequence

常规序列: 依次往后执行,,往后闭合开关,采样

外部触发一次之后,, 常规序列就会被一次采样一遍

注入序列:

结果寄存器

通道更少,,,注入序列数字为4,,,4个通道,, 每一个通道有一个单独的寄存器,,,

常规序列只有一个结果寄存器、

注入序列优先级比 常规序列高

常规序列: regular channel group

电位器,光敏电阻,,温度,,电压检测

注入序列 :injected channel group

电机控制 : pwm某时刻,,精确采样电流

电机,数字电源,高频控制


采样时间

转换时间

adc时钟频率,,要小于 14MHz... 这是stm32F1系列,对adc时钟的要求,,

adc内部不是瞬间转换的,,,

它内部有: 采样保持电路,比较器,,SAR逐次逼近逻辑,,这些都需要时间稳定,,

如果adc时钟太快,,

采样时间 = cycles × 时钟周期

采样时间是55.5个时钟周期,,,

教程里面说的us,,是根据一个固定的时钟周期,,计算出来的

12MHz ===》 4.6us ===》 6分频 ,,, 72/6

转换时间

转换时间一共要计算12个bit位,,每一个bit位需要消耗一个时间周期

总时间 = 采样时间 + 12.5 cycles

SAR ADC 逐次逼近型ADC,,内部不是一下子算出结果,,而是一位一位比较

0.5个周期: 启动比较器,锁存结果,SAR状态切换,,数据同步等


信号源内阻:

内阻越大,充电时间越长,,采样时间越长

·光敏传感器:

转换时间 12.5cycle

采样时间 10.24cycle

常规序列的单通道转换 : 就是只测一个通道,,,

常规序列

注入序列

控制采样开关,闭合的顺序和闭合的时间

eoc: end of convert 转换完成,,, 常规序列转换完成之后,标志位为1

JEOC: inject end of convert ,,, 注入序列转换完成,,标志位为1

DR :data register

JDR : inject data register

一般使用右对齐,,,右对齐好算


adc的参数:

  • 连续模式 continue mode : adc转换完了一次后,会自动再次开始转换,,不用你手动触发,,,采完一次,,立即开始下一次

    想实时监测,,比如电位器,电压,波形,传感器

  • 对齐方式

    默认取右对齐,,有时候只想取高8为,,可以设置为左对齐

  • 扫描模式 :scan mode : adc会自动按顺序转换多个通道,,,不开扫描模式,,,adc只会转换一个通道,,, 开启扫描模式会一个一个检查

  • 自动注入 auto injected

    注入组: injected group

    常规组转换完成后,,,自动触发 注入组转换,,,即regular完成,,,自动开始injected

    如果不开启自动注入,,regular和injected 完全独立,,,自动注入,,一般 电击FOC才大量使用

  • 外部触发信号 : external trigger

    由外部事件来启动adc转换,,,而不是cpu手动启动

    • 普通方式: 软件触发,,,, cpu手动让adc开始
    • 外部触发 : adc不再自己开始,,而是等待某个事件,,比如:定时器,,pwm,,exti,,TIM_CC,TIM_TRGO
      比如,定时固定拍照

复制代码
校准,, adc会自己测量内部误差,,自动补偿

,,官方推荐,,上电后校准一次

芯片里面只能存01的数字量,,不能直接存浮点数的电压,,adc会自动转换成 01数字量,,,,可以根据01的数字量还原多少电压

相关推荐
ICGOODFIND16 分钟前
2026物联网模组选型指南:U-BLOX定位模组+SIMCOM芯讯通主流蜂窝通信模组参数与场景适配
嵌入式硬件·物联网·硬件工程·iot
阿拉斯攀登36 分钟前
嵌入式 Linux 驱动概述:分类、内核模块、开发环境
linux·嵌入式硬件·linux内核·嵌入式·linux驱动
2401_854151551 小时前
STM32 位带操作——像 51 一样操作 GPIO
单片机·嵌入式硬件
zlinear数据采集卡11 小时前
从0到1硬核拆解:工业级数据采集卡的隔离设计与Modbus通信实战
arm开发·单片机·嵌入式硬件·fpga开发·开源
FreakStudio16 小时前
WIZnet 开源方案分享:W55MH32 开发板 + 小智 AI实现以太网版本的小智机器人
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
科芯创展16 小时前
XZ61N,N-channel open drain输出电压检测芯片
单片机·嵌入式硬件
省四收割者18 小时前
一文详解信号完整性(3)--规避SI问题的具体实现方法
嵌入式硬件·硬件架构·信号处理·智能硬件·pcb工艺·altium designer
巴巴媛66620 小时前
STM32学习笔记【32.BKP + RTC】
笔记·stm32·学习
KaifuZeng21 小时前
通信与接口协议面试十一、网口
嵌入式硬件·面试·通信与接口协议