280049芯片调试,在初始化时先用调用函数InitGpio()集中配置了GPIO的特性,如配置为普通IO模式、输出引脚、不同步,然后继续配置完其他几个模块后,调用函数Init_Specific_Gpio()将GPIO先拉低,延时10us后再拉高。但通过示波器实测该引脚拉低后1.5ms才拉高,具体代码如下:
{
InitSysCtrl();
//
InitCMPSS();
InitXBAR();
InitGpio();
InitEcan();
InitEQep();
InitAdc();
InitSpi();
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
Init_Eqep_Initial_Val();
}
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
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);
}
{
u16 i=0;
GPIO_writePin(15, 1);
GPIO_writePin(11, 1);
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
但该引脚一旦动作后,后续再操作该引脚就正常了(如连续10次拉低-拉高GPIO34,除去第一次,后续9次均正常)。
若配置完IO口特性后立即操作IO口,则正常动作。不清楚是什么原因,希望有高手不吝赐教。
Green Deng:请问你测试的是从上电到第一次动作的时间还是怎么测试的?
280049芯片调试,在初始化时先用调用函数InitGpio()集中配置了GPIO的特性,如配置为普通IO模式、输出引脚、不同步,然后继续配置完其他几个模块后,调用函数Init_Specific_Gpio()将GPIO先拉低,延时10us后再拉高。但通过示波器实测该引脚拉低后1.5ms才拉高,具体代码如下:
{
InitSysCtrl();
//
InitCMPSS();
InitXBAR();
InitGpio();
InitEcan();
InitEQep();
InitAdc();
InitSpi();
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
Init_Eqep_Initial_Val();
}
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
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);
}
{
u16 i=0;
GPIO_writePin(15, 1);
GPIO_writePin(11, 1);
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
但该引脚一旦动作后,后续再操作该引脚就正常了(如连续10次拉低-拉高GPIO34,除去第一次,后续9次均正常)。
若配置完IO口特性后立即操作IO口,则正常动作。不清楚是什么原因,希望有高手不吝赐教。
mangui zhang:
你这个for循环里面有问题啊,GPIO写1后马上调到写0,所以给1没有预留时间延时
for(i=0;i<10;i++) { GPIO_writePin(34, 0); DEVICE_DELAY_US(10); GPIO_writePin(34, 1); }
280049芯片调试,在初始化时先用调用函数InitGpio()集中配置了GPIO的特性,如配置为普通IO模式、输出引脚、不同步,然后继续配置完其他几个模块后,调用函数Init_Specific_Gpio()将GPIO先拉低,延时10us后再拉高。但通过示波器实测该引脚拉低后1.5ms才拉高,具体代码如下:
{
InitSysCtrl();
//
InitCMPSS();
InitXBAR();
InitGpio();
InitEcan();
InitEQep();
InitAdc();
InitSpi();
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
Init_Eqep_Initial_Val();
}
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
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);
}
{
u16 i=0;
GPIO_writePin(15, 1);
GPIO_writePin(11, 1);
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
但该引脚一旦动作后,后续再操作该引脚就正常了(如连续10次拉低-拉高GPIO34,除去第一次,后续9次均正常)。
若配置完IO口特性后立即操作IO口,则正常动作。不清楚是什么原因,希望有高手不吝赐教。
user6285712:
回复 Green Deng:
是上电后第一次IO口拉低到拉高之间的间隔时间是否符合设定值。
280049芯片调试,在初始化时先用调用函数InitGpio()集中配置了GPIO的特性,如配置为普通IO模式、输出引脚、不同步,然后继续配置完其他几个模块后,调用函数Init_Specific_Gpio()将GPIO先拉低,延时10us后再拉高。但通过示波器实测该引脚拉低后1.5ms才拉高,具体代码如下:
{
InitSysCtrl();
//
InitCMPSS();
InitXBAR();
InitGpio();
InitEcan();
InitEQep();
InitAdc();
InitSpi();
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
Init_Eqep_Initial_Val();
}
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
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);
}
{
u16 i=0;
GPIO_writePin(15, 1);
GPIO_writePin(11, 1);
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
但该引脚一旦动作后,后续再操作该引脚就正常了(如连续10次拉低-拉高GPIO34,除去第一次,后续9次均正常)。
若配置完IO口特性后立即操作IO口,则正常动作。不清楚是什么原因,希望有高手不吝赐教。
user6285712:
回复 mangui zhang:
测试结果是: 第一次IO口写0到IO口写1之间间隔1.5ms(不符合设定值),后续9次之间的间隔就是10us了。
您说的没有延时时间也是对的,写1后是该加个延时,但目前测试结果写1后不加延时IO口也可正常动作。
280049芯片调试,在初始化时先用调用函数InitGpio()集中配置了GPIO的特性,如配置为普通IO模式、输出引脚、不同步,然后继续配置完其他几个模块后,调用函数Init_Specific_Gpio()将GPIO先拉低,延时10us后再拉高。但通过示波器实测该引脚拉低后1.5ms才拉高,具体代码如下:
{
InitSysCtrl();
//
InitCMPSS();
InitXBAR();
InitGpio();
InitEcan();
InitEQep();
InitAdc();
InitSpi();
// this delay for PGA411 power on
DEVICE_DELAY_US(12000);
Init_Eqep_Initial_Val();
}
{
GPIO_setPadConfig(28,GPIO_PIN_TYPE_STD);
GPIO_setPinConfig(GPIO_28_GPIO28);
GPIO_setDirectionMode(28,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_34_GPIO34);
GPIO_setDirectionMode(34,GPIO_DIR_MODE_OUT);
GPIO_setPinConfig(GPIO_25_GPIO25);
GPIO_setDirectionMode(25,GPIO_DIR_MODE_IN);
GPIO_setPinConfig(GPIO_33_GPIO33);
GPIO_setDirectionMode(33,GPIO_DIR_MODE_IN);
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);
}
{
u16 i=0;
GPIO_writePin(15, 1);
GPIO_writePin(11, 1);
for(i=0;i<10;i++)
{
GPIO_writePin(34, 0);
DEVICE_DELAY_US(10);
GPIO_writePin(34, 1);
}
但该引脚一旦动作后,后续再操作该引脚就正常了(如连续10次拉低-拉高GPIO34,除去第一次,后续9次均正常)。
若配置完IO口特性后立即操作IO口,则正常动作。不清楚是什么原因,希望有高手不吝赐教。
mangui zhang:
回复 user6285712:
不加任何延时时,IO口可能响应不过来翻转,你可以算一下机器周期和IO口的最快翻转率