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

12
返回列表 发新帖
楼主: mike-420405

STM8 多通道ADC采集故障,望指点

[复制链接]

0

主题

16

回帖

0

蝴蝶豆

初级会员

最后登录
2018-3-9
发表于 2017-4-10 14:55:14 | 显示全部楼层
uint16_t Get_ADCCH_Value(ADC1_Channel_TypeDef ADC_Channel)
{
    uint16_t GetADC_Value = 0;
    FlagStatus flag_status;
    //ADC1_DeInit();
    /*
            * ADC1_CONVERSIONMODE_CONTINUOUS = 转换模式:连续转换  ADC1_CONVERSIONMODE_SINGLE= 单次转换
              ADC1_CHANNEL_2 = ADC通道2
                    ADC1_PRESSEL_FCPU_D2 = 时钟分频器 fADC1= fMASTER/2
                    ADC1_EXTTRIG_TIM, DISABLE = 启用或者关闭外部触发转换事件:内部定时器1的TRG事件--关闭
                    ADC1_ALIGN_LEFT = 数据对齐方向:左对齐
                    ADC1_SCHMITTTRIG_CHANNEL0, DISABLE = 启用或者关闭指定通道的施密特触发器:通道2--关闭
                                                                                                                                                                     (ADC1_SCHMITTTRIG_ALL, DISABLE = 所有通道--关闭)
            */
    ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC_Channel, ADC1_PRESSEL_FCPU_D2, \
              ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, DISABLE);

    ADC1_Cmd(ENABLE);
    ADC1_StartConversion();
    delay_us(10);
    flag_status = ADC1_GetFlagStatus(ADC1_FLAG_EOC);
    if (flag_status != RESET) // SET or RESET
    {
        GetADC_Value = ADC1_GetConversionValue(); //返回ADC结果
    }
    return GetADC_Value;
}

//读AD值
void Read_Temperature_TEST()
{       
        Conversion_Value = Get_ADCCH_Value(ADC1_CHANNEL_3); //TEMP_AD_TEST_Value  PD2
  TEMP_AD_TEST_Value = Conversion_Value;

        Conversion_Value = Get_ADCCH_Value(ADC1_CHANNEL_4); //TEMP_AD_Value  PD3
  TEMP_AD_Value = Conversion_Value;

}


在主循环里面,跑Read_Temperature_TEST()。读出来的值是 TEMP_AD_TEST_Value = 464, TEMP_AD_Value = 1000  证明第三通道读出来是正常的,后面通道的受到第三通道的在通道切换时的相互影响,所以后面的第4通道读出来的值就不正常。但是,如果单独只读一个通道,另一个通道不读,这两个通道分别读出来的AD值都是正常的。。太不可思议了,还有这种情况出现 ,希望引起大家的注意。
   希望有解决办法的高人出来指点一下。

回复 支持 反对

使用道具 举报

1

主题

119

回帖

2

蝴蝶豆

中级会员

最后登录
2018-5-15
发表于 2017-4-13 13:39:05 | 显示全部楼层
不懂stm8有DMA。。。
不懂stm8有两个ADC。。
不懂两只ADC同时开?有这种必要?
stm32 的双ADC有要求,采样时间不能重叠。估计你就是重叠了。
时钟频率当然是越慢越好。采样时间当然也是越长越好。
回复 支持 反对

使用道具 举报

0

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
2018-5-28
发表于 2018-5-28 13:52:01 | 显示全部楼层
要多次采集求平均值
回复 支持 反对

使用道具 举报

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