AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 424201
Accepted
cajjed
cajjed
Asked: 2018-02-15 11:09:05 +0800 CST2018-02-15 11:09:05 +0800 CST 2018-02-15 11:09:05 +0800 CST

想要在 gpio 引脚上下拉

  • 772

我希望某些输入引脚的默认值为弱下拉。我正在使用运行 Debian 4.12.8 的 sama5d36。我修改了dts文件如下:

ahb {
    abp {
        pinctrl@fffff200 {
            board {
                pinctrl_inputs: input_pins {
                    atmel,pins = 
                        <AT91_PIOC 26 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                        <AT91_PIOC 27 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                        <AT91_PIOA 30 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                        <AT91_PIOA 31 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>;
                };
            };
        };
    };
};

myInputs {
    compatible = "atmel,at91sam9x5-pinctrl", "atmel,at91rm9200-pinctrl";
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_inputs>;
};

只是想补充一点,我确实在 /sys/kernel/debug/pinctrl/ahb:apb:pinctrl@fffff200/pinconf-pins 中看到了 PULL_DOWN:

pin 30 (pioA30): PULL_DOWN|DRIVE_STRENGTH_MED
pin 31 (pioA31): PULL_DOWN|DRIVE_STRENGTH_MED
pin 90 (pioC26): PULL_DOWN|DRIVE_STRENGTH_MED
pin 91 (pioC27): PULL_DOWN|DRIVE_STRENGTH_MED

但 /sys/class/gpio/pioA30 仍显示值为 1:

direction -> in
active_low -> 0
value -> 1

其他引脚(PioA31、pioC26、pioC27)相同。我不需要此引脚处于低电平有效状态,我只是添加了它以表明输入为高电平而没有任何连接,这是我用示波器验证的。

更新:我添加了以下引脚,它们确实有效:

                    <AT91_PIOD 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                    <AT91_PIOD 7 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>;

这让我更加困惑。我检查了 /sys/kernel/debug/pinctrl/ahb:apb:pinctrl@fffff200/pinmux-pins 并且所有引脚显示如下:

pin 102 (pioD6): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 103 (pioD7): (MUX UNCLAIMED) (GPIO UNCLAIMED)

有没有人经历过类似的事情?

kernel device-tree
  • 1 1 个回答
  • 760 Views

1 个回答

  • Voted
  1. Best Answer
    cajjed
    2018-03-03T11:03:22+08:002018-03-03T11:03:22+08:00

    在设备树 (dts) 中设置节点需要兼容的节点,例如 gpio-keys 或 gpio-leds。你不能像我试图做的那样仅仅组成一个节点。因为我需要的行是 SPI BLE 的一部分,所以我将它添加到我的 spi1 节点,如下所示:

            spi1: spi@f8008000 {
                cs-gpios = <0>, <0>, <0>, <0>;
                pinctrl-0 = <&pinctrl_spi1 &pinctrl_ble_irq>;
                dmas = <0>, <0>;
                status = "okay";
                spidev@0 {
                    compatible = "semtech,sx1301";
                    spi-max-frequency = <10000000>;
                    reg = <0>;
                };
            };
    
            pinctrl@fffff200 {
                board {
                    pinctrl_ble_irq: ble_irq {
                        atmel,pins =
                            <AT91_PIOB 14 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOB 20 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOB 22 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOB 26 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOC 17 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOD 6 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOD 15 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOE 16 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOE 23 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOE 31 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>,
                            <AT91_PIOD 8 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_DOWN>;
                    };
                };
            };
    

    我仍然不知道为什么其他引脚不会拉下,但至少现在我的启动没有出错。我必须在内核中打开 earlyprintk 才能看到消息。

    更新:终于能够下拉工作。几个引脚在硬件中被拉起,因此下拉无效。几个引脚被设置为 LED 或由我禁用的其他外围设备使用。上例中的所有引脚都成功下拉。

    • 0

相关问题

  • /proc/net/wireless 如何是 /proc/net/dev 的“克隆”?

  • Linux Mint 内核损坏

  • Linux 内核开发人员如何处理数百万行代码的工作?他们是一种方法吗?[关闭]

  • 通过标签将根文件系统传递给linux内核

  • 以 root 用户身份访问文件系统

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve