richard96321 发表于 2014-11-19 09:10:02

请教各位大神,关于STM32F301 的ADC差分采样配置

关于差分模式的配置,datasheet里面介绍的很简单。我按照要求去做结果似乎和单端模式一个样,不知道是什么原因,请各位大神指教。
主要涉及到几个方面:
step 1 :ADC1->CR |= ADCALDIF;   //1: Writing ADCAL will launch a calibration in Differential inputs Mode.
。。。

step2:ADC1->DIFSEL |= 0x02;   //DIFSEL = 1: ADC analog input channel-i is configured in differential mode
...

step3:ADC1->JSQR = (3 << 0)       //2 CONVERSIONS
               | (8 << 2)       //JEXTSEL: External trigger selection for injected group (JEXT8 = TIM1_TRGO2)
               | (1 << 6)       //01: Hardware trigger detection on the rising edge
               | (2 << 8);       //JSQ1: ADC_IN1

然后我会在JDR中取值,但是发现这个值和单端配置ADC模式得出的值是一样的,请问各位大神,我上面的几个关于ADC differential mode的配置有什么问题吗?
         

arm8686 发表于 2014-11-19 09:19:07

请问你们手头上有差分信号源作为输入吗?
如果还是 直流电压+直流地 这样的输入,这跟单端是不会有区别的。

arm8686 发表于 2014-11-19 09:43:16

可以这样来简单生成差分信号:

在 IN- 那里输入 1V 电压,在 IN+ 那里输入 2V 电压。这样的话,就是 1V 的压差,取回来的值,跟单端就有区别了。

richard96321 发表于 2014-11-19 09:45:41

非常感谢您的回复:
我的ADCIN1 和ADCIN2两个输入端分别是一个电路的两路输出,一路电压输入在电源电压不变的情况下基本恒定为电源电压的一半,另一路输入会在这个电源电压一半的附近波动,所以我的目标是通过差分模式测量出两个输入电压之间的差异。所以从信号输入上讲不是直流电压+直流地的模式了。

richard96321 发表于 2014-11-19 09:50:41

按照我的电路设计应该得出的是这两个电压的差值,但是目前得出值居然还是电源电压值得一半。这是单端的结果,所以我怀疑我是不是软件配置错误,不知各位有没有这方面的经验。

arm8686 发表于 2014-11-19 09:56:14

richard96321 发表于 2014-11-19 09:45
非常感谢您的回复:
我的ADCIN1 和ADCIN2两个输入端分别是一个电路的两路输出,一路电压输入在电源电压不变 ...

按照这样的输入,我觉得,应该就是 MCU 这边初始化的问题了。

richard96321 发表于 2014-11-19 10:04:57

arm8686兄弟,我也是怀疑我的软件初始化有问题,你有这方面的经验吗?我已经列出了关于ADC differential mode 的配置,需要提供整个驱动吗?如果需要我可以贴出来,目前我实在看不出什么问题。

arm8686 发表于 2014-11-19 10:53:26

那 GPIO 的 AF 设置呢? IN(i) 与 IN(i+1) 这两个管脚。

richard96321 发表于 2014-11-19 11:43:06

不好意思现在才看到你的回复。 我配置的是注入模式, GPIO都配置成analog input的,另外在这颗芯片里面,ADC_IN1/ADC_IN2不属于AF,属于Additional
functions: Functions directly selected/enabled through peripheral registers

richard96321 发表于 2014-11-19 11:43:35

STM32F301 选择的是PA0/PA1作为输入pin
页: [1] 2
查看完整版本: 请教各位大神,关于STM32F301 的ADC差分采样配置