Если это не указано в таблице данных, вам, вероятно, придется измерить его, чтобы быть уверенным. Linux не «знает» о GPIO, поэтому она не изменит их во время загрузки (если вы не сделали загрузочный скрипт, который это сделал), но всегда есть вероятность, что ROM сможет.
@DustyWilson: Извините, если мне неясно, я имел в виду, что ядро Linux не использует GPIO во время загрузки. Это делает их доступными только для пользователей и конкретных драйверов. Поэтому стандартное ядро не должно изменять состояние выводов GPIO во время загрузки.
Malvineous
@ Malvineous: Ах, Гоча.
Эммали Уилсон
Ответы:
11
Я нашел ответ здесь благодаря russellstrong . Я цитирую соответствующую часть ниже
Я поспешил к выводам о моих нагрузочных резисторах / чувствительности моей цепи к понижающим резисторам. RPi не устанавливает выход GPIO при первой загрузке. Он включает понижающий резистор на 740 миллисекунд.
Я использовал два 18К резистора (3v3 -> GPIO -> GND), чтобы точно посмотреть, что происходит с выводами. Вот след. Синяя линия - мощность 3 на 3, желтая линия - линия GPIO.
Вы можете немного уточнить? Когда загружается Raspberry Pi, GPIO настроен на входное состояние с высоким импедансом?
Алекс Чемберлен
1
@AlexChamberlain, похоже, что чип Broadcom запускается с опусканиями, но загрузчик очищает опускания, чтобы они были с высоким импедансом (входы)
John La Rooy
9
Когда запускается рекомендуемый дистрибутив Debian для RPi, GPIO отключается. Вы должны включить каждый штифт индивидуально.
Если вы делаете это через / sys, вы найдете «Пути в Sysfs» интересными (поиск по адресу http://www.kernel.org/doc/Documentation/gpio.txt ). В частности, вы бы активировали пин-код, «экспортировав» его. Любые команды ниже предполагают, что вы работаете с привилегиями root (sudo или иным) или вы изменили права доступа / владельца изменяемых виртуальных файлов.
echo 4 > /sys/class/gpio/export
Это активирует вывод 4 GPIO, который затем вызывает существование / sys / class / gpio / gpio4, который содержит несколько виртуальных файлов. Эти файлы включают в себя «direction», которое определяет, является ли это входной или выходной вывод, «value», которое доступно только для чтения для ввода или доступно для записи для вывода и содержит текущее значение, и другие.
echo out > /sys/class/gpio/gpio4/direction # set it as an output pin
echo 1 > /sys/class/gpio/gpio4/value # set the value to ON
echo 0 > /sys/class/gpio/gpio4/value # set the value to OFF
echo in > /sys/class/gpio/gpio4/direction # set it as input
cat /sys/class/gpio/gpio4/value # get the value
echo 4 > /sys/class/gpio/unexport # disables pin 4 and removes the gpio4 directory
Конечно, вы, вероятно, предпочтете использовать некоторую ранее существующую библиотеку для GPIO, поставляемого или совместимого с вашим языком по вашему выбору. Но если вам нужно что-то простое, вы можете просто напрямую взаимодействовать с sysfs для создания базового GPIO.
Это полезно Я посмотрел на таблицу данных, но не смог найти состояние выводов по умолчанию. Это важно, если вы управляете всем с помощью выводов и не хотите, чтобы периферия включалась во время загрузки ОС.
Джон Ла Рой
3
Это отличный ответ, но я не уверен, что он действительно отвечает на вопрос. Каково состояние GPIO сразу после его включения? и направление установлено?
Алекс Чемберлен
@gnibbler: я думаю, тебе просто нужно проверить это. Я попробовал это сам немного назад, и я не увидел ничего неожиданного в том, что что-то включалось или выключалось. Я не знаю и не обещаю, что мой опыт ожидаемый. Я бы сказал, что вы должны просто вставить мультиметр или что-то подобное в контакты, которые вы хотите проверить, а затем перезагрузить или выключить и снова включить и выключить Pi несколько раз. То, что я увидел, было то, что все контакты были отключены, как будто Пи не было никакой силы, пока я сам не включил каждый контакт.
Эммали Уилсон
@DustyWilson, возможно, они настроены как входы без подтягиваний или опусканий. Это означает, что они эффективно плавают, если подключены к полевому транзистору, и могут привести к случайному поведению, если в затвор не будет добавлен резистор повышающего / понижающего напряжения
Джон Ла Рой
действительно ... cat /sys/class/gpio/gpio4/directionговорит "в". Я прочитал в таблице данных, что невозможно прочитать состояние подтягиваний / раскрытий. Я постараюсь измерить их
Ответы:
Я нашел ответ здесь благодаря russellstrong . Я цитирую соответствующую часть ниже
источник
Когда запускается рекомендуемый дистрибутив Debian для RPi, GPIO отключается. Вы должны включить каждый штифт индивидуально.
Если вы делаете это через / sys, вы найдете «Пути в Sysfs» интересными (поиск по адресу http://www.kernel.org/doc/Documentation/gpio.txt ). В частности, вы бы активировали пин-код, «экспортировав» его. Любые команды ниже предполагают, что вы работаете с привилегиями root (sudo или иным) или вы изменили права доступа / владельца изменяемых виртуальных файлов.
Это активирует вывод 4 GPIO, который затем вызывает существование / sys / class / gpio / gpio4, который содержит несколько виртуальных файлов. Эти файлы включают в себя «direction», которое определяет, является ли это входной или выходной вывод, «value», которое доступно только для чтения для ввода или доступно для записи для вывода и содержит текущее значение, и другие.
Конечно, вы, вероятно, предпочтете использовать некоторую ранее существующую библиотеку для GPIO, поставляемого или совместимого с вашим языком по вашему выбору. Но если вам нужно что-то простое, вы можете просто напрямую взаимодействовать с sysfs для создания базового GPIO.
источник
cat /sys/class/gpio/gpio4/direction
говорит "в". Я прочитал в таблице данных, что невозможно прочитать состояние подтягиваний / раскрытий. Я постараюсь измерить их