This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28069:GPIO 输出切换干扰

Guru**** 2380860 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1428517/tms320f28069-gpio-output-toggling-glitch

器件型号:TMS320F28069

工具与软件:

嗨、

我注意到对于被配置为输出的特定 GPIO 有一些奇怪的事情。 下面的代码是如何配置 GPIO30和 GPIO25。 当我的项目正在运行时、在具有大量开关噪声的情况下、这些 GPIO 往往会在我不写入任何命令的情况下自行"切换"。

GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 0;               // GPIO30 = GPIO30

GpioCtrlRegs.GPADIR.bit.GPIO30 = 1;      // GPIO30 =输出

GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0;    // Disable pullup on GPIO30 (禁用 GPIO30上的上拉)

GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 0;               // GPIO25 = GPIO25

GpioCtrlRegs.GPADIR.bit.GPIO25 = 1;      // GPIO25 =输出

GpioCtrlRegs.GPAPUD.bit.GPIO25 = 0;    // Disable pullup on GPIO25 (禁用 GPIO25上的上拉)

这些 GPIO 输出很少有在某些高电压开关下布线、它在某些情况下会拾取大量噪声。 当项目处于低噪声情况下时、GPIO 运行良好、仅执行其编程设定的操作。 但当它处于高噪声环境中时、有时这个 GPIO 会自行切换。 在调试期间监控 GpioDataRegs.GPADAT.bit.GPIO30位时、它将自行从0->1或1->0变化。 我已经删除了所有 set/clear/dat 命令、以便完全独立地观察行为。 下面是 GPIO30和 GPIO25这种行为的屏幕截图(它们都在 HV 开关噪声源附近布线)。

那么、我的问题是为什么会发生这种情况? 如果我的 GPIO 设置为输出、那么在没有我的代码告诉它的情况下、它不应该切换/锁存/更改状态。 高噪声是否有变化会影响该 GPIO 来改变状态?

我们现在要做的工作是、假设微控制器不断读取该 GPIO、就像它是输入一样、并且在读取噪声和进行自切换时可能会自我欺骗。 因此、下面的代码是额外的鉴定窗口 GPIO 设置、假设它是输入。 下面的代码是采用这种额外设置时 GPIO30和 GPIO25的屏幕截图。

GpioCtrlRegs.GPACTRL.bit.QUALPRD3 = 0x4B;     //(75x2)/(90Mhz)=周期

GpioCtrlRegs.GPAQSEL2.bit.GPIO30 = 2;               //6采样窗口

GpioCtrlRegs.GPAQSEL2.bit.GPIO25 = 2;               //6采样窗口

感谢您的任何帮助或见解、非常感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    输入限定设置仅适用于 GPIO 输入路径、如下图所示

    您是否知道靠近此 GPIO 的高压轨会造成什么级别的干扰?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正确、根据我的理解、输入限定不应影响 GPIO 设置作为输出的行为、但会影响输出的行为。 即使将 GPIO 设置为输出、微控制器是否仍然不断读取此引脚的数据? 这就是为什么我 一开始甚至想改变输入限定的原因。  

    附近的高压开关会在 GPIO 上产生大约200mvp-p 的噪声。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Peter:

    您是否确定引脚由于输入噪声而切换。

    否则你会看到小的突变脉冲,但在图像中,我看到一个相当大的脉冲也可能是这样的情况,通常噪声耦合是较低的,把一些情况下,噪声是大于 VDDIO ?
    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    目前在代码中、我没有任何命令来更改这些 GPIO 输出的状态。  现在 无法控制这些 GPIO 输出、它们只会在高噪声期间"独自"进行更改  

    上面的故障屏幕截图只是该故障的一个示例、在高噪声场景中、GPIO 状态是随机的。 有时在几毫秒到几秒之间保持高电平或低电平状态、然后自行切换。