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.

am335x 中 mux.c文件修改



在mux.c的头文件中有定义:

#define RXACTIVE (0x1 << 5)

#define PULLDOWN_EN (0x0 << 4) /* Pull Down Selection */

#define PULLUP_EN (0x1 << 4) /* Pull Up Selection */

#define PULLUDEN (0x0 << 3) /* Pull up enabled */

#define PULLUDDIS (0x1 << 3) /* Pull up disabled */

在mux.c文件中,

输入为

{OFFSET(spi0_cs1), (MODE(7) | RXACTIVE | PULLUP_EN)}, /* GPIO0_6 */

输出为:

{OFFSET(ecap0_in_pwm0_out), (MODE(7) | PULLUDEN)}, /* GPIO0_7 */

这让我有些疑惑,

1、输出为什么仅仅设置为PULL up enable就可以了?

2、输出是否需要设置Pull up enable?

  • 请问具体是配置的哪个接口?使用的引脚是哪些?
  • 比方说将D15、D16、D18模式选择为gpio,输出到LED上,按照上面的输出仅仅设置为PULL  enable。代码为

    {OFFSET(uart1_rxd), (MODE(7) | PULLUDEN)}, /* gpio_out led*/

    {OFFSET(uart1_txd), (MODE(7) | PULLUDEN)},/* gpio_out led */

    {OFFSET(uart1_ctsn), (MODE(7) | PULLUDEN)},/* gpio_out led*/

    而对于输入,比方说UART0_RXD,使用RXD模式,他的设置为里面就没有 PULLUDEN,直接设置为  MODE(0) RXACTIVE  PULLUP_EN

  • 请看TRM 9.2.2.2 Pull Selection 中推荐的配置。
    www.ti.com/.../spruh73q.pdf
    另外需要修正一下代码的注释为:
    #define PULLUDEN (0x0 << 3) /* Pull up enabled */ => /* pull up/down enable */
    #define PULLUDDIS (0x1 << 3) /* Pull up disabled */ => /* pull up/down disable */
  • 你好,对于TRM 9.2.2.2 Pull Selection 的内容我有些疑惑。

    按照TRM 9.2.2.2 Pull Selection 的说法. If a pad is always configured in output mode, it is recommended for user software to disable any internal pull resistor tied to it, to avoid unnecessary consumption.输出模式应该禁用内部的上下拉电阻,这是如何设置?这是指PULLUDENABLE为1的情况吗?

    另外TRM 9.2.2.2 Pull Selection 对于输入的解释也比较模糊。.

    你能否帮我判断一下我前面对于输出GPIO012、14、15的设置是否正确。以及输入UART0_RXD配置是否正确?

  • 1.是的
    2.上面的GPIO有外部上拉,内部就可以不使能上拉。
    串口的配置建议就按照代码里的推荐配置。
    一般当输入buffer连接到不确定的终端时推荐使能内部的上下拉电阻来保持在一个确定的状态。