280049芯片调试,在初始化时先用调用函数InitGpio()集中配置了GPIO的特性,如配置为普通IO模式、输出引脚、不同步,然后继续配置完其他几个模块后,调用函数Init_Specific_Gpio()将GPIO先拉低,延时10us后再拉高。但通过示波器实测该引脚拉低后1.5ms才拉高,具体代码如下:
void Hw_Init(void)
{
InitSysCtrl();
{
InitSysCtrl();
//CMPSS module initialization must earlier than EPWM module
//
InitCMPSS();
InitXBAR();
//
InitCMPSS();
InitXBAR();
InitEPwm();
InitGpio();
InitGpio();
Init_Can_Data();
InitEcan();
InitEcan();
InitEcap();
InitEQep();
InitAdc();
InitSpi();
InitEQep();
InitAdc();
InitSpi();
Init_Specific_Gpio();
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
//Init_Resolver();
Init_Eqep_Initial_Val();
Init_Eqep_Initial_Val();
Init_Data_Log();
}
}
void InitGpio(void)
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(34,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(25,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setQualificationMode(25,GPIO_QUAL_SYNC);
GPIO_setPadConfig(33,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
GPIO_setQualificationMode(33,GPIO_QUAL_SYNC);
GPIO_setPadConfig(22,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_22_GPIO22);
GPIO_setDirectionMode(22,GPIO_DIR_MODE_IN);
GPIO_setQualificationMode(22,GPIO_QUAL_SYNC);
//PIN22脚默认是analog模式,此处是将其配置为普通IO模式
//仅22和23脚有此特性
GPIO_setAnalogMode(22,GPIO_ANALOG_DISABLED);
}
GPIO_setPinConfig(GPIO_22_GPIO22);
GPIO_setDirectionMode(22,GPIO_DIR_MODE_IN);
GPIO_setQualificationMode(22,GPIO_QUAL_SYNC);
//PIN22脚默认是analog模式,此处是将其配置为普通IO模式
//仅22和23脚有此特性
GPIO_setAnalogMode(22,GPIO_ANALOG_DISABLED);
}
void Init_Specific_Gpio(void)
{
u16 i=0;
{
u16 i=0;
//SPI for PGA411 related
GPIO_writePin(15, 1);
GPIO_writePin(15, 1);
//SPI for EEPROM related
GPIO_writePin(11, 1);
//PGA411 reset related
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
}
但该引脚一旦动作后,后续再操作该引脚就正常了(如连续10次拉低-拉高GPIO34,除去第一次,后续9次均正常)。
若配置完IO口特性后立即操作IO口,则正常动作。不清楚是什么原因,希望有高手不吝赐教。