打印

请教版主 关于VBAT后备电池的问题。急

[复制链接]
17991|68
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现象描述
1、板子焊接好后安装上电池3v(纽扣电池),非充电的。
2、用万用表量量电池电压 3v没问题,但VBAT端电压则只有1点多v
3、将目标板上电(没有下载任何程序),再断电,则VBAT端电压正常。
4、试验我n多板子,结论同上。
5、不安装电池先给板子上电,再断电,再安装电池,现象同上。
疑问:
1、为什么会出现以上现象,这样生产出来的板子,没上电前,很容易将电池电耗光
2、是不是换上电池后都要马上上电。
3、哪里来的这么大的漏电流?
附图:
[img]file:///C:/Users/zhangyun/AppData/Local/Temp/9X9UZ@BWZ1P%25J@%25[(%60BWFJM.jpg[/img]
沙发
香水城| | 2010-7-15 16:26 | 只看该作者
请用"高级回复"贴图。

使用特权

评论回复
板凳
luckytoad|  楼主 | 2010-7-15 16:31 | 只看该作者

使用特权

评论回复
地板
luckytoad|  楼主 | 2010-7-15 16:36 | 只看该作者
等版主,等高人,等遇到同一问题的人。

使用特权

评论回复
5
香水城| | 2010-7-15 17:05 | 只看该作者
什么芯片型号?

最好贴一张照片,我根据生产编号去查一查。当然,如果你能找供应商咨询,可能可以更快得到结果。

使用特权

评论回复
6
luckytoad|  楼主 | 2010-7-15 17:29 | 只看该作者
芯片照片?型号STM32F103VCT6  Z
                       22 CNY 93
                       MLT HP 017

使用特权

评论回复
7
luckytoad|  楼主 | 2010-7-15 17:33 | 只看该作者
供货倒是正规渠道,只不过是中间商,不是一级代理商。估计咨询也没有,他们只懂贸易而已。买了500片。以后是不是可以从你那里进货啊?

使用特权

评论回复
8
香水城| | 2010-7-15 17:39 | 只看该作者
从我这里进货?  ST不做直销,都是通过代理商销售的。

使用特权

评论回复
9
luckytoad|  楼主 | 2010-7-15 17:45 | 只看该作者
趁你在线,再讨论个问题,经我验证,发现中断也有个bug,清中断标志后必须再另加一个语句,否则中断进2次,当然第二次进去你是查不到标志的。通讯,dma tim 中断都是这样。很容易验证的

使用特权

评论回复
10
香水城| | 2010-7-15 17:50 | 只看该作者
趁你在线,再讨论个问题,经我验证,发现中断也有个bug,清中断标志后必须再另加一个语句,否则中断进2次,当然第二次进去你是查不到标志的。通讯,dma tim 中断都是这样。很容易验证的 ...
luckytoad 发表于 2010-7-15 17:45


这么多人用STM32,我是第一次听说有这个问题,肯定是你哪里搞错了。

使用特权

评论回复
11
luckytoad|  楼主 | 2010-7-15 17:53 | 只看该作者
绝对的,我保证。因为是第一次用,我测试比较细,而且很好验证,但不影响应用,一般人可能不注意

使用特权

评论回复
12
香水城| | 2010-7-15 17:55 | 只看该作者
如何验证?

使用特权

评论回复
13
luckytoad|  楼主 | 2010-7-15 18:00 | 只看该作者
void TIM6_IRQHandler(void)                  //1ms
{
  ms_100_cntdbu++;
  if ((TIM6->SR & 0x0001) != 0)    // check interrupt source
  {                 
                ms_100_cnt++;
                   TIM6->SR &= ~(1<<0);                          // clear UIF flag       
        }
               
}
这2值不等的  ms_100_cntdbu  ms_100_cn

TIM6->SR &= ~(1<<0);  这条语句不能是最后一条,否则就会再进一次中断,但标志没置位。通过输出管脚或者一个计数,很容易看到。只要TIM6->SR &= ~(1<<0);  再加一条语句,就行了。串口 和 dma都是这样。因为多进的这次查不到标志,一般人不容易注意。估计和指令流水线有关。

使用特权

评论回复
14
luckytoad|  楼主 | 2010-7-15 18:01 | 只看该作者
用2个管脚,用示波器看也很容易看到的

使用特权

评论回复
15
luckytoad|  楼主 | 2010-7-15 18:05 | 只看该作者
其它中断也是如此,我测的应该比较细了,先清没问题的,清完随便加点垃圾也没问题,只是不能是最后清。
用库函数的也没问题,原因同上。很久以前其它的芯片我也发现过类似问题。

使用特权

评论回复
16
luckytoad|  楼主 | 2010-7-15 18:08 | 只看该作者
我没有软件模拟,软件模拟应该没问题。实际运行肯定是这样子了。

使用特权

评论回复
17
香水城| | 2010-7-15 18:19 | 只看该作者
关于中断的问题,我不认为是Bug,也许像你说的,与指令流水线有关。

因为从来都是先清中断标志再处理中断,所以没有人注意到这个(当然还需要验证)。

请问为什么一定要处理完中断在清中断标志呢?

使用特权

评论回复
18
luckytoad|  楼主 | 2010-7-15 18:51 | 只看该作者
本帖最后由 luckytoad 于 2010-7-15 19:00 编辑

1、“从来都是先清中断标志再处理中断”,这个有点绝对了,你看看3.3的库,例程中的中断处理,倒是很少是先清中断标志再处理的。

2、处理完清中断的目的和中断处理的内容有关。
   a如果进去就清,在没有退出中断时,又来中断,可以将中断悬挂起来,下次再进,不会丢(仅限一次)。
最后清的目的,是减少中断次数,一般退出前还要查标志,处理好了,请标志退出,提高效率。
   b当然对定时器中断之类的无所谓的。但对外部中断,比如要某些响应事件,一般都是后面清(一些soe时间处理)。
  c另外中断处理程序比较长一般也是后面清中断的(少进中断,提高效率),看具体的应用了。
  d如果n个中断源共用一个中断,也会出现后清的时候,比如定时器3的就有多个中断源。再比如多个管脚共用一个外部中断,不管谁引起的,都要处理所有的,然后统一清掉,如果先请,就要丢中断了。另外就是,一般严谨的处理即使你没有开放你没有用到的中断源,也会叫上标志判断,加上处理(空),清中断(就像中断处理原型是的,理论上永远不会进,但也加上处理)。这样也会出会出现最后清的时候。
   你有时间验证一下这个问题。
3、 但不管怎样,我认为这是个bug(如果你验证和我说的一样的话),否则就应该再勘误表上说明,因为手册上并没说明或者提到必须先清中断再处理。
4、有的芯片是进行读操作的动作就清标志了,那是先清了。

另外VBAT的事情还请你关心

使用特权

评论回复
19
luckytoad|  楼主 | 2010-7-15 19:07 | 只看该作者
当然了,这个问题很好处理,知道就行,提出来的目的是希望把这些问题能够汇总到你那里,供别人参考。了解了就好处理,我是就怕程序超出我的预期。
   回家吃饭了。下次在探讨。
   另外就是我下周有个小批量,关于VBAT的事情还请指教!
多谢!

使用特权

评论回复
20
午夜霓虹| | 2010-7-16 08:21 | 只看该作者
arm好像有这个例子,不知道对不对,在这里说一下,就说写一个内存的时候,最后的写要写两次才能真正的写入,你可以查看一下指令集关于写内存方面的说明,我只是提出这个观点,欢迎大家探讨。

使用特权

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

本版积分规则

0

主题

72

帖子

2

粉丝