不基于STM32的ADC模数转换的简单理解

  我们知道单片机的IO能够检测二进制的高低电平(即0或1的数字信号),比如通过IO的高低来判断按键是否按下,之类的。假设我们给单片机供电是5v,那么它就会将0v(GND)理解为二进制0,将5v(VCC)理解为二进制1。然而这个世界并不是非黑即白的,在0到5v之间会出现2.73v这样的“灰色”数值,那咋办嘛?

  现实世界的数值/数据都是连续变化的(不是台阶式跳变的),我们称为模拟信号,比如声音、温度、光线、压力,之类的。上面提到的2.73v就是一个模拟电压值,而我们单片机只能按照0/1的level去处理数据(数字信号),对这种模拟信号却无能为力。所以我们希望说有一个中介设备,能够把模拟信号转化成数字信号,以便和单片机进行交流。

  于是ADC,即模数转换器应运而生。ADC是一种集成电路,能把(某个引脚上的)模拟信号转换成数字或者二进制形式(0或1)的信号,以利于单片机/处理器来处理。

  ADC在采样时钟信号的每个时钟上升沿/下降沿对模拟信号进行采样,获取模拟信号,然后通过精确地逼近信号来测量并将其转换成数字值并输出给单片机——ADC的原理挺复杂的,最常见的一种技术是使用模拟电压给内部电容充电,然后测量其通过内部电阻放电所需的时间。单片机监控(计数)在电容器放电前通过的时钟周期数,这个周期数就是ADC最后的返回值。

  简单来说,ADC输出的是一个比率值,(即测得电压除以参考电压再乘上ADC能表示的最大数值)。拿10位的ADC来说,转换0~5V,这意味着ADC假设5V是1023(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值