STM32F103之ADC学习记录
1、问题
1)10位ADC的误差是多少?
首先要分清分辨率与精度的区别。
10cm的尺子,有100个等分刻度,则该尺子的分辨率为1mm。
但不能说这把尺子的精度是1mm。
在冬天,尺子会热胀冷缩,依然有100格刻度,每格刻度代表1mm,但每格刻度与真实的1mm是不同的,精度在变化。
实际上,10位的ADC将会把基准电压分成1024份,分辨率为:基准电压/1024。
2)ADC的采样频率是多少?
芯片开发手册上转换时间公式为:

例子中,采样频率为1MHz。
3)STM32F103这款芯片有多少个ADC采集通道?


芯片内有3个ADC控制器:ADC1、ADC2、ADC3,每个ADC控制器有16个通道,另外还有两个内部通道,一个测量内部温度,一个测量参考电压。
一个ADC控制器每个时刻只能测一个通道,测完可以切换到另一个通道。
4)ADC以什么为参考电压?

上述表格说明了参考正电压与参考负电压。
5)ADC测量电压的范围是多少?

ADC模块中有一个模拟看门狗,通过程序可以设置上下阈值。
(6)规则通道与注入通道

注入通道类似中断。
//===============阅读开发手册笔记====================//
11 模拟到数字转换器(ADC)
11.1 ADC介绍
12位ADC是逐次逼近的模数转换器。
芯片有18路测量通道。
其中16路可以单独测量信号,2路测量内部信号。
模数转换器可以应用在单一、连续、扫描以及不连续模式下。
ADC测量转换的结果存放在一个左对齐或右对齐的16位寄存器里。
当输入电压在用户定义的阈值外,模拟看门狗能够允许程序检测到。
ADC的输入时钟是由PCLK2时钟除以一个预分频系数得到的,
频率不能超过14MHz。
11.2 ADC主要特征
12位的精度。
在转换结束时,输入转换结束时,模拟看门狗事件时都会触发中断。
离散或连续模式。
扫描模式自动转换通道0到通道n。
自校准。
数据对齐与内部数据一致性。
通道到通道编程采样时间。
常规转换还是注入转换,都是外部触发选项。
不连续模式。
双重模式。
ADC的转换时间。
ADC供电范围:2.4 - 3.6V。
ADC电压输入范围:VREF- ≤ VIN ≤ VREF+ 。
在常规通道转换时,DMA请求产生。
注意:如果允许的话,VREF-要与VSSA绑定。
11.3 ADC功能描述
ADC模块图






注意:ADC3与ADC1和ADC2不同的触发条件。

11.3.1 ADC开关控制
可以通过在ADC_CR2寄存器中设置ADON位来启动ADC。
当ADON位第一次被置1的时候,它从电源关闭模式唤醒ADC。
在ADC上升时间后,ADON位被软件再一次置位后,转换开始。
转换可以被停止,并且清除ADON位后,ADC会进入关机模式。
11.3.2 ADC时钟
时钟控制器提供的ADCCLK时钟与PCLK2(APB2时钟)是同步的。
RCC控制器有一个专门用于ADC时钟的可编程预调器。
11.3.3 通道选择
有16个多路复用通道。
可以将转换组织在两个组中:常规和注入。
组由一系列转换组成,任何通道任何顺序都可以转换。
例如:可以用如下顺序进行转换:Ch3, Ch8, Ch2, Ch2, Ch0, Ch2, Ch2, Ch15。
常规组由最多16个转换组成。
常规通道和他们在转换次序的顺序必须在ADC_SQRx寄存器中设置。
常规组转换的总数必须在ADC_SQR1寄存器里设置L[3:0]位。
注入组由最多四个转换组成。
注入通道和它们在转换中的次序必须在ADC_JSQR寄存器中选择。
在注入组中转换的总数必须在ADC_JSQR寄存器的L[1:0]位写。
如果在转换的过程中修改了ADC_SQRx或者ADC_JSAQR寄存器,
当前的转换会被重置,一个新的开始脉冲被发送给ADC,去转换新选择的组。
温度传感器内部通道
温度传感器与ADCx_IN16通道相连,并且内部参考电压VREFINT与ADCx_IN17相连。
可以选择这两个内部通道,将其转换为注入通道或常规通道。
传感器和VREFINT只能在主ADC1外设上使用。
11.3.4 单次转换模式
在单次转换模式下,ADC进行一次转换。
启动这种模式的条件:当CONT位是0,设置ADC_CR2寄存器的ADON位或者通过外部的触发。
一旦选定通道的转换完成:
如果是常规通道转换:
转换的数据就存储在16位的ADC_DR寄存器里。
结束转换标志位(EOC)会被设置。
如果EOCIE被设置了,会产生一个中断。
如果是注入通道转换:
转换的数据会被存储在16位的ADC_DRJ1寄存器内。
内部转换完成(JEOC)标志会被设置。
如果JEOCIE标志设置了,会产生一个中断。
然后ADC就会停止。
11.3.5 连续转换模式
在连续转换的模式下,ADC在一次转换完成后立即进行下一次转换。
这种模式可以由外部触发器启动,也可以通过设置ADC_CR2寄存器的ADON位来启动,这些都是在CONT位为1的情况下。
在每一次转换后:
如果是常规通道转换:
转换的数据会被存储在16位的ADC_DR寄存器里。
转换结束(EOC)标志会被设置。
如果EOCIE被设置,会产生一个中断。
如果是注入通道转换:
转换数据会被存储在16位的ADC_DRJ1寄存器里。
注入转换结束(JEOC)标志会被设置。
如果JEOCIE位被设置,会产生一个中断。
11.3.6 时序图
在ADC进行精确转换之前需要一段稳定的时间(tSTAB)。
ADC开始转换后经历14个时钟周期,EOC标志位会被置位,
16位的ADC数据寄存器就包含了转换的结果。

