OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9504|回复: 7

stm32f030 ADC的通道数

[复制链接]

10

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-12-17
在线时间
0 小时
发表于 2015-5-25 10:24:45 | 显示全部楼层 |阅读模式
5金钱
030这款片子的ADC采样如果不用DMA的话  最多只能开一个通道吗?如果能开更多通道的话,ADC该如何配置  

最佳答案

查看完整内容[请看2#楼]

11路吧,ST的选型手册有的版本关于030的数据是写错了的,写了1路,后面版本的改回来了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-5-25 10:24:46 | 显示全部楼层
11路吧,ST的选型手册有的版本关于030的数据是写错了的,写了1路,后面版本的改回来了。
回复

使用道具 举报

10

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-12-17
在线时间
0 小时
 楼主| 发表于 2015-5-25 17:17:30 | 显示全部楼层
回复【2楼】翼间:
---------------------------------
   //ADC1通道配置
   //////////////////////////////////////////////////////////////////////////////////
    ADC_DeInit(ADC1);                                     // ADC1 反初始化  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);  // ADC1外时钟使能
  ADC_StructInit(&ADC_InitStructure);                   // 初始化ADC结构
  
  //在连续模式与一个resolutuion等于12位配置ADC1  
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;


//指定转换是否连续或单的方式进行。这个参数可以被设置为ENABLE或DISABLE。
ADC_InitStructure.ADC_ContinuousConvMode =DISABLE;//不连续转换 
//选择外部触发边缘,使常规组触发。这个参数可以是一个值参考 ADC_external_trigger_edge_conversion
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;//软件启动转换
//定义用于启动模拟到数字转换的外部触发的正规渠道。这个参数可以是一个价值参考adc_external_trigger_sources_for_channels_conversion 
 ADC_InitStructure.ADC_ExternalTrigConv =  ADC_ExternalTrigConv_T3_TRGO;
//指定是否将ADC数据对齐左或右。这个参数可以是一个价值的“参考adc_data_align
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换结果右对齐
//指定在哪个方向的通道将在序列扫描。这个参数可以是一个价值的“参考adc_scan_direction
  ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward;
  ADC_Init(ADC1, &ADC_InitStructure); 

ADC_ChannelConfig(ADC1, ADC_Channel_2 , ADC_SampleTime_239_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_3 , ADC_SampleTime_239_5Cycles);
  
  ADC_GetCalibrationFactor(ADC1);                        // ADC 校准
  ADC_Cmd(ADC1, ENABLE);                                 // 使能ADC1     
  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));        // 等待ADCEN 标志
  ADC_StartOfConversion(ADC1);                         // ADC1 定期变换



如果我只开ADC_Channel_2 或者ADC_Channel_3 的话  采样都很正常  如果两个同时开的话  只能采一个数据  另外一个就不工作了  而且STM32F0XX的库函数没有专门关闭某一个通道的函数
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-5-25 17:32:43 | 显示全部楼层
回复【3楼】第七类接触:
---------------------------------
ADC_InitStructure.ADC_ScanConvMode是多少?
回复

使用道具 举报

10

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2014-12-17
在线时间
0 小时
 楼主| 发表于 2015-5-26 08:39:05 | 显示全部楼层
回复【4楼】翼间 回复【4楼】翼间:
---------------------------------
这个好像没有用
回复

使用道具 举报

26

主题

201

帖子

0

精华

高级会员

Rank: 4

积分
606
金钱
606
注册时间
2013-12-14
在线时间
125 小时
发表于 2016-3-3 09:09:26 | 显示全部楼层
你的问题在不用DMA的前提下解决了没?
回复

使用道具 举报

32

主题

183

帖子

0

精华

高级会员

Rank: 4

积分
617
金钱
617
注册时间
2013-1-16
在线时间
131 小时
发表于 2018-5-23 16:41:28 | 显示全部楼层
楼主最后解决了没有
回复

使用道具 举报

13

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2019-3-24
在线时间
40 小时
发表于 2021-7-9 18:14:06 | 显示全部楼层
使用F0芯片过程中无意看见这个问题,说一下自己的理解,观看F0的库函数(我用的版本)里是没有ADC_ScanConvMode的,或许意味着不能主动配置扫描模式,而DMA模式下或许是默认使用扫描模式,非DMA则是关闭扫描模式,而非扫描模式的话,由于F0adc库函数里通道配置函数,或许有天然bug,优先处理高位通道,导致了高低位通道一起配置时,会忽略低位通道的转换,只执行高位通道,解决方法或许可以直接对通道使能寄存器操作。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表