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.

[参考译文] AM3351:输出上拉/下拉电阻器

Guru**** 2918250 points

Other Parts Discussed in Thread: AM3351

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/664849/am3351-output-pullup-pulldown-resistor

器件型号:AM3351

我们使用的是基于 AM3351的定制板。

在 AM335x 引脚多路复用配置中、我们可以看到输出上拉选项。

输出上拉的作用是什么。 在什么情况下需要启用输出上拉? 在什么情况下不应启用输出上拉。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    引脚配置为输入时、通常使用焊盘上拉/下拉电阻器。 您在哪里看到了"输出上拉"?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉、我忘记了在 Linux 代码中看到这一点

    它实际上在中提供

    include/dt 绑定/pinctrl/omap.h 

    它用于 AM335x-EVM.dts 和 AM335x-bonebblack.dts。 BoneBlack DTS 使用 PIN_OUTPUT 上拉和 PIN_OUTPUT 下拉。

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

    首先确保 omap.h PIN_OUTPLUP 值不会被 am33xx.h PIN_OUTPLUP 值覆盖、其中仅设置了上拉:

    linux-kernel/include/dt-bindings/pinctrl/omap.h #define PIN_OUTPUT 上拉(PIN_OUTPUT | PULL_ENA | PULL_UP)
    linux-kernel/include/dt-bindings/pinctrl/am33xx.h #define PIN_OUTPUT 上拉(上拉)

    有关方案使用情况、请参阅以下指针:

    processors.wiki.ti.com/index.php
    Linux-kernel/Documentation/devicetree/bindings/soc/ti/wkup_m3_ipc.txt

    e2e.ti.com/.../1575375

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

    感谢您的回复 Pavel、

    我检查了 DTS 和 dtsi 文件,似乎 dt-bindings/pinctrl/am33xx.h 包含在我们的 DTS 文件中,但是 am335x.h 包括 omap.h,所以不确定谁会替换什么? 我假设 omap.h 中的定义被 am335x.h 覆盖

    因此,如果在我使用 PIN_OUTPUT 上拉时,它只选择上拉,但不会输出引脚? 甚至无法启用上拉? 或默认情况下,PIN 状态为输出? 因为 PIN_OUTPUT 也仅禁用上拉。

    我仔细研究了您提供的要点、我认为我理解、但为了清楚说明这一点、我将在此写下我的理解。

    因此、当从深度睡眠状态返回后、除非通过将引脚驱动为低电平将输出上拉电阻拉至低电平、否则输出上拉电阻会有所帮助。

    我的理解是否正确? 我是否遗漏了什么?

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

    这取决于您使用的特定引脚、因为不同的引脚具有不同的默认状态。 我建议您使用 devmem2/omapconf 工具从用户空间检查/读取 pinmux 寄存器值、只是您可以确定最终值是多少。

    此致、
    帕维尔

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

    感谢您的回复 Pavel、

    我们有 ZCE 类型 AM3351。

    我具有以下 devicetree 配置

    RESET_eMMC:RESET_eMMC{
    pinctrl-single、Pins =<
    0x07C (PIN_OUTPUT PLUP | MUX_MODE7)/* GPMC_Ccsn0.GPIO1_29、BGA W8 (ZCE) RST_eMMC *
    />;
    };
    
    
    RESET_EMMC{
    pinctr-names ="gpinctrl_gp&names";
    
    
    
    
    
    默认值
    
    ="gpMC_gpMC_gp_gp"gp"gpMC_remote";默认值="gpMC_gpMC_gpMC";"gpMC_eLEDs ="eLEDs ="eMC";"eMC_remote"="eMC";"
    

    当我读取 pinmux 寄存器时、我看到以下值

    # devmem2 0x44e1007c
    /dev/mem 已打开。
    映射到地址 bb6f64000的内存。
    地址0x44E1007C (0xb6f6407c)的值:0x0 

    现在我不知道为什么第4位为0。 第4位 TRM 显示"0:选择下拉"。

    我看到引脚在 sysfs 中处于高电平、我不知道为什么选择下拉电阻器。

    GPIO_DATAOUT 寄存器还读取以下值

    # devmem2 0x4804c13c
    /dev/mem 已打开。
    映射到地址 bb6f1c000的内存。
    地址0x4804C13C (0xb6f1c13c)上的值:0x20000000 

    复位时引脚的默认状态为、即 带有有源上拉电阻器的高阻抗状态。

    谢谢、

    此致、

    Ankur

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

    Ankur、

    [引用用户="Ankur Tank"] reset_eMMC:reset_eMMC{pinctrl-single、pins =< 0x07C (PIN_OUTPLUG_PULLUP | MUX_MODE7)/* GPMC_csn0.GPIO1_29、BGA W8 (ZCE) RST_eMMC */>;};[/引用]

    这是什么? 您在哪里找到了这样的引脚多路复用格式?

    在 AM335x TI PSDK 4.02 (内核4.9.59)中、我们使用了以下引脚多路复用格式:

    Linux-4.9.59/arch/arm/boot/dts/AM335x-evm.dts

    am33xx_pinmux{(am33xx_pinmux)}
       pinctrl-names ="default";
       pinctrl-0 =<&matrix 键盘_s0 &volume_keys_s0 &clkout2_pin>;

       Matrial_keypad_s0:Matrial_keypad_s0{
          pinctrl-single、pins =<
             AM33XX_IOPAD (0x854、PIN_OUTPUT 下拉| MUX_MODE7)   /* GPMC_A5.GPIO1_21 *
               。

    >;
       };

    DaVinci_MDIO_DEFAULT:DaVinci_MDIO_DEFAULT{
          pinctrl-single、pins =<
             /* MDIO */
             AM33XX_IOPAD (0x948、PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)   /* MDIO_DATA.MDIO_DATA *
             AM33XX_IOPAD (0x94c、PIN_OUTPUT 上拉| MUX_MODE0)         /* MDIO_clk.MDIO_clk *
          >;
       };

     

    另一个示例是 AM335x Starterkit DTS 文件:

    linux-4.9.59/arch/arm/boot/dts/am335x-evmsk.dts

    wl12xx_gpio:pinmux_wl12xx_gpio{
          pinctrl-single、pins =<
             AM33XX_IOPAD (0x87c、PIN_OUTPUT 上拉| MUX_MODE7)/* GPMC_csn0.GPIO1_29 *
          >;
       };

     

    此致、
    帕维尔

     

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

    Pavel、

    我发布的器件树代码段来自我们拥有的定制板、

    该 pinmux 节点位于 &am33xx_pinmux  节点下、实际 的 RESET_EMMC 节点位于(根)节点下。

    我正在尝试配置 eMMC 重置行、为了创建该节点、我引用了 EVM DTS 文件。

    这就是出现有关 output_pullup 问题的地方。

    谢谢、

    此致、

    Ankur

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

    您好、Pavel、

    我将复位 eMMC 引脚配置更改为如下

    RESET_eMMC:RESET_eMMC{
    pinctrl-single、pins =<
    0x07C (PIN_OUTPUT | MUX_MODE7)/* GPMC_csn0.GPIO1_29、BGA W8 (ZCE) RST_eMMC */
    >;
    }; 

    之前我读取了错误的 pinmux 寄存器、

    # devmem2 0x44E1087C
    /dev/mem 已打开。
    映射到地址 bb6f83000的内存。
    地址0x44E1087C (0xb6f8387c)上的值:0xF 

    现在、PINMUX 寄存器值与引脚多路复用配置相匹配。

    我转储了上拉电阻器、因为我们没有深度睡眠模式。

    您是否建议保持上拉?

    谢谢、

    此致、

    Ankur

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

    Ankur、

    [引用用户="Ankur Tank"]您是否建议保持上拉?

    如果您在该输出引脚上需要内部上拉、我建议保持上拉。

    此致、
    帕维尔