Работа с GPIO: различия между версиями

Подготовка страницы к переводу
(Подготовка страницы к переводу)
Строка 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>