TI中文支持网
TI专业的中文技术问题搜集分享网站

怎么防止GPIO口一上电就就是高电平

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

Susan Yang:您可以看一下 www.ti.com/…/spruh18h.pdf 的

GPxPUD

GPIO端口上电是默认输入高阻态,但是有些IO是内部上拉是使能的,所以在系统上电后,没有程序初始化的情况下,会测试到GPIO是高电平

如 Table 1-83. GPIO Port B Internal Pullup Disable (GPBPUD) Register Field Descriptions 的

Enable the internal pullup on the specified pin. (default for GPIO58-GPIO50))

GPIO复位后默认被内部上拉了,所以呈现高电平。

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

user3900194:

回复 Susan Yang:

如何设置,上电后是低电平呢?一上电是高电平很危险的,如果是上下互补的MOS管,先有主电话,GPIO都是高电平,很容易直通管子,造成坏管。

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

Susan Yang:

回复 user3900194:

参考 processors.wiki.ti.com/…/General_Purpose_IO_(GPIO)_FAQ_for_C2000

好像没有特别的办法,我再次确认之后给您回复

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

Susan Yang:

回复 user3900194:

目前最有效的方法就是加下拉电阻了

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

user3900194:

回复 Susan Yang:

我加了2k电阻效果不大,加到500欧姆,才有效果,电阻太小,PWM输出时功耗太大了

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

灰小子:

回复 user3900194:

建议提供下电路原理图。
一般加4.7k或者10k的电阻就可以。具体还有要看外围电路。

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

mangui zhang:

回复 user3900194:

这种情况也就是程序未控制IO口的状态下出现IO口状态不定 导致开关管导致的误操作
我以前的设计中使用2K以下下拉电阻就能保证IO口为低电平你这个500才起效果可能你
外部电路造成了回路 需分析这种只能通过硬件解决一般开关管输入都是高阻

怎么防止GPIO口一上电就就是高电平?

GPIO也有2k的下拉电阻不管用,将下拉电阻地质200欧姆才可以,用的28069,在28035上没有此问题,难道就是因为28069运行速度快?

主程序:

void main(void)
{

InitSysCtrl();//感觉从程序一上电后,GPIO就是高电平
InitGpio();//直到在初始GPIO中,将GPIO拉低,高电平才消失
InitEPwm();
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32)&RamfuncsLoadSize);

InitFlash();

DINT;

user3900194:

回复 mangui zhang:

非常感谢,那我找下外部电路试试看

赞(0)
未经允许不得转载:TI中文支持网 » 怎么防止GPIO口一上电就就是高电平
分享到: 更多 (0)