Quer o pulldown no pino gpio

1

Eu gostaria que o padrão para determinados pinos de entrada fosse um pulldown fraco. Eu estou usando um sama5d36 executando o Debian 4.12.8. Eu modifiquei o arquivo dts da seguinte forma:

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>;
};

Só queria adicionar que eu vejo PULL_DOWN em / sys / kernel / depuração / pinctrl / ahb: apb: pinctrl @ fffff200 / pinconf-pins:

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

mas / sys / class / gpio / pioA30 ainda mostra um valor de 1:

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

O mesmo para os outros pinos (PioA31, pioC26, pioC27). Eu não preciso desse pino para ser ativo. Acabei de adicionar isso para mostrar que a entrada é alta sem nada conectado, algo que eu verifiquei com um escopo.

Atualização: adicionei os seguintes pinos e eles realmente funcionam:

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

que me confunde ainda mais. Eu verifiquei / sys / kernel / depuração / pinctrl / ahb: apb: pinctor @ fffff200 / pinmux-pins e todos os pinos mostram da seguinte forma:

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

Alguém experimentou algo semelhante?

    
por cajjed 14.02.2018 / 20:09

1 resposta

0

A configuração de um nó na árvore de dispositivos (dts) requer um nó compatível, como gpio-keys ou gpio-leds. Você não pode simplesmente criar um nó como eu estava tentando fazer. já que a linha que eu preciso é parte do SPI BLE, eu a adicionei ao meu nó spi1 da seguinte forma:

        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>;
                };
            };
        };

Eu ainda não sei por que os outros pinos não serão puxados para baixo, mas pelo menos agora eu não estou recebendo um erro na minha inicialização. Eu tive que ligar o earlyprintk no kernel para ver a mensagem.

Atualização: finalmente conseguiu fazer o pulldown funcionar. Vários pinos foram puxados em hardware e, portanto, a ineficácia do suspenso. Vários pinos foram definidos como LED ou usados por outros periféricos que eu desativei. Todos os pinos no exemplo acima foram desativados com sucesso.

    
por 02.03.2018 / 20:03