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

STM32F407采样不准

[复制链接]
amyoubo 提问时间:2014-3-10 20:03 /
 我用了3个AD,用外部定时器中断触发采样,AD1用PA6引脚,AD2用PC2引脚,AD3用PF7引脚,发现AD1的采样很不准,误差比较大,其他两个还可以接受,下面是我关于AD部分的设置,请问有什么问题吗
 ADC_InitTypeDef       ADC_InitStructure;
    ADC_CommonInitTypeDef ADC_CommonInitStructure;
    /*使能ADC1,2,3的时钟*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_ADC2|RCC_APB2Periph_ADC3, ENABLE);
    /*ADC公共初始化配置*/
    ADC_CommonInitStructure.ADC_Mode = ADC_TripleMode_RegSimult;                    //配置ADC模式为3通道规则组
    ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div8;                     //配置ADC时钟分频为8分频
    ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_1;                //DMA mode 1 enabled (2 / 3 half-words one by one - 1 then 2 then 3)
    ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles;   //配置两次采样的间隔时间
    ADC_CommonInit(&ADC_CommonInitStructure);                                       //初始化ADC公共配置
 
    /*ADC1初始化配置*/
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;                          //配置ADC分辨率为12位
    ADC_InitStructure.ADC_ScanConvMode = ENABLE;                                    //使能多通道扫描转换模式
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;                             //注意不要使用持续转换模式,否则只要触发一次,
                                                                      //后续的转换就会永不停歇(除非CONT清0),这样第一次以后的ADC,就不是由TIM2_CC2来触发了
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Rising;   //外部上升沿触发转换
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;           //配置TIM2_CC2为触发源
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;                          //配置数据对齐方式为右对齐
    ADC_InitStructure.ADC_NbrOfConversion = 1;                                      //指定ADC的转换次数
    ADC_Init(ADC1, &ADC_InitStructure);                                             //初始化配置ADC1
    /*PA6->ADC12的通道6,采用频率为3个周期*/
    ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_15Cycles);
 
    ADC_Init(ADC2, &ADC_InitStructure);
    /*PC2-> ADC12的通道12,采用频率为3个周期*/
    ADC_RegularChannelConfig(ADC2, ADC_Channel_12, 1, ADC_SampleTime_15Cycles);
 
    ADC_Init(ADC3, &ADC_InitStructure);
    /*PF7->ADC3的通道5*/
    ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 1, ADC_SampleTime_15Cycles);
 
    /* Enable DMA request after last transfer (Multi-ADC mode)  */
    ADC_MultiModeDMARequestAfterLastTransferCmd(ENABLE);
 
    //   ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);  //开启ADC转换结束中断
 
    /* 使能ADC1,ADC2,ADC3*/
    ADC_Cmd(ADC1, ENABLE);
    ADC_Cmd(ADC2, ENABLE);
    ADC_Cmd(ADC3, ENABLE);
收藏 评论1 发布时间:2014-3-10 20:03

举报

1个回答
五哥1 回答时间:2018-6-5 23:47:02
能把硬件部分ADC1和ADC2交换下测试吗?根据测试结果再确定是否是硬件问题还是其他

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版