

应用如上图。为保证未动作状态是功耗最低,上拉电阻值应尽可能大,请问如何确定保证在动作状态输入管脚能够正确检测高电平的上拉电阻最大值?
是不是保证 Vcc 减 手册中IO最大漏电流乘电阻值的压降 结果大于手册中IO输入最大高电平电压就可以了。
boyang lu:
另外,MSP430 输入管脚接Vcc或GND哪个静态功耗相对更低?
灰小子:
msp430有内部上拉和下拉电阻的,可以考虑使用
gaoyang9992006:
MSP430单片机IO口用来检测高低电平时,是不需要外部上拉下拉的,因为其内部有上拉和下拉。在用作高低电平检测时,需要开启上拉或下拉。
如果有效状态为高电平,则需要配置为REN为上拉使能,且配置OUT为0,即设置为下拉。
如果有效状态为低电平,则需啊哟配置REN为使能,且OUT位1,即设置为上拉。
如果不开启内部上拉下拉使能,则IO可能出现不固定状态。譬如,当IO被输入高后,外部输入被撤除,但IO寄存器仍然为高。注意:
这里出现的情况是给IO输入高电平后,外部输入撤离,但是IO寄存器IN仍然保持高电平,而是用万用表量电压后,IO变为0.出现这个情况的原因是IO对地串联了一个3K电阻和100nf电容,外部输入是加在电阻和电容的连接处的。应该是由外部输入时,对电容充电,外部输入撤离后电容保持该电压。
PS:MSP430f5529DEMO里关于按键中断init
#define BUTTON_PORT_DIR PADIR#define BUTTON_PORT_OUT PAOUT#define BUTTON_PORT_SEL PASEL#define BUTTON_PORT_REN PAREN#define BUTTON_PORT_IE PAIE#define BUTTON_PORT_IES PAIES#define BUTTON_PORT_IFG PAIFG#define BUTTON_PORT_IN PAIN#define BUTTON1_PIN BIT7 //P1.7#define BUTTON2_PIN BIT2 //P2.2#define BUTTON1_IFG P1IFG //P1.7#define BUTTON2_IFG P2IFG //P1.7
void Buttons_init(uint16_t buttonsMask){ BUTTON_PORT_OUT |= buttonsMask; //buttons are active low BUTTON_PORT_REN |= buttonsMask; //pullup resistor BUTTON_PORT_SEL &= ~buttonsMask; }
boyang lu:
回复 灰小子:
按照我的应用方式,大部分时间Vcc要通过上拉电阻接地,IO用来检测与地连接断开。内部上拉电阻很小,对电池消耗太大了
Ling Zhu2:
回复 boyang lu:
正解,内部上拉电阻差不多几十k。
boyang lu:
回复 Ling Zhu2:
哪个是正解?最大上拉电阻的计算方法还是“内部电阻很小”?
Ling Zhu2:
回复 boyang lu:
如果需要超低功耗 外部上拉比较合适。
boyang lu:
回复 Ling Zhu2:
哪用多大的上拉电阻呢最省电呢?
Maka Luo:
回复 boyang lu:
内部上拉电阻的阻值在几十K, 如果需要考虑IO口低功耗功能,强烈建议使用外部上拉电阻,并不要使能内部上拉电阻。
此IO口的作用是什么,只是数字逻辑判定吗? 如果是,可以考虑上拉一个100K 电阻,IO最大电流就是33uA。如果还是比较大功耗,可以适当增加电阻阻值。
如果AD输入,上拉电阻取决于采样信号的范围。
提问的时候最好附上原理图,方便大家更好回答你的问题。谢谢!
boyang lu:
回复 Maka Luo:
或者这样
上述电路适用MSP430F2274,IO输入用于检测高低电平,内部上下拉不使用。
如上图外部上拉电阻为5M欧是,IO能否正确检测 高电平?
TI中文支持网




