标签:
stm32f207, 引脚对应的模拟通道:
PA0 IN0,
PA1
PA2
PA3
PA4
PA5
PA6
PA7 IN
PB0 IN8
PB1 IN9
PC0 IN10
PC1
PC2
PC3
PC4 IN14
PC5 IN15
ADC转换就是输入模拟的信号量,单片机转换成数字量。读取数字量必须等转换完成后,完成一个通道的读取叫做采样周期。采样周期一般来说=转换时间+读取时间。而转换时间=采样时间+12.5个时钟周期。采样时间是你通过寄存器告诉stm32采样模拟量的时间,设置越长越精确
The total conversion time is calculated as follows:
Tconv = Sampling time + 12 cycles
Example:
With ADCCLK = 30 MHz
and sampling time = 3 cycles:
Tconv = 3 + 12 = 15 cycles = 0.5 μs with APB2 at 60 MHz
信号源内阻当然越小越好,这样带负载能力强
当信号源的阻抗大于2.5K时,AD的输入阻抗对信号源的分压将不能忽
略。信号源阻抗是指从AD口朝外看出来的等效阻抗,当然越小越好。
ADC的输入阻抗越大越好,这样对信号源适应性好
也就不会吸收电流,不会对外电路产生什么影响
AD采样相当于一个电容,工作时候,需要尽快跟上外部电压,于是有个充放电的问题,这个充放电其实就是采样过程。采样完成后断开外部连接,保持器,给ADC转换提供稳定的电压。
若要做到阻抗匹配,有什么思路呢:
问题:STM32Fxx的AD输入阻抗这么低,导致ad从分压电阻中吸收了电流,以致分压值不准,采样值偏低,
处理方法:
思路一、减小信号源内阻,
对于ad采样来说,若从两分压电阻中间取样,那么分压电阻就不要太大,选取2.5k,试试看。---经验证,效果明显,分压电阻采用的2k---2k。
思路二、加电压跟随器
匹配流程:信号源内阻<---匹配<---高输入阻抗-电压跟随器-低输出阻抗--->匹配---->adc输入阻抗
参考:
电压跟随器的显著特点就是,输入阻抗高,而输出阻抗低。--百度百科链接,说得不错,算是做了一个阻抗匹配的科普了,呵呵
http://baike.baidu.com/link?url=q7ecMEmTmwwxMe48AN6I1uSotP3MhXDrKio7QmqXnrfKtlJMXOChfeH_OcwqrXg1Uk4P5pv1l6h1mvpeI5s3o_
思路三、减小ADC的采样速率??
---减小ADC的时钟频率。 经验证,确实有效果,将ADC_Prescaler 设置成ADC_Prescaler_Div8(即7.5MHz)后,ADC引脚的连接对信号源电平的影响减小,有一定的增大ADC输入阻抗的作用。
---增加两次采样之间的时间间隔。经验证,效果基本没有。
减小ADC的采样速率,采样电压的变化频率减小,即AD采样的充放电电容的阻抗减小,从而降低了adc的输入阻抗。
参考:
为什么STM32Fxx的AD输入阻抗这么低 -----
http://bbs.eeworld.com.cn/thread-249624-1-1.html
(原因:综合网友们的讨论,基本是这个原因---阻抗小,即电容值充放电快,采样速率更高,是为了保证采样速率)
请高手出马:ADC的输入阻抗问题 -----http://bbs.21ic.com/icview-152735-1-1.html
ADC采样输入阻抗的计算 ------http://bbs.21ic.com/icview-84949-1-1.html
If the DMA bit is set, the direct memory access (DMA) controller is used to transfer the data
converted from the regular group of channels (stored in the ADC_DR register) to SRAM
after each regular channel conversion.
Data management--Using the DMA
When the DMA mode is enabled (DMA bit set to 1 in the ADC_CR2 register), after each
conversion of a regular channel, a DMA request is generated. This allows the transfer of the
converted data from the ADC_DR register to the destination location selected by the
software.
官方的固体库里的demo例子不错,可直接复制过来进行测试。
不懂可以参考,下面这文章总结的不错,解决了我的问题。
STM32F4 ADC采集数据的DMA数据传输【库函数操作】
http://www.cnblogs.com/zyqgold/archive/2013/05/23/3095301.html
STM32 ADC结合DMA数据采样与软件滤波处理
http://blog.csdn.net/i792439187/article/details/8825397
----其实,弄个均值滤波就可以了
参考:10种ADC软件滤波方法及程序
http://blog.csdn.net/haozi_1989/article/details/6625404
ADC
标签:
原文地址:http://www.cnblogs.com/plant/p/5067499.html