7840
правок
Fizikdaos (обсуждение | вклад) |
Fizikdaos (обсуждение | вклад) (Подготовка страницы к переводу) |
||
Строка 1: | Строка 1: | ||
<languages/> | |||
<translate> | |||
В Wiren Board часть GPIO выведена на клеммники, часть выведена на разъёмы UEXT, часть используется для служебных целей. | В Wiren Board часть GPIO выведена на клеммники, часть выведена на разъёмы UEXT, часть используется для служебных целей. | ||
GPIO также используются для управления транзисторами для коммутации низковольтной нагрузки. | GPIO также используются для управления транзисторами для коммутации низковольтной нагрузки. | ||
Соответствие между номерами GPIO в Linux и их местоположением и функцией можно найти в табличке [[WB SH 3.5: Список GPIO]] или [[WB rev. 2.8: Список GPIO]]. | Соответствие между номерами GPIO в Linux и их местоположением и функцией можно найти в табличке [[WB SH 3.5: Список GPIO|WB SH 3.5: Список GPIO]] или [[WB rev. 2.8: Список GPIO|WB rev. 2.8: Список GPIO]]. | ||
В Wiren Board rev. 2.8 8 GPIO на специальном разъёме подключены через [[MCP23S08]] и временно не работают со стандартным Linux API. Описание работы с ними есть на странице [[MCP23S08]]. | В Wiren Board rev. 2.8 8 GPIO на специальном разъёме подключены через [[Special:MyLanguage/MCP23S08|MCP23S08]] и временно не работают со стандартным Linux API. Описание работы с ними есть на странице [[Special:MyLanguage/MCP23S08|MCP23S08]]. | ||
<b> Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы согласования или подключать (для 5V) через резистор в 20 кОм и более </b> | <b> Все GPIO (как и остальные порты Wiren Board) работают с напряжением 3.3V. Ни в коем случае не подключайте к GPIO напрямую сигналы, напряжением больше 3.3V! В случае необходимости подключения устройств, работающих с более высоким напряжением, необходимо использовать схемы согласования или подключать (для 5V) через резистор в 20 кОм и более </b> | ||
На некоторых GPIO (в частности на 3х GPIO, выведенных на клеммники в Wiren Board rev. 2.8) можно программно установить 47к подтяжку к +3.3В. См. [[Pin_pull-up]]. | На некоторых GPIO (в частности на 3х GPIO, выведенных на клеммники в Wiren Board rev. 2.8) можно программно установить 47к подтяжку к +3.3В. См. [[Special:MyLanguage/Pin_pull-up|Pin_pull-up]]. | ||
===Интерфейс sysfs в Linux === | ===Интерфейс sysfs в Linux === | ||
GPIO в Linux поддерживаются через sysfs-интерфейс. | GPIO в Linux поддерживаются через sysfs-интерфейс. | ||
Строка 72: | Строка 76: | ||
echo 1 > /sys/class/gpio/gpioN/value # установим логический 1 (высокое напряжение) на GPIO номер N | echo 1 > /sys/class/gpio/gpioN/value # установим логический 1 (высокое напряжение) на GPIO номер N | ||
</pre> | </pre> | ||
====Интерфейс sysfs и прерывания==== | ====Интерфейс sysfs и прерывания==== | ||
Через интерфейс sysfs можно запросить прерывания по изменению состояния процессора. | Через интерфейс sysfs можно запросить прерывания по изменению состояния процессора. | ||
Строка 106: | Строка 112: | ||
См. также [http://elinux.org/GPIO elinux.org] | См. также [http://elinux.org/GPIO elinux.org] | ||
===Прямое обращение через память процессора=== | ===Прямое обращение через память процессора=== | ||
<b>Этот метод настоятельно НЕ РЕКОМЕНДУЕТСЯ для использования без достаточных оснований. Для работы из С/C++ стоит использовать работу через файлы в sysfs, как описано в предыдущем разделе</b>. | <b>Этот метод настоятельно НЕ РЕКОМЕНДУЕТСЯ для использования без достаточных оснований. Для работы из С/C++ стоит использовать работу через файлы в sysfs, как описано в предыдущем разделе</b>. | ||
Строка 115: | Строка 123: | ||
См. [http://olimex.wordpress.com/2012/09/11/imx233-olinuxino-gpios-faster-and-faster/] , [https://github.com/OLIMEX/OLINUXINO/blob/master/SOFTWARE/iMX233/gpio-mmap.h] | См. [http://olimex.wordpress.com/2012/09/11/imx233-olinuxino-gpios-faster-and-faster/] , [https://github.com/OLIMEX/OLINUXINO/blob/master/SOFTWARE/iMX233/gpio-mmap.h] | ||
===GPIO и Device Tree=== | ===GPIO и Device Tree=== | ||
Указывать GPIO в Device Tree необходимо для настройки GPIO для работы в режиме программного SPI, I2C, для использования GPIO в качестве источника прерываний и т.д. | Указывать GPIO в Device Tree необходимо для настройки GPIO для работы в режиме программного SPI, I2C, для использования GPIO в качестве источника прерываний и т.д. | ||
Так например на пин 10@UEXT1 (CS) и пины 5@UEXT2 (SCL), 6@UEXT2 (SDA), 10@UEXT2 (CS) выведены линии GPIO процессора. Их можно сконфигурировать для использования например в качестве chip-select для SPI или в качестве I2C. | Так например на пин 10@UEXT1 (CS) и пины 5@UEXT2 (SCL), 6@UEXT2 (SDA), 10@UEXT2 (CS) выведены линии GPIO процессора. Их можно сконфигурировать для использования например в качестве chip-select для SPI или в качестве I2C. | ||
GPIO процессора и периферийных устройств разбиты на банки (gpiochip). GPIO процессора разбиты на 3 банка по 32 GPIO: gpio0, gpio1, gpio2. Адресация GPIO в Device Tree происходит по номеру банка и номеру GPIO *внутри* банка. | GPIO процессора и периферийных устройств разбиты на банки (gpiochip). GPIO процессора разбиты на 3 банка по 32 GPIO: gpio0, gpio1, gpio2. Адресация GPIO в Device Tree происходит по номеру банка и номеру GPIO *внутри* банка. | ||
====Пример 1==== | ====Пример 1==== | ||
Определим сигнал 6@UEXT2 (SDA) в качестве источника прерываний для драйвера mrf24j40. Согласно таблице [[Список GPIO]], сигнал соответствует GPIO 53 процессора. 53 принадлежит второму банку gpio (от 32 до 63). Номер GPIO внутри банка 53-32=21 : | |||
Определим сигнал 6@UEXT2 (SDA) в качестве источника прерываний для драйвера mrf24j40. Согласно таблице [[Special:MyLanguage/Список GPIO|Список GPIO]], сигнал соответствует GPIO 53 процессора. 53 принадлежит второму банку gpio (от 32 до 63). Номер GPIO внутри банка 53-32=21 : | |||
<pre> | <pre> | ||
Строка 134: | Строка 146: | ||
}; | }; | ||
</pre> | </pre> | ||
</translate> |