打印
[STM8]

奇怪!奇怪!奇怪!连接手机USB接口MCU就复位?

[复制链接]
1974|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 zhxingyu 于 2014-1-1 22:53 编辑

现在在用STM8S003F3芯片,用到三路单次AD转换输入,一路是测量主电源的(5.5V),另外两路分别是通过连接手机的USB接口测量电池电压的,没有连接到手机时,都正常,当连接到手机或拔掉手机时,单片机即刻复位重启,或在连接上手机后,也会随意性的复位重启。我 怀疑是在插拔手机时有瞬间脉冲输入到IO口致单片机复位吗?但也不太肯定,第一次用到这个芯片,请高手支招。谢谢!以下是我的代码:
       if(!(ADC_CSR&(1<<7)))return;//没有转换完返回
        ADCValue = ADC_DRL;
        ADCValue |= ADC_DRH << 8;//读值
        ADV += ADCValue;
        ADC_CSR &= 0x7F;
        wdt_reset();
        if(ADCunter < 63)
          ADCunter ++;
        else
        {
                 ADCunter = 0;
                 switch(ADStep)
                 {
                        case  2:
                              PowerVolt = ((float)ADV/65536) * 3.5;
                              break;
                        case  3:
                              Usb2Volt = ((float)ADV/65536) * 3.5;
                              break;
                        case  4:
                              Usb1Volt = ((float)ADV/65536) * 3.5;
                              break;
                        default:
                              break;
                 }
                 wdt_reset();
                 if(ADStep < 4)ADStep ++;
                 else ADStep = 2;
                 ADV = 0;
        }
        wdt_reset();
        ADC_CR1 = 0x00;
        ADC_CR2 = 0x08;//数据右对齐
        ADC_CSR = ADStep;
        ADC_TDRL = 0x3f;//禁止施密特触发
        ADC_CR1 = 0x21;//
        Delay_us(10);
        ADC_CR1 |= 0x01;

1111111.JPG (32 KB )

1111111.JPG
沙发
foxpro2005| | 2014-1-1 22:42 | 只看该作者
还是贴上你的电路图吧..
怎么到处 喂狗?  是不是被狗咬了...(由于干扰导致飞了?)

使用特权

评论回复
板凳
zhxingyu|  楼主 | 2014-1-1 22:45 | 只看该作者
刚开始怀疑是看门狗复位了,就多加了几个,但并不是这个问题。如果是插拔瞬间的干扰致单片机复位,但在连接到手机后,为什么还会复位?

使用特权

评论回复
地板
foxpro2005| | 2014-1-1 22:53 | 只看该作者
另外两路分别是通过连接手机的USB接口测量电池电压的....你要做什么?
手机上是有电池充电管理电路的吧..  

使用特权

评论回复
5
zhxingyu|  楼主 | 2014-1-1 22:55 | 只看该作者
补上了原理图,USB2就是直接连接手机的USB口,请高手支招。谢谢!

使用特权

评论回复
6
zhxingyu|  楼主 | 2014-1-1 22:56 | 只看该作者
foxpro2005 发表于 2014-1-1 22:53
另外两路分别是通过连接手机的USB接口测量电池电压的....你要做什么?
手机上是有电池充电管理电路的吧..   ...

目的是通过检测电压来判断是否已连接上手机。

使用特权

评论回复
7
foxpro2005| | 2014-1-1 23:11 | 只看该作者
本帖最后由 foxpro2005 于 2014-1-1 23:14 编辑
zhxingyu 发表于 2014-1-1 22:56
目的是通过检测电压来判断是否已连接上手机。

你这种检测方式不好吧, 最好是检测 D-, D+上的电压吧。
电脑上检测USB是否连接, 或者检查是高速或低速USB也是通过检测D-, D+来实现的吧。

使用特权

评论回复
8
zhxingyu|  楼主 | 2014-1-1 23:26 | 只看该作者
foxpro2005 发表于 2014-1-1 23:11
你这种检测方式不好吧, 最好是检测 D-, D+上的电压吧。
电脑上检测USB是否连接, 或者检查是高速或低速US ...

请指教应该用什么方法来检测?

使用特权

评论回复
9
zhxingyu|  楼主 | 2014-1-2 09:07 | 只看该作者
经试验把R7断开,当插上USB也会复位,这很显然是对MCU的电源干扰。有什么好办法消除这个干扰吗?请遇到过类似问题的高手指教?

使用特权

评论回复
10
lnak| | 2014-1-2 11:05 | 只看该作者
怎么会GND经R7到AD?有没有共同的参考地?

使用特权

评论回复
11
zhxingyu|  楼主 | 2014-1-2 11:40 | 只看该作者
lnak 发表于 2014-1-2 11:05
怎么会GND经R7到AD?有没有共同的参考地?

谢谢回复!问题已经解决了,电源重新处理下已OK。

使用特权

评论回复
12
通宵敲代码| | 2014-1-2 11:53 | 只看该作者
从复位的根源查起!!

使用特权

评论回复
13
ddllxxrr| | 2014-1-2 12:36 | 只看该作者
检查下硬件吧。我看不像软件地事

使用特权

评论回复
14
拿起书本| | 2014-1-2 13:15 | 只看该作者
学习一下楼主的经验,以后要注意起来了,不要因为可能最基本的问题没注意而花费了很多的时间,

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

309

帖子

3

粉丝