在线时间0 小时
UID273019
ST金币0
蝴蝶豆0
注册时间2008-12-1
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
这几天在学习STM32的ADC模块,最先使用的是连续、单通道模式,数据测量准确;之后使用单次、4通道扫描模式,如果四通道全部设置为同一通道,数据也是正确的,或者四通道分别设置为电平相同的通道,数据也是正确的,但是如果四个通道的电平不相同,那么一定会有至少一个通道的数据是错误的,百思不得其解,请各位高手指点。
程序如下:
/* ADC1 configuration ------------------------------------------------------*/
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //设置ADC为独立工作模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE; //使能ADC扫描功能,允许多个通道依次工作
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //禁止ADC连续工作模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//禁止外部触发ADC,由软件SWATART位触发
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //设置转换结果右对齐,低12位保存结果
ADC_InitStructure.ADC_NbrOfChannel = 4; //工作通道数为4
ADC_Init(ADC1, &ADC_InitStructure);
/* ADC1 regular channel_13 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_11, 2, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_12, 3, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 4, ADC_SampleTime_55Cycles5);
此时通道1接GND,通道2接VCC,通道3悬空,通道4接电位器(电压为1.79V),测试结果如下:
STM32 ADC SCAN Function Test
CH_1 CH_2 CH_3 CH_4
3.40 1.70 1.79 1.79
0.40 1.56 1.79 1.79
0.40 1.63 1.79 1.79
0.40 1.73 1.79 1.79
0.40 1.57 1.79 1.79
0.40 1.67 1.79 1.79
0.40 1.71 1.79 1.79
0.40 1.58 1.79 1.79
0.40 1.67 1.79 1.79
0.40 1.66 1.79 1.79
很明显前面三个通道的测量结果是错误的,但是如果单独测量通道1、2、3、4,结果都没有错误。 |
|