7129|14

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

stm8s207的AD是不是有bug?? [复制链接]



我在使用AD时发现一个问题,AD在采样时,该通道居然有2V的电平输出,我已经断开了外围电路,AIN2只有一个电阻到地,应该是0V,我用示波器看到口线居然是200us左右的脉冲,高电平正好是采样期间,问题是,同样的software,有的板子OK,有的不行。Vref+直接使用VCC做参考电压,,下面是测试code
  1. void ADCConfig(void){   
  2. ADC2_DeInit();    //ADC2_Init(ADC2_ConvMode_TypeDef ADC2_ConversionMode, ADC2_Channel_TypeDef ADC2_Channel,                         //ADC2_PresSel_TypeDef ADC2_PrescalerSelection, ADC2_ExtTrig_TypeDef ADC2_ExtTrigger,                         //FunctionalState ADC2_ExtTriggerState, ADC2_Align_TypeDef ADC2_Align,    ADC2_Init(ADC2_CONVERSIONMODE_SINGLE, ADC2_CHANNEL_0, ADC2_PRESSEL_FCPU_D4,                         ADC2_EXTTRIG_TIM, DISABLE, ADC2_ALIGN_RIGHT, ADC2_SCHMITTTRIG_CHANNEL0, DISABLE);
  3.     ADC2_Init(ADC2_CONVERSIONMODE_SINGLE, ADC2_CHANNEL_1, ADC2_PRESSEL_FCPU_D4,                         ADC2_EXTTRIG_TIM, DISABLE, ADC2_ALIGN_RIGHT, ADC2_SCHMITTTRIG_CHANNEL1, DISABLE);                            ADC2_Init(ADC2_CONVERSIONMODE_SINGLE, ADC2_CHANNEL_2, ADC2_PRESSEL_FCPU_D4,                         ADC2_EXTTRIG_TIM, DISABLE, ADC2_ALIGN_RIGHT, ADC2_SCHMITTTRIG_CHANNEL2, DISABLE);
  4.     ADC2_SchmittTriggerConfig(ADC2_SCHMITTTRIG_ALL, DISABLE);    ADC2_ITConfig(DISABLE);    ADC2_Cmd(ENABLE);    /*Start Conversion */    //ADC2_StartConversion();}

  5. u16 GetADCAverageValue(u8 ch)
  6. {   
  7.     u8 i=0;   
  8.     u16 Conversion_Value=0;
  9.     //ADC2_ConversionConfig(ADC2_CONVERSIONMODE_SINGLE, ch,    //ADC2_ALIGN_RIGHT);
  10.     /* Clear the ADC2 channels */   
  11.     ADC2->CSR &= (u8)(~ADC2_CSR_CH);   
  12.      /* Select the ADC2 channel */    ADC2->CSR |= (u8)(ch);

  13.         for (i=0; i<8;i++) {        
  14.             ADC2_StartConversion();        
  15.             while (!ADC2_GetFlagStatus());        
  16.              Conversion_Value += ADC2_GetConversionValue();   
  17.         }   
  18.         Conversion_Value = Conversion_Value >> 3;    return Conversion_Value;
  19. }

  20. void BusADCSample(P_ADCValue AD)
  21. {
  22.     AD->BusHighADC = GetADCAverageValue(ADCHANEL_BUSHIGH);   
  23.     AD->BusLowADC = GetADCAverageValue(ADCHANEL_BUSLOW);   
  24. }
  25. in main()
  26. {     
  27.     while (1) {        
  28.         BusADCSample(&AD);   
  29.      }
  30. }
复制代码
此帖出自stm32/stm8论坛

最新回复

                                 基本上找到原因了,很可能是ESD引起的,现在将几个输入口线将保护,在做实验验证下就O啦  详情 回复 发表于 2010-11-21 18:05
点赞 关注
 

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 AD通道是对外部电压进行采样的,不能悬空!
此帖出自stm32/stm8论坛
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
如果两个通道一起采,则两个AIN输入脚的口线都是方波脉冲,而且是反向的,及AIN1为高时,AIN2为低,AIN1为低时,AIN2为高,下面是测试程序

    while (1) {
        //BusADCSample(&AD);
        GetADCAverageValue(1);
        Delay1ms(10);
        GetADCAverageValue(2);
        Delay1ms(10);
    }
此帖出自stm32/stm8论坛
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
如果只采一个通道,则该通道口线电平一直为高,2v左右,下面是测试程序

    while (1) {
        //BusADCSample(&AD);
        GetADCAverageValue(1);
        Delay1ms(10);
        //GetADCAverageValue(2);
        //Delay1ms(10);
    }
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
AD通道是对外部电压进行采样的,不能悬空!
不好意思,刚写快了,错了
是拉到VCC的,Vref到地,中间接两个104电容
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 请注意通道的等效阻抗。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
不好意思,刚写快了,错了
是拉到VCC的,Vref到地,中间接两个104电容
请帖出电路图。
此帖出自stm32/stm8论坛
 
 
 

回复

91

帖子

0

TA的资源

一粒金砂(初级)

8
 
电路如图,其中RJ3和RJ5已经去掉,

2.JPG (59.63 KB)

2.JPG

23.JPG (32.83 KB)

23.JPG

此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

9
 
1)楼主位说“有的板子OK,有的不行”,这是什么意思?什么叫OK?
2)请减小外部电路阻抗,把RJ4和RJ6减小到1K以下。
3)请保证VCAP连接正确。
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
1)楼主位说“有的板子OK,有的不行”,这是什么意思?什么叫OK?
2)请减小外部电路阻抗,把RJ4和RJ6减小到1K以下。
3)请保证VCAP连接正确。
1。OK就是工作正常,我把不OK的板子的芯片和OK的板子的芯片对调,不OK的变OK,OK的变OK了,就是说和芯片相关,
2. 采样是接到24V的,通过两个电阻进行分压,所以说ADC口线在4V左右,
3.Vcap肯定正确,不正确的话,芯片不能正常工作的
如果说AD口被烧坏了,也不应该产生方波啊??

如果说
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

11
 
1)“OK就是工作正常”,怎么叫正常? 没有电压输出是正常还是测量正确叫正常?还是两者取其一?
2)你不是说已经去掉RJ3和RJ5了吗?怎么又说ADC口线在4V左右?
此帖出自stm32/stm8论坛
 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(初级)

12
 
1)“OK就是工作正常”,怎么叫正常? 没有电压输出是正常还是测量正确叫正常?还是两者取其一?
2)你不是说已经去掉RJ3和RJ5了吗?怎么又说ADC口线在4V左右? ...
就是因为去掉了RJ3和RJ4还有4V输出,才奇怪啊,所以怀疑芯片坏了
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

13
 
可以确定AD烧坏了,第23脚AIN7与地短路,坏机的裸片量的,但这个脚并没有用于AD采样,而是作为
普通输入脚使用的,外部也没啥高压啊
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

14
 
1。OK就是工作正常,我把不OK的板子的芯片和OK的板子的芯片对调,不OK的变OK,OK的变OK了,就是说和芯片相关,
2. 采样是接到24V的,通过两个电阻进行分压,所以说ADC口线在4V左右,
3.Vcap肯定正确,不正确的话, ...
采样是接到24V的---或许某些情况下(比如接地电阻虚焊),STM8芯片被这个高压打坏
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

15
 
                                 基本上找到原因了,很可能是ESD引起的,现在将几个输入口线将保护,在做实验验证下就O啦
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表