ZHCZ029D July   2023  – April 2025 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   1
  2.   TMS320F28P65x MCU 器件勘误表器件修订版本 A、0
  3. 1使用说明和公告模型
    1. 1.1 使用说明汇总表
    2. 1.2 公告汇总表
  4. 2命名规则、封装编号法和修订版本标识
    1. 2.1 器件和开发支持工具命名规则
    2. 2.2 支持的器件
    3. 2.3 封装编号法和修订版本标识
  5. 3器件修订版本 A 使用说明和公告
    1. 3.1 器修订版本 A 使用说明
      1. 3.1.1 PIE:背对背 PIEACK 写入和手动 CPU 中断屏蔽清除之后的伪波嵌套中断
      2. 3.1.2 将嵌套中断与重复块一起使用时的注意事项
      3. 3.1.3 GPIO:GPIO 数据寄存器仅通过 CPU1 复位进行复位
      4. 3.1.4 安全性:主要的防御层是构建芯片安全边界,从启用 JTAGLOCK 和零引脚引导至闪存功能开始
    2. 3.2 器件修订版本 A 公告
      1.      公告
      2.      公告
      3.      公告
      4. 3.2.1 公告
      5.      公告
      6. 3.2.2 公告
      7. 3.2.3 公告
      8. 3.2.4 公告
      9.      公告
      10.      公告
      11.      公告
      12.      公告
      13.      公告
      14. 3.2.5 公告
      15.      公告
      16.      公告
      17.      公告
      18.      公告
  6. 4器件修订版本 0 使用说明和公告
    1. 4.1 器件修订版本 0 使用说明
    2. 4.2 器件修订版本 0 公告
      1. 4.2.1 公告
  7. 5文档支持
  8. 6商标
  9. 7修订历史记录

公告

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;
}