打印
[STM8]

连接手机USB接口MCU就复位?

[复制链接]
1466|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guoyt|  楼主 | 2014-10-31 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM8S003F3芯片,用到三路单次AD转换输入,一路是测量主电源的(5.5V),另外两路分别是通过连接手机的USB接口测量电池电压的,没有连接到手机时,都正常,当连接到手机或拔掉手机时,单片机即刻复位重启
沙发
guoyt|  楼主 | 2014-10-31 11:06 | 只看该作者
或在连接上手机后,也会随意性的复位重启。

使用特权

评论回复
板凳
huanghuac| | 2014-10-31 11:07 | 只看该作者
插拔手机时有瞬间脉冲输入到IO口致单片机复位

使用特权

评论回复
地板
zhanglli| | 2014-10-31 11:09 | 只看该作者
代码看看吧

使用特权

评论回复
5
guoyt|  楼主 | 2014-10-31 11:09 | 只看该作者

       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;

使用特权

评论回复
6
gongche| | 2014-10-31 11:11 | 只看该作者
还是贴上你的电路图吧..
怎么到处 喂狗?  是不是被狗咬了...(由于干扰导致飞了?)

使用特权

评论回复
7
guoyt|  楼主 | 2014-10-31 11:12 | 只看该作者

使用特权

评论回复
8
huanghuac| | 2014-10-31 11:13 | 只看该作者
另外两路分别是通过连接手机的USB接口测量电池电压的....你要做什么?
手机上是有电池充电管理电路的吧..  

使用特权

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

使用特权

评论回复
10
happy_10| | 2014-10-31 11:15 | 只看该作者
USB2就是直接连接手机的USB口吧

使用特权

评论回复
11
guoyt|  楼主 | 2014-10-31 11:15 | 只看该作者
是的,
目的是通过检测电压来判断是否已连接上手机。

使用特权

评论回复
12
gongche| | 2014-10-31 11:18 | 只看该作者

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

使用特权

评论回复
13
guoyt|  楼主 | 2014-10-31 11:25 | 只看该作者
gongche 发表于 2014-10-31 11:18
你这种检测方式不好吧, 最好是检测 D-, D+上的电压吧。
电脑上检测USB是否连接, 或者检查是高速或低速U ...


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

使用特权

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

使用特权

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

使用特权

评论回复
16
wenfen| | 2014-10-31 11:29 | 只看该作者
从复位的根源查起!!

使用特权

评论回复
17
zhuhuis| | 2014-10-31 11:30 | 只看该作者
检查下硬件吧。我看不像软件地事

使用特权

评论回复
18
gongche| | 2014-10-31 11:34 | 只看该作者
学习一下楼主的经验,以后要注意起来了,不要因为可能最基本的问题没注意而花费了很多的时间,

使用特权

评论回复
19
guoyt|  楼主 | 2014-10-31 11:36 | 只看该作者
嗯,呵呵,那我就结贴了哈

使用特权

评论回复
20
guoyt|  楼主 | 2014-10-31 11:36 | 只看该作者
多谢大家,周五快乐,哈哈哈

使用特权

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

本版积分规则

1018

主题

9067

帖子

3

粉丝