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.

[参考译文] TMS570LS3137:NHET1引脚21、23、25在配置为输入时不工作

Guru**** 2551110 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1352924/tms570ls3137-nhet1-pins-21-23-25-not-working-when-configured-as-inputs

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

我们使用的是 TMS570S3137。

我们需要使用 NHET1[21],NHET1[23],NHET1[25]作为 GPIO 输入,但它们不会读取连接到它们的信号的值。

这些信号会被多路复用并且 PINMUX 看起来配置正确。

这些引脚在配置为输出而不是输入时可正常工作。

我创建了一个测试项目以与 TMS570LS31x Hercules 开发套件(HDK)配合使用来演示问题、请参阅随附的。

测试项目非常简单 --我 有4个 NHET 引脚被配置为输出,驱动4个被配置为输入的 NHET 引脚。

我在3137 HDK 上添加了4个跳线、将4个输出连接到4个输入。

NHET1 11、21、23和25在 HALCoGen 中配置为输入、而 NHET1 10、20、22、24配置为输出。

下面的红线表示 HDK PCB 底部 HDK、J11接头引脚之间的4个跳线。

 

连接的代码将输出驱动为高电平然后驱动为低电平、并在每次发生变化时读取输入引脚。

其中一个 NHET‘引脚(NHET11)作为一个"良好"基准被提供并可按预期工作、而 NET21、23、和25不工作。  具体而言、当每个输出引脚跳线为更改时、从 NHET21、23和25读取的值不会改变。  NHET1[11]的配置与 NHET1[21]、NHET1[23]和 NHET1[25]一样,但它们的行为不同!

 请注意、当配置为输出而不是输入时、NHET 21、23和25的确可以正常工作。  非常奇怪。

NHET 21、23和25进行多路复用、但 PINMUX 看起来配置正确、请参阅附加的 HALCoGen 文件。

我们想知道将这些 NHET 引脚配置为输入时所缺少的内容!

非常感谢

-乔


e2e.ti.com/.../GPIO_5F00_Test.zip

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

    您好、Joe!

    您能做一个小测试吗、让我知道结果。

    只需尝试为所有  NHET 21、23和25在"gioSetBit"函数后设置断点。

    例如、对于 N2HET25、如下所示:

    在 gioSetBit 函数之后设置断点后、现在调试并验证 ERROR_COUNT 是否会递增。 它不应增加。

    我怀疑这些引脚之间有双向缓冲器。

    这些缓冲区具有一定的传播延迟、因此、如果我们使用 gioSetBit 函数更改输出值、它将不会立即反射到输入引脚、这需要一些时间。 因此、只需设置我提到的断点并进行验证即可。

    另外、我想建议您做另外一个修改、  

    当您在 H4上使用 N2HET1[21]、 在 J4上使用 N2HET1[23]、在  M3上使用 N2HET1[25]时对吗? 则不要启用器件上的引脚功能、  

    V5、J3和 G19

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!
    感谢您的及时回复。
    我很高兴看到您着手解决这个问题、因为您过去帮助我解决了3137个难题。

    我已按照您的建议添加了断点。
    添加断点没有更改行为、因此我想这不是计时问题。

    出于种种怀疑、我在 HALCoGen PINMUX 屏幕中取消选择了 NHET 引脚、令我吃惊的是这些引脚变成输入!
    测试程序现在运行时、输入读数与附加的输出相同并且 ERROR_COUNT = 0!
    请参阅以下屏幕截图:

    1.为什么这样做?
    2.这是建议的解决办法吗?
    3.在启用和使用其他引脚功能模块(例如 MIBSPI1和 MIBSPI3)时、我是否应该期望此功能可以正常工作?

    非常感谢!
    -乔

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

    您好、Joe!

    1. 为什么这起作用?
    2.这是建议的修复吗?[/报价]

    是的、这是正确的。

    原因如下:

    在控制器中、有几个功能将位于多个引脚上、例如

    你可以看到 N2HET1[21]在 H4或 J3上可用,N2HET1[23]在 J4或 G19上可用,N2HET1[25]在 M3或 V5上也可用。

    在这里、H4、J4和 M3引脚被称为专用焊盘功能引脚、因为这些引脚只有一个功能。 而 J3、G19和 V5引脚则被称为多路复用功能引脚、因为这些引脚具有多个可用的功能。

    默认情况下、输入将来自专用功能引脚。 例如,如果我没有使用 HALCoGen 在 J3上启用 N2HET1[21]功能,那么 N2HET1[21]功能将从 H4中获得。 不过、在这种情况下、如果您在多路复用输入上启用 N2HET1[21]功能、则输入来自多路复用引脚、而不是专用引脚。 其他两个引脚也同样适用。

    如果您考虑您的案例、之前您在多路复用引脚上启用了 N2HET1功能、但您期望从专用焊盘读取输入、这就是您没有获得输入的原因。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    感谢您的详细说明、这是很合理的。

    此致!

    -乔