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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版