isakura 发表于 2014-6-4 16:20:30

uart要怎么关闭?

我现在用的msp430f5438,现在在低功耗时功耗太大,发现是被串口消耗了

现在启动了串口功耗就降不下来,试过几个办法都不行

1、把串口都配置成默认状态(不启动串口时的寄存器状态),无效;
2、串口控制寄存器有个进入sleep的状态位,置1,无效;
3、关闭串口的时钟输入,还是无效;

现在有什么办法可以关掉串口?

isakura 发表于 2014-6-4 16:54:42

没人知道嘛????知道的指点下啊

dr2001 发表于 2014-6-4 16:55:48

没专门用过MSP430,所以这是一般的手段,特别具体的还是要阅读手册,可能芯片提供了独特的手段。

基本流程就是外设的初始化过程倒过来。

关闭时钟树。在外设模块有时钟的情况下,RESET模块,或者,在模块空闲时,关闭收发功能。然后,把波特率发生器关了。最后,把这个模块的时钟在时钟控制模块里切断。
对应的,如果这是最后一个激活的模块,那么需要把对应APB之类的时钟关闭,然后关PLL之类的。

对应IO引脚关闭。如果外部引脚在休眠状态会给定电平,那么引脚切换回GPIO状态,置于输入并且关闭上拉;如果外部电路需要固定电平,那么根据其具体要求,输出固定电平,也是用GPIO模式。

如果有对应的电源控制功能,关模块的电源。

yy8047 发表于 2014-6-4 16:59:13

好像有个使能位吧,你启动的时候会打开

michael.yang 发表于 2014-6-4 17:15:15

1、关闭串口时钟
2、如果串口的IO脚有上拉电阻,则将IO配置为输出模式,并输出高电平;若没有上拉电阻,则配置为浮动输入,或输出低电平也行(主要还是看你外围电路来分析)

isakura 发表于 2014-6-4 17:40:38

michael.yang 发表于 2014-6-4 17:15
1、关闭串口时钟
2、如果串口的IO脚有上拉电阻,则将IO配置为输出模式,并输出高电平;若没有上拉电阻,则 ...

串口时钟我用的是SMCLK,低功耗时我已经把这个关闭了,

IO口的配置也没问题,在没打开串口功能的情况下,进入低功耗的串口IO都是一样配置的

isakura 发表于 2014-6-4 17:43:44

yy8047 发表于 2014-6-4 16:59
好像有个使能位吧,你启动的时候会打开



我看的这个位是进入sleep的,置位也没效果

xiesx1985 发表于 2014-6-4 20:58:09

楼主怎么确认是串口的问题?

1.系统时钟,进入的是哪个低功耗模式?
2. 不用的IO口方向设置为输出
3. 把IO口配置成GPIO模式,不使用第二功能

qiuchen 发表于 2014-6-4 21:51:03

楼主能说说功耗具体是多少吗?

pentong 发表于 2014-6-4 21:52:26

本帖最后由 pentong 于 2014-6-4 21:54 编辑

前段时间我也遇到这个情况,开了一个串口,然后进入低功耗模式3运行,当时电流确实很大上百uA了,这个应该是串口模块时钟工作造成的。后面没时间调试,就没弄了。
目前,我这边想到的两种办法:
1)串口TX、RX引脚在进入低功耗模式前设置为普通IO口,高低电平根据外围电路引脚电平而定。低功耗唤醒后,再重新初始化串口模块口TX、RX引脚,但这种方式直接用,不适合串口唤醒的模式。
2)串口TX、RX引脚在进入低功耗模式前设置为普通IO口,其中RX引脚和P1/2带IO中断的任一引脚短接起来,并设置为输入状态,启用IO中断。然后进入低功耗模式。当有外部串口数据时,通过IO唤醒系统,重新初始化串口引脚,接收数据。这种方式对于高波特率,可能会造成唤醒第一个串口数据字节无法识别。
这是我想的办法,没时间试,你可以试验试验。
页: [1]
查看完整版本: uart要怎么关闭?