IN1~8:输入通道
ADDA~C:选中通道的通道号放在这三个引脚上
ALE:锁存信号
比较器:一端是待测电压,一端接在DAC(数模转换,即给一个数据可以测出数据对应的电压)上。它两同时输入到电压比较器里,进行大小判断,通过调节DAC的电压,直到DAC输出的电压,与外部通道输入的电压近似相等,这样DAC输入的数据就是你外部电压的编码数据了,这个电压调节的过程就是逐次逼近SAR来完成的。一般使用二分法来完成。
一般情况下,VERF+要接VDDA ,VERF-要接VSSA,但在这个C8T6芯片上没有VERF+和VERF-的引脚,在内部就已经和VDDA和VSSA连在一起了,VDDA和VSSA在引脚定义表中可以看到,是内部模拟部分的电源。
触发转部分也就是上个图的START信号
对于STM32的ADC,触发ADC开始转换的信号有两种。
它里面可以存一个阈值高限和阈值低限,如果启动看门狗,并且指定了看门通道,看门狗就会 关注它的看门通道,一点查过阈值范围了,就会在上面申请模拟看门狗的中断通向NVIC。
对于注入组和规则组而言,也有一个EOC转换完成的信号,EOC是规则组的完成信号,JEOC 是注入组的完成信号,这两个信号会在,状态寄存器里置一个标志位,读取标志位就知道是不 是转换结束了,同时这两个标志位也可以去NVIC申请中断。
触发控制:提供控制转换START信号,触发控制可以选择 软件、硬件触发(定时器/外部中断引 脚)。
RCC(CLOCK):ADC逐次比较的过程就是这个时钟推动的
模拟看门狗:用于监测转换结果的范围,若超出设定的阈值, 就可通过中断输出控制,向NVIC 申请中断,另外规则组和注入组还有个JEOC、EOC信号,指标志位通向NVIC。
这些就是ADC18个输入通道对应的引脚,可在引脚定义表中查看。
在C8T6这个芯片中,只有IN0~IN9十个通道,对应也就是PA0~PB1
注:例如引脚定义表中ADC12_IN0的意思是,ADC1和ADC2的IN0都是在PA0上的。
同时,只有ADC1上有温度传感器和内部参考电压,GPIO顺 序是PA0~7,PB0~1,PC0~5
在ADC初始化函数里,会有两个参数,一个是选择单次转换或者连续转换;另一个是选择扫描模式还是非扫描模式。
C8T6的ADC是12位(10GPIO+2)的,转换结果就是12位,但我们的数据寄存器是16位,所以就有数据对齐。
一般使用数据右对齐,这样读取16位寄存器,直接就是转换结果,若用左对齐,得到的数据比实际数据大24倍。
如果使用数据左对齐一般就是不需要这么多的精度,只取前八位后四位舍弃,就是八位的精度了
采样,保持:因为AD转换,就是后面的量化,编码需要一小段时间的,如果在这一小段时间里输 入的电压还在不断变化,就没法定位输入电压到底在哪,所以在量化编码前,需要设 置一个采样开关,打开开关,收集外部的电压,然后断开采样开关,再进行后面的 AD转换,这样量化编码期间,电压保持不变。
量化,编码:就是之前的逐次逼近的过程。需要花一部分时间,一般位数越多花的时间越长。
采样时间:采样保持过程中,需要闭合采样开关,过一段时间再断开,就会产生一个采样时间。
图2:电阻减小,串联分压,下拉作用变强,输出端电压就下降
电阻增大,串联分压,上拉作用变强,输出端电压就上升
可变电阻(光敏,热敏)都是光线、温度提高,阻值下降。
图3:简易的电压转换电路,Vin是0~5v,串联分压,R1的电压是5/50*17=1.7V,同理 PA2=UR2=3,3V。
加了*号是比较重要的,其他的了解认识即可。
1.这个函数是用来配置ADCCLK分频器的,他可以对APB2的72MHZ选择2、4、6、8分频,输入到ADCCLK
2.回复缺省配置
*3.初始化
4.结构体初始化
*5.给ADC上电的(开关控制)
*6开启DMA输出信号的,如果使用DMA转运数据,就得调用这个函数
*7.中断输出控制,用于控制某个中断,能不能前往NVIC
8.复位校准
9.获取复位校准状态
10.开始校准
11.获取开始校准状态
12.ADC软件开始转换控制,就是用于软件触发的函数了
13.ADC获取软件开始转换状态,这个函数是返回SWSTART的状态,不能判断AD转换是否结束
14.配置间断函数的,这个函数作用是:每隔几个通道间断一次
15.配置间断函数的,这个函数作用是:是不是启用间断函数
*16.ADC规则组通道配置,它的作用是给每个序列填写通道,参数分别是,1 ADCX,2你想指定的通道,3序列几的位置,4指定通道采样时间
17.ADC外部触发转换控制,就是是否允许外部触发转换
*18.ADC获取转换值,就是获取AD转换的数据寄存器,读取转换结果使用的函数。
19.ADC获取双模式转换值,这个就是双ADC模式读取转换结果的函数
*20.获取标志位状态,参数给EOC的标志位,判断EOC标志位2是不是置1了,如果转换结束EOC标志位置1,然后调用这个函数,判断标志位,这才是正确的判断转换是否结束的方法。
21.这个函数是对模拟看门狗进行配置的,这个是:是否启动模拟看门狗
22.这个函数是对模拟看门狗进行配置的,是:配置高低阈值
23.这个函数是对模拟看门狗进行配置的,是:配置看门的通道
24.ADC温度传感器、内部电压参考电压控制,这个是用来开启内部的两个通道,如果想使用这两个通道,就得调用这个函数,开启一下
25.获取标志位状态
26.清除标志位
27.获取中断状态
28.清除中断挂起位