完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、ADC是什么
ADC全称Analog to Digital Converter:模拟数字转换器。拥有12位测量范围,可以通过STM32上GPIO端口的输入模式实现对外部传感器的测量,测量范围为0-3.3V(0-4096) 2、ADC介绍 1、ADC总共有以下寄存器 (1) ADC状态寄存器/Status register ADC_SR (2)ADC控制寄存器1/Control registier 1 ADC_CR1 (3)ADC控制寄存器2/Control register 2 ADC_CR2 (4)ADC采样时间寄存器1/Sample Time rigister 1 ADC_SMPR1 (5)ADC采样时间寄存器2/Sample Time rigister 2 ADC_SMPR2 (6)ADC注入通道数据偏移寄存器/Injected Channel Data Offset register ADC_JOFRx (7)ADC看门狗高阈值寄存器/Watching High Threshould register ADC_HTR (8)ADC看门狗低阈值寄存器/Watching Low Threshould register ADC_LTR (9)ADC规则序列寄存器1/Regular sequence register ADC_SQR1 (10)ADC规则序列寄存器2/Regular Sequence register ADC_SQR2 (11)ADC规则序列寄存器3/Regular Sequence register ADC_SQR3 (12)ADC注入序列寄存器/Injected Sequence register ADC_JSQR (13)ADC注入数据寄存器x/Injecter Data registerx ADC_JDRx (14)ADC规则数据寄存器/Regular Data register ADC_DR ADC初始化结构体 typedef struct{ uint32_t ADC_Mode;//工作模式 FunctionalState ADC_ScanConvMode;//扫描(多通道)或者单次(单通道)模式使能 FunctionalState ADC_ContinuousConvMode;//单次转换或者连续转换模式 uint32_t ADC_ExternalTrigConv;//转换触发信号选择 uint32_t ADC_DataAlign;//数据寄存器对齐模式 uint8_t ADC_NbrOfChannel;//采集通道数 }ADC_InitTypeDef; ADC_Mode:配置ADC_CR1寄存器的位19:16(DUALMOD) 可以选择: 0000:独立模式 0001:混合的同步规则+注入同步模式 0010:混合的同步规则+交替触发模式 0011:混合同步注入+快速交叉模式 0100:混合同步注入+慢速交叉模式 0101:注入同步模式 0110:规则同步模式 0111:快速交叉模式 1000:慢速交叉模式 1001:交替触发模式 ADC_ScanConvMode:配置ADC_CR1寄存器的位8(SCAN),扫描模式为单通道扫描模式或者多通道扫描模式 ADC_ContinuousConvMode:配置ADC_CR2的位1(CONT),ADC转换模式为连续转换(1)或单一模式(0) ADC_ExternalTrigConv:配置ADC_CR2的位19:17(EXTSEL),选择外部事件用于启动规则通道转换 ADC1和ADC2的触发配置如下 000:定时器1的CC1事件 100:定时器3的TRGO事件 001:定时器1的CC2事件 101:定时器4的CC4事件 110: EXTI线11/ TIM8_TRGO事件,仅大容量产 品具有TIM8_TRGO功能 010:定时器1的CC3事件 011:定时器2的CC2事件 111: SWSTART ADC3的触发配置如下 000:定时器3的CC1事件 100:定时器8的TRGO事件 001:定时器2的CC3事件 101:定时器5的CC1事件 010:定时器1的CC3事件 110:定时器5的CC3事件 011:定时器8的CC1事件 111: SWSTART ADC_DataAlign:配置ADC_CR2的位11(ALIGN),数据寄存器的对齐模式,左对齐(1)或右对齐(0) ADC_NbrOfChannel:配置ADC_SQR1的位23:20(L),规则通道序列长度0-16个 3、程序设计思路 初始化配置 开时钟GPIO和ADC 配置ADC所使用的的GPIO端口:配置为模拟输入(GPIO_Mode_AIN) 配置ADC初始化结构体 ADC使能,ADC_Cmd ADC使能复位校准等待复位完成后 开启AD校准等待校准结束 获取ADC的测量值 设置指定ADC的规则通道 ADC_RegularChannelConfig() 使能指定通道的软件转换启动 等待ADC测量中断,读取ADC_DR寄存器的数据 4、ADC数据转换方法 STM32中ADC为12位,所以ADC的数据计数阈值为0-4096,电压阈值为0-3.3V 3.3/4096 = 0.0008056641 即ADC的测量可以精确到小数点后三位,对于一般的使用,精度已经够用了。 5、ADC量程扩展办法 如果直接连接GPIO端口的话,输入电压最高不可以超过3.3V,那么如果想测量超过3.3V的电压该怎么办呢? 我们可以通过增加电阻的方法,按GPIO的端口电压和测量电压的比例增加电阻,保证输入GPIO的电压最大值恒为3.3V,然后通过一定的计算即可达到测量更高电压的办法 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
2228 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1855 浏览 1 评论
1353 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
883 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
2218 浏览 2 评论
2122浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
1048浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
414浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
742浏览 3评论
722浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-4-22 20:11 , Processed in 0.585458 second(s), Total 41, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191