你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103VCT6 ADC1与ADC2同步规则转换

[复制链接]
cmz871627 提问时间:2014-3-28 19:08 /
             最近做一个项目,需要用STM32的ADC1与ADC2通过定时器控制采样,并DMA读取。但是不知道该如何配置,还请高手们给予帮助.......................
收藏 评论8 发布时间:2014-3-28 19:08

举报

8个回答
废鱼 回答时间:2014-3-31 17:13:18

RE:STM32F103VCT6 ADC1与ADC2同步规则转换

为什么用定时器来读取DMA而不用DMA中断呢?
fengye5340 回答时间:2014-3-31 20:54:04

RE:STM32F103VCT6 ADC1与ADC2同步规则转换

用了两个ADC模块,还是用DMA方式比较好,我目前也在用这个芯片,参考3.50固件工程库里面的ADC例程+DMA例程吧,那个很容易实现的
灰小子-1888763 回答时间:2014-3-31 22:47:10

RE:STM32F103VCT6 ADC1与ADC2同步规则转换

推荐用DMA中断+ADC
cmz871627 回答时间:2014-4-1 08:33:01

回复:STM32F103VCT6 ADC1与ADC2同步规则转换

回复第 2 楼 于2014-03-31 17:13:18发表:
为什么用定时器来读取DMA而不用DMA中断呢?
我是对两路交流信号同时进行采样的,所以需要用定时器来控制 ADC1与ADC2 的同步采样,从而保证在一个周期内能够采样到128个点的数据。最后再用DMA将ADC中的数据取出来。现在就是不知道该如何正确配置 
 
cmz871627 回答时间:2014-4-1 08:36:47

回复:STM32F103VCT6 ADC1与ADC2同步规则转换

回复第 3 楼 于2014-03-31 20:54:04发表:
用了两个ADC模块,还是用DMA方式比较好,我目前也在用这个芯片,参考3.50固件工程库里面的ADC例程+DMA例程吧,那个很容易实现的
 
 
 
 
 
恩,那个例程是软件触发ADC转换。  我现在想用ADC的外部触发方式 用定时器来触发转换
 
pythonworld 回答时间:2014-4-2 20:33:44

回复:STM32F103VCT6 ADC1与ADC2同步规则转换

 /* ADC1 configuration ------------------------------------------------------*/
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
  ADC_InitStructure.ADC_ScanConvMode = DISABLE;
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  ADC_InitStructure.ADC_NbrOfChannel = 1;
  ADC_Init(ADC1, &ADC_InitStructure);
 
/* Enable ADC1 external trigger */ 
  ADC_ExternalTrigConvCmd(ADC1, ENABLE);
 
 /* TIM1 configuration ------------------------------------------------------*/ 
  /* Time Base configuration */
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
  TIM_TimeBaseStructure.TIM_Period = 0xFF;          
  TIM_TimeBaseStructure.TIM_Prescaler = 0x4;       
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;    
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  /* TIM1 channel1 configuration in PWM mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;                
  TIM_OCInitStructure.TIM_Pulse = 0x7F; 
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;         
  TIM_OC1Init(TIM1, &TIM_OCInitStructure);
 
官方驱动库中示例工程ADC下面的TIMTrigger_AutoJnjection就是用定时器出发ADC转换的.
另外可参考网上的文章stm32定时器触发ADC参考
有缘于你 回答时间:2014-4-3 08:00:19

RE:STM32F103VCT6 ADC1与ADC2同步规则转换

楼上正解,绝大部分的功能例程里都有
feiante-155820 回答时间:2014-4-12 22:22:31

RE:STM32F103VCT6 ADC1与ADC2同步规则转换

那就把例程里的DMA和定时器触发两个合起来用吧
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版