你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
stm32f103双ADC同步规则模式两个ADC转换的通道数量能不一样吗
[复制链接]
yangmj
提问时间:2020-7-22 08:53 /
问答
是否解决:
stm32f103rct6,配置成双ADC同步规则模式时,主ADC1、从ADC2,因为需要总共采集9路通道,便配置成ADC1转换5路通道,ADC2转换4路,结果发现数据会出现错乱的情况。这是什么原因啊,谢谢各位老哥了
赞
0
收藏
0
评论
3
分享
发布时间:2020-7-22 08:53
举报
请先
登录
后回复
3个回答
likang1202
回答时间:2020-7-22 09:37:16
a1024a.1 0b0c
顶一下
赞
0
评论
回复
支持
反对
ldptest
回答时间:2020-7-22 15:39:49
a0a.1 0b0c
有代码吗?怎么配置的?
赞
0
评论
回复
支持
反对
yangmj
回答时间:2020-7-23 09:38:02
a4a.1 0b0c
ldptest 发表于 2020-7-22 15:39
有代码吗?怎么配置的?
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period=1999;
TIM_TimeBaseStructure.TIM_Prescaler=6;
TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//TIM4_CH4
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=300;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM_OC4Init(TIM4,&TIM_OCInitStructure);//TIM4_CH4
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32)ADC1_DR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr=(uint32)ADC_DualConvValueBuffer1;
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=5;
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word;
DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority=DMA_Priority_VeryHigh;
DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
DMA_Init(DMA1_Channel1,&DMA_InitStructure);
//ADC1 configuration -Master
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T4_CC4;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=5;
ADC_Init(ADC1,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_15,2,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_9,3,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_8,4,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_2,5,ADC_SampleTime_71Cycles5);
ADC_DMACmd(ADC1,ENABLE);
//ADC2 configuration -Slave
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=4;
ADC_Init(ADC2,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC2,ADC_Channel_0,1,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC2,ADC_Channel_5,2,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC2,ADC_Channel_7,3,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC2,ADC_Channel_6,4,ADC_SampleTime_71Cycles5);
ADC_ExternalTrigConvCmd(ADC2,ENABLE);
ADC_ExternalTrigConvCmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_Cmd(ADC2,ENABLE);
ADC_ResetCalibration(ADC2);
while(ADC_GetResetCalibrationStatus(ADC2));
ADC_StartCalibration(ADC2);
while(ADC_GetCalibrationStatus(ADC2));
DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE);
DMA_Cmd(DMA1_Channel1,ENABLE);
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period=1999;
TIM_TimeBaseStructure.TIM_Prescaler=6;
TIM_TimeBaseStructure.TIM_ClockDivision=0x0;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);//TIM4_CH4
TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_Pulse=300;
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;
TIM_OC4Init(TIM4,&TIM_OCInitStructure);//TIM4_CH4
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr=(uint32)ADC1_DR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr=(uint32)ADC_DualConvValueBuffer1;
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=5;
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word;
DMA_InitStructure.DMA_Mode=DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority=DMA_Priority_VeryHigh;
DMA_InitStructure.DMA_M2M=DMA_M2M_Disable;
DMA_Init(DMA1_Channel1,&DMA_InitStructure);
//ADC1 configuration -Master
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_T4_CC4;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=5;
ADC_Init(ADC1,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC1,ADC_Channel_14,1,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_15,2,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_9,3,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_8,4,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_2,5,ADC_SampleTime_71Cycles5);
ADC_DMACmd(ADC1,ENABLE);
//ADC2 configuration -Slave
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult;
ADC_InitStructure.ADC_ScanConvMode=ENABLE;
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=4;
ADC_Init(ADC2,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC2,ADC_Channel_0,1,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC2,ADC_Channel_5,2,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC2,ADC_Channel_7,3,ADC_SampleTime_71Cycles5);
ADC_RegularChannelConfig(ADC2,ADC_Channel_6,4,ADC_SampleTime_71Cycles5);
ADC_ExternalTrigConvCmd(ADC2,ENABLE);
ADC_ExternalTrigConvCmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_Cmd(ADC2,ENABLE);
ADC_ResetCalibration(ADC2);
while(ADC_GetResetCalibrationStatus(ADC2));
ADC_StartCalibration(ADC2);
while(ADC_GetCalibrationStatus(ADC2));
DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE);
DMA_Cmd(DMA1_Channel1,ENABLE);