Предположим вам досталась схема, в которой ленивый разработчик не указан номера GPIO. Вопрос, как определить его номер?

Ситуация может быть следующей, нумерация ножек на чипе может выглядеть например так:
126

При чтении даташита можно определить, что нужная нам ножка, допустим R9, имеет номер, например GPIO5_1. В linux обычно ноги нумеруются подряд, т.е. gpio1, gpio2 и т.д. Как же связать эти номера? Логика довольно простая, ножки разбиты по группам, ровно как порты в микроконтроллерах, т.е. что вы его назовете GPIOA, что GPIO1, разницы в общем то никакой, важен базовый адрес.

Далее если запустить такой скрипт, то можно зачекать базовые адреса имеющихся gpio контроллеров

for f in `ls -d /sys/class/gpio/gpiochip*`; do echo $f `cat $f/label $f/base $f/ngpio` ; done

imx6_gpios

Зная адреса их можно соотнести с даташитом. Gpiochip это базовый адрес, т.е. первая ножка порта, обычно в порту 32 ноги. Если внимательно посмотреть номера базовых адресов, то не сложно выявить закономерность: т.е. GPIO1_0 это самая первая нога, т.е. gpio0, от нее пойдут 32 ноги, т.е. GPIO1_1 = gpio2, GPIO1_2 = gpio3 и т.д. GPIO2_1 начнет нумерацию с gpio32. Т.е. итоговая формула (32*(порт-1))+номер ноги = нужный нам gpio в операционной системе. Вернувшись к искомому GPIO5_1 = gpio129.

Также особо хочется отметить, что этот скрипт полезен для определения базового адреса расширителей портов. На примере выше в поддержку драйверов включен I2C расширитель портов tca6424, т.е. первая нога будет gpio488 и от нее последуют следующие 24 ножки.

Надеюсь эта короткая заметка поможет вам быстро сориентироваться с номерами ног и не путаться.

2 комментария: Нумерация GPIO в Linux

  • Доброго времени суток.

    Неисправный блок установлен в щите управления, при включении автомата дисплей запускается кратковременно примерно на пару секунд, затем загорается светодиод HL03 и появляется на дисплее ошибка Ground Fault Error и спустя 2-3 мин. дисплей гаснет и не включается пока не выключишь сеть и опять не включишь. На плате нашел сгоревшее место, судя по даташиту микросхема памяти. Возможно ли просто перепаять микросхему или ее нужно еще запрограммировать?
    Вот фото платы — http://imgur.com/0o6pM5M .
    Даташит на микросхему — http://prom-electric.ru/media/MT48LC4M16A2.pdf .
    Заранее спасибо за любую информацию.

  • Это оперативка, можете попробовать ее поменять, перепрограммировать ее не нужно. Там на плате видно, что погорела не только она, так что никаких гарантий что не где нибудь по схеме еще что то не сгорело.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Последние комментарии
  • Загрузка...
Счетчик
Яндекс.Метрика