文章目录
1.模数转换器(ADC)是什么?
参考资料:adc模数转换器的作用。
模数转换器即A/D转换器,或简称ADC(Analog-to-digital converter),通常是指一个将模拟信号转变为数字信号的电子元件。
模拟信号 -> 电压
数字信号 -> 0和1组成的二进制数
那我们思考下我们单片机是怎么把模拟信号转化为数字信号的呢?
原理演示视频:见B站《逐次逼近型ADC转换过程的动画演示》。
简单的总结一下ADC到底是一个什么样的原理?
如果没有超,就写1,如果超了就写0.
分别测量一下两组板子的高度,从大到小一级一级的给它比较上去
结束以后是221.








如果增加比较的位数,精度更高:


当然这个位数也不是能一直无限制的高下去,毕竟环境噪声也会对他有所千扰(精度太高,吹口气就有误差了)。
一般的话12位到16位绰绰有余。这就是ADC的一个转化的一个过程,一位一位的逐次转化。
手册说明:
ADC模数转换、传统DAC实现
STC32G系列单片机内部集成了一个12位高速AD转换器。ADC的时钟频率为系统频率。分频再经过用户设置的分频系数进行再次分频(ADC的时钟频率范围为SYSclk/2/1~SYSclk/2/16)。
ADC转换结果的数据格式有两种:左对齐和右对齐。可方便用户程序进行读取和引用。
注意:ADC 的第15通道是专门测量内部 1.19V参考信号源的通道,参考信号源值出厂时校准为1.19V,由于制造误差以及测量误差,导致实际的内部参考信号源相比1.19V,大约有土1%的误差。如果用户需要知道每一颗芯片的准确内部参考信号源值,可外接精准参考信号源,然后利用ADC的第15通道进行测量标定。ADC_VRef+脚外接参考电源时,可利用ADC的第15通道可以反推ADC_VRef+脚外接参考电源的电压;如将ADC_VREF+短接到MCU-VCC,就可以反推 MCU-VCC的电压。
如果芯片有ADC 的外部参考电源管脚ADC_VRef+,则一定不能浮空,必须接外部参考电源或者直接连到VCC。
假设单片机的基准电压为2.96V,以5V为例,比较结果如下:

注意:使用ADC功能时有Vref引脚的单片机千万千万千万不能悬空,必须接外部参考电压源或者VCC!!!
2.STC32G单片机ADC使用原理
19.1.1 ADC控制寄存器(ADC_CONTR)


只有15个引脚,可以使用单片机的ADC,不是所有引脚都能使用ADC功能,只有指定的这个ADC的通道(1.19V参考),这15个才能进行ADC的一个转化。
ADC_EPWMT:使能PWM实时触发ADC功能。详情请参考16位高级PWM定时器章节,本节暂时略过,不详细探讨。
如ADC_CHS3:0写0000,就可以使用P1.0。
19.1.2 ADC配置寄存器(ADCCFG)



时钟建议选一个慢一点的时钟,设置的时间可以看{FADC=SYSclk/2/(SPEED+1)},不继续深入。实际上ADC大部分使用的情况都和时间没有太大影响。
时钟选择手册中的默认值就可以。
19.1.4ADC时序控制寄存器(ADCTIM)

一般建议均使用默认值。(注意:SMPDUTY一定不能设置小于01010B),即从参数图上看,建议往下不要再往上走。
12位ADC的转换时间固定为12个ADC工作时钟。
一个完整的ADC转换时间为:Tsetup+Tduty+ Thold+Tconvert、如下图所示:

本文介绍了模数转换器(ADC)原理,阐述了STC32G单片机ADC使用原理,包括控制、配置、时序控制寄存器及相关计算公式。还给出了编写最简单的ADC采集代码(查询&中断)的方法,解决了编译错误问题,最后总结关键知识并布置了简易电压表的课后练习。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