11.3.7 模拟看门狗
如果模拟转换电压高于最高阈值或低于最低阈值,AWD模拟看门狗状态位会被设置。
这些阈值是可以通过编程改变的,在ADC_HTR和ADC_LTR寄存器里。
在ADC_CR1寄存器里通过使用AWDIE位可以使能中断。
阈值与ADC_CR2寄存器里的ALIGN位无关。
对比是在对齐之前完成的。
设置ADC_CR1寄存器可以使能一个或多个的看门狗通道。



11.3.8 扫描模式
该模式用于扫描一组模拟通道。
扫描模式可以通过设置ADC_CR1寄存器中的SCAN位来启动。
一旦这位被设置了,
11.3.9 注入通道管理
11.3.10 不连续模式
11.4 校准
11.5 数据转换
11.6 采样时间
11.7 以外触发的方式转换
11.8 DMA请求
11.9 双ADC模式
11.10 温度传感器
11.11 ADC中断
11.12 ADC寄存器
STM32F103之ADC学习记录的更多相关文章
- STM32F103之DMA学习记录
/================翻译STM32F103开发手册DMA章节===========================/ 13 DMA(Direct memory access) 13.1 ...
- STM32F103之定时器学习记录
/==============翻译STM32F103开发手册定时器部分========================/ 14 高级控制计时器(TIM1和TIM8) 14.1 TIM1和TIM8介绍 ...
- STM32F103之GPIO学习记录
9 GPIO:通用I/O口 AFIO:可供选择的I/O口 9.1 GPIO功能描述 每一个通用的I/O口都有: 两个32位的配置寄存器(配置寄存器低和配置寄存器高): 两个32位的数据寄存器(输入数据 ...
- STM32F103之I2C学习记录
26.3.1 模式选择 该外设可以在以下四种模式之一 1)从机发送模式 2)从机接收模式 3)主机发送模式 4)主机接收模式 IIC协议时序 MSB:Most Significant Bit(最高有 ...
- STM32F103之USART学习记录
1.USART的主要特性 1)名称:串行异步通信接口 2)全双工.异步通信 3)发送和接收速率最高可达4.5MBits/s 4)可编程数据长度8或9bits 5)可配置的停止位:支持1或2位停止位 6 ...
- Quartz 学习记录1
原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...
- Java 静态内部类与非静态内部类 学习记录.
目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...
- Apache Shiro 学习记录4
今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...
- UWP学习记录12-应用到应用的通信
UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...
随机推荐
- 用友UAP NC 单据节点_打开参照字段的问题_从打不开参照放大镜_到成功打开了但是取不到值_到修复成功
项目的这个功能是17年开发的,但是当时没有测试通过,今年拿出来测试(通过后会上线). 有两个表数据一开始只打算用来计算时查询,没打算放到目标单据中做表体参照字段.后来改细节问题后放到目标单据中做参照字 ...
- swiper快速切换插件(两个综合案例源码)
swiper快速切换插件 swiper.js自己去官网下载哈.先来一个tab切换案例: demo.html <!doctype html> <html> <head> ...
- Codeforces Round #613 (Div. 2) (A-E)
A略 直接求和最大的子序列即可(注意不能全部选中整个子序列) or #include<bits/stdc++.h> using namespace std; void solve(){ i ...
- 题解 AT4164 【[ABC102A] Multiple of 2 and N】
首先我们先来回忆一下小学一年级就学过的知识:任何一个偶数都是 \(2\) 的倍数,那么我们就可以分成两种情况考虑:奇数和偶数. 对于偶数,我们可以直接将其输出,因为它必定能被 \(2\) 与它自己整除 ...
- mysql 时间,时间戳,字符串之间相互转换
时间转字符串 date_format(now(),'%Y-%m-%d') 时间转时间戳 unix_timestamp(now()) 字符串转时间 str_to_date('2020-01-19','% ...
- Docker最全教程——从理论到实战(十六)
前言 与其他语言相比,Go非常值得推荐和学习,真香!为什么?主要是可以直接编译成机器代码(性能优越,体积非常小,可达10来M,见实践教程图片)而且设计良好,上手门槛低.本篇主要侧重于讲解了Go语言的优 ...
- C#中怎样获取System.Drawing.Color的所有颜色对象并存到数组中
场景 需要在生成一组多条曲线时,随机从一颜色数组中取颜色,至少一百种颜色以上. 而System.Drawing.Color自带140多种颜色 那么怎样将其自带的颜色对象取出并存在数组中. 注: 博客主 ...
- Win10安装4 —— 通过BIOS进入PE
本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12369367.html 一:"BIOS"与"PE& ...
- 题解【AcWing902】最短编辑距离
题面 经典的最长公共子序列模型. 我们设 \(dp_{i,j}\) 表示 \(a_{1...i}\) 与 \(b_{1...j}\) 匹配上所需的最少操作数. 考虑删除操作,我们将 \(a_i\) 删 ...
- 机器学习作业(一)线性回归——Matlab实现
题目太长啦!文档下载[传送门] 第1题 简述:设计一个5*5的单位矩阵. function A = warmUpExercise() A = []; A = eye(5); end 运行结果: 第2题 ...