ZHCZ029D July 2023 – April 2025 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
GPIO:漏极开路配置可以驱动短高电平脉冲
0、A
每个 GPIO 都可以使用 GPxODR 寄存器配置为漏极开路模式。但是,内部器件时序问题可能会导致 GPIO 在进入或退出高阻抗状态期间将逻辑高电平驱动至高达 0–10 ns。
如果另一个驱动器同步驱动低电平,这种不必要的高电平可能会导致 GPIO 与线路上的另一个漏极开路驱动器发生争用。我们不希望出现此争用,因为它会对两个器件施加应力,并导致信号上出现短暂的中间电压电平。如果接收器逻辑中没有足够的逻辑滤波来滤除此短暂脉冲,则该中间电压电平可能会被错误地解读为高电平。
如果存在争用问题,请勿使用 GPIO 的漏极开路功能;请改为在软件中仿真漏极开路模式。通过将 GPIO 数据 (GPxDAT) 设置为静态 0 并切换 GPIO 方向位 (GPxDIR) 来启用和禁用驱动低电平,可以实现漏极开路仿真。有关实现示例,请参阅以下代码。
void main(void)
{ ...
// GPIO configuration
EALLOW; // disable pullup
GpioCtrlRegs.GPxPUD.bit.GPIOx = 1; // disable open-drain mode
GpioCtrlRegs.GPxODR.bit.GPIOx = 0; // set GPIO to drive static 0 before
// enabling output
GpioDataRegs.GPxCLEAR.bit.GPIOx = 1;
EDIS;
...
// application code
...
// To drive 0, set GPIO direction as output
GpioCtrlRegs.GPxDIR.bit.GPIOx = 1;
// To tri-state the GPIO(logic 1),set GPIO as input
GpioCtrlRegs.GPxDIR.bit.GPIOx = 0;
}