求助,STM32F103的ADC电脑问题求助

对于f103zet6的ADC采集问题【stm32吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:25,020贴子:
对于f103zet6的ADC采集问题收藏
我想要测量多个引脚的电压,我就初始化了很多个通道对电压进行采集,但是我发现有些通道之间会相互影响,在一个传感器传感器变化时,另一个没有接这个引脚的io口的电压采集值跟着变化。我想知道这是什么问题。
低租费、低噪音、低油耗的发电机
如果电压大于3.3,电压会倒灌,影响别的路
登录百度帐号推荐应用STM32的ADC精度说明
> STM32的ADC精度说明
STM32的ADC精度说明
以下所有的说明来源于《STM32F103xx数据手册》(2008年5月 第7版)。这里没有新的信息,只是把数据手册中的相应部分翻译了一下。在阅读这个数据手册中各个参数时,首先必须搞清楚这些参数是如何得到的。根据手册中5.1.1节和5.1.2节的说明,有些参数是在一定条件下在生产线上测试得到,有些则是根据样本测试后推算得出。下面这段话是5.1.1节和5.1.2节的译文摘录:5.1.1 最小和最大数值除非特别说明,在生产线上通过对100%的产品在环境温度TA=25℃和TA=TAmax下执行的测试(TAmax与选定的温度范围匹配),所有最小和最大值将在最差的环境温度、供电电压和时钟频率条件下得到保证。在每个表格下方的注解中说明为通过推算、设计模拟和/或工艺特性得到的数据,不会在生产线上进行测试;在推算的基础上,最小和最大数值是通过样本测试后,取其平均值再加减三倍的标准分布(平均&3&)得到。5.1.2 典型数值除非特别说明,典型数据是基于TA=25℃和VDD=3.3V(2V & VDD & 3.3V电压范围)。这些数据仅用于指导设计而未经测试。典型的ADC精度数值是通过对一个标准的批次采样,在所有温度范围下测试得到,95%的产品误差小于等于给出的数值(平均&2&)。再看下面两张表,在25℃且VDDA = 3V~3.6V时,典型误差可达&1.3LSB,最大可达&2LSB;在所有温度范围内且VDDA=2.4V~3.6V时,典型误差可达&2LSB,最大可达&5LSB。关于ET、EO、EG、ED、EL的意义和关系见下图(此图是手册中的图29):
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一21ic官方微信-->
后使用快捷导航没有帐号?
查看: 2471|回复: 12
STM32的ADC1和ADC2的采集问题
&&未结帖(20)
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
试了一下STM32的ADC1和ADC2,调试时出现的问题让我不解:
(1)只使用STM32的ADC1采集信号,PA.0为其模拟输入通道;
将ADC1配置成独立模式、单通道单次转换、软件触发,
采集到的数据是正确的;
(2)只使用ADC2采集信号,与(1)中ADC1的设置完全相同,即
PA.0为其模拟输入通道;
将ADC2配置成横独立模式、单通道单次转换、软件触发,
却采集不到数据;
所以,想请教一个问题:
STM32的ADC2采集相较ADC1采集时,对ADC2的配置有什么特殊要求吗?
或者其ADC2只能在双AD模式中才能使用?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
主题帖子积分
专家等级:结帖率:96%打赏:3.00受赏:3.00
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
adc2试试看PA.1
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
主题帖子积分
专家等级:结帖率:96%打赏:3.00受赏:3.00
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
应该都可以用, 但是adc精度那就呵呵了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
adc2试试看PA.1
您好,试了一下PA.5,结果仍然是ADC1可以采,ADC2采不到
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
ADC1采集建立project1,ADC2采集建立project2针对ADC1:
& && && && && &PA.5作为模拟输入端
void Gpio_Init(void)
{
& & & & GPIO_InitTypeDef GPIO_InitS
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;& & & & & & & & //模拟输入引脚
& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);
}& & & & & & & & 复制代码针对ADC2:
& && && && &&&同样:PA.5作为模拟输入端
&font color=&#0000ff&&void Gpio_Init(void)
{
& & & &
& & & & GPIO_InitTypeDef GPIO_InitS
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;& & & & & & & & //模拟输入引脚
& & & & GPIO_Init(GPIOA, &GPIO_InitStructure);
& & & &&&
}& & & & &/font&复制代码针对ADC1:
void&&Adc_Init(void)
{ & & & &
& & & & ADC_InitTypeDef ADC_InitS
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE );
& & & & RCC_ADCCLKConfig(RCC_PCLK2_Div6);& &//72M/6=12,ADC最大时间不能超过14M
& & & &
& & & & ADC_DeInit(ADC1);
& & & & ADC_InitStructure.ADC_Mode = ADC_Mode_I& & & & //独立模式
& & & & ADC_InitStructure.ADC_ScanConvMode = DISABLE;& & & & //单通道
& & ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;& & & &&&//单次转换
& & & & ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_N& & & &
& & & & ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_R& & & &
& & & & ADC_InitStructure.ADC_NbrOfChannel = 1;&&
& & & & ADC_Init(ADC1, &ADC_InitStructure);& & & && &
& & ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_71Cycles5 );
& & & & ADC_Cmd(ADC1, ENABLE);
& & & & ADC_ResetCalibration(ADC1);
& & & & while(ADC_GetResetCalibrationStatus(ADC1));
& & & & ADC_StartCalibration(ADC1);
& & & & while(ADC_GetCalibrationStatus(ADC1));
}& & & &
复制代码针对ADC2:
&font color=&#0000ff&&void&&Adc_Init(void)
{ & & & &
& & & & ADC_InitTypeDef ADC_InitS
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2 , ENABLE );
& & & & RCC_ADCCLKConfig(RCC_PCLK2_Div6);& &//72M/6=12,ADC最大时间不能超过14M
& & & &
& & & & ADC_DeInit(ADC2);
& & & & ADC_InitStructure.ADC_Mode = ADC_Mode_I& & & & //独立模式
& & & & ADC_InitStructure.ADC_ScanConvMode = DISABLE;& & & & //单通道
& & ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;& & & &&&//单次转换
& & & & ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_N& &//软件启动
& & & & ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_R& & & &
& & & & ADC_InitStructure.ADC_NbrOfChannel = 1;& &
& & & & ADC_Init(ADC2, &ADC_InitStructure);& & & &&&
& & & & ADC_RegularChannelConfig(ADC2, ADC_Channel_5, 1, ADC_SampleTime_71Cycles5 );
& & & & ADC_Cmd(ADC2, ENABLE);& & & &
& & & & ADC_ResetCalibration(ADC2);
& & & & while(ADC_GetResetCalibrationStatus(ADC2));
& & & & ADC_StartCalibration(ADC2);
& & & & while(ADC_GetCalibrationStatus(ADC2));& & & &
}& & & & &/font&复制代码针对ADC1:
int main(void)
{
& && & & & SystemInit();& & & & & & & && &//系统时钟初始化
& & & & Gpio_Init();
& & & & Adc_Init();
& & & & while(1)
ADC_SoftwareStartConvCmd(ADC1, ENABLE );
}复制代码针对ADC2:
&font color=&#0000ff&&int main(void)
{
& && & & & SystemInit();& & & & & & & && &//系统时钟初始化
& & & & Gpio_Init();
& & & & Adc_Init();
& & & & while(1)
& & & & {
& & & & & & & &&&ADC_SoftwareStartConvCmd(ADC2, ENABLE );
& & & & }&/font&复制代码然后ADC1采集3.3V电压,此时DR为:0x0
& && && && && && && &&&3.3/2时,& && && &DR:0x07
& && && && && && && && && &&&0时,& && && &DR:0x0000.
但ADC2却采不到数据。
真的是奇了怪了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
大家平常使用的一般都是ADC1,不论是单通道或多通道、软件触发或定时器中断触发。
而ADC是很少被单独使用的。
现在将程序呈上,希望有兴趣讨论的坛友可以帮忙运行一下,看看到底怎样。
我现在觉得,ADC2不能像ADC1那样单独使用,好像只能配合ADC1使用,比如双AD模式。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
主题帖子积分
专家等级:结帖率:96%打赏:3.00受赏:3.00
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
知道了, adc2时不要使用独占模式.
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
主题帖子积分
专家等级:结帖率:0%打赏:0.00受赏:38.00
主题帖子积分
ADC2改用,中断采样试下;
什么型号的芯片啊
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
ADC2改用,中断采样试下;
什么型号的芯片啊
STM32F103VET6&&我试过中断:
ADC1独立模式、单通道单次转换,TIM2_CC2中断触发;
ADC2同样的配置:独立模式、单通道单次转换、TIM2_CC2中断触发;
结果仍然是:ADC1可采集,ADC2不能采集。
所以我认为:ADC2不能工作在单独模式,只能配合ADC1使用,即双AD模式
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
资深技术员, 积分 393, 距离下一级还需 107 积分
资深技术员, 积分 393, 距离下一级还需 107 积分
主题帖子积分
专家等级:结帖率:0%
主题帖子积分
资深技术员, 积分 393, 距离下一级还需 107 积分
资深技术员, 积分 393, 距离下一级还需 107 积分
STM32F103VET6&&ADC2不能工作在单独模式 关注
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
STM32F103VET6&&ADC2不能工作在单独模式 关注
抱歉&&误导您了& &ADC1和ADC2是一样的& &都可以工作在独立模式
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
主题帖子积分
专家等级:结帖率:18%
主题帖子积分
中级技术员, 积分 145, 距离下一级还需 155 积分
中级技术员, 积分 145, 距离下一级还需 155 积分
知道了, adc2时不要使用独占模式.
很抱歉& &有可能误导您了& &ADC2可以工作在独立模式的&&现在程序都是可行的
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
主题帖子积分
专家等级:结帖率:96%打赏:3.00受赏:3.00
主题帖子积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
助理工程师, 积分 1570, 距离下一级还需 430 积分
很抱歉& &有可能误导您了& &ADC2可以工作在独立模式的&&现在程序都是可行的 ...
规格书说的很清楚, 虽然最大是三路, 但是只有一个adc模块, 所以...
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里
移步更多21ic独家微课:
技术新星奖章
人才类勋章
时间类勋章
技术领袖奖章
人才类勋章
时间类勋章
坚毅之洋流
发帖类勋章
荣誉元老奖章
等级类勋章
热门推荐 /4stm32 ADC 测电压一直没结果【单片机吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:135,572贴子:
stm32 ADC 测电压一直没结果收藏
我用的芯片是stm32f103c8t6,没有直接的ADC通道,所以用了PB0管脚的复用功能,也就是ADC通道8,然后无论是把引脚接分压电阻上或者直接接地,ADC1_DR寄存器里面都是1,换成十进制也就是4095,一直找不到原因,求吧友帮忙,感激不尽,ADC配置方面应该没有问题,原来用DMA方式传数据现在也没有了,以下是管脚的设置:GPIO_InitTypeDef GPIO_InitSRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;GPIO_Init(GPIOB, &GPIO_InitStructure);
达内单片机编程培训,开设Java/C++/PHP/安卓/iOS/linux/web/UI设计/营销/测试/ACC等课程;达内单片机编程培训,美国上市机构,先就业后付款,7万名企内部就业通道,30w学员实力..
楼主解决这个问题了吗,我也遇到同样的问题啊。
登录百度帐号推荐应用}

我要回帖

更多关于 丁香园 文献求助 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信