Wbincludes:Peripherals: различия между версиями

Материал из Wiren Board
 
(не показано 7 промежуточных версий 3 участников)
Строка 1: Строка 1:
<noinclude>{{Warning Editing Inсlude}}</noinclude>
<translate>
<!--T:1-->
<h2> Введение  </h2>
<h2> Введение  </h2>
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров Wiren Board.  
Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров Wiren Board.  


Самый простой и удобный способ работы с железом контроллера - через [[MQTT]], связываясь с сервисами wb: wb-mqtt-gpio, wb-mqtt-adc, wb-mqtt-gpio и т.п. Сервисы wb- позволяют работать с железом через унифицированный интерфейс [[MQTT]] и скрывают аппаратные различия между [[Controller_hardware_revisions|аппаратными ревизиями]] контроллеров.
<!--T:2-->
Самый простой и удобный способ работы с железом контроллера через [[MQTT]], связываясь с сервисами wb: wb-mqtt-gpio, wb-mqtt-adc, wb-mqtt-gpio и т.п. Сервисы wb- позволяют работать с железом через унифицированный интерфейс [[MQTT]] и скрывают аппаратные различия между [[Controller_hardware_revisions|аппаратными ревизиями]] контроллеров.


Работать в обход стандартных сервисов wb- обычно используется, когда программное обеспечение выполняется на разных Linux-контроллерах разных вендоров, и работа через соответсвующие интерфейсы ядра уже реализована в ПО. Данная статья содержит описание периферии, нужное для работы с ней через стандартные интерфейсы ядра. При работе с ядерными интерфейсами не забудьте отключить соответствующий сервис wb-.
<!--T:3-->
Работа в обход стандартных сервисов wb- обычно используется, когда программное обеспечение выполняется на разных Linux-контроллерах разных вендоров, и работа через соответсвующие интерфейсы ядра уже реализована в ПО. Данная статья содержит описание периферии, нужное для работы с ней через стандартные интерфейсы ядра. При работе с ядерными интерфейсами не забудьте отключить соответствующий сервис wb-.


<!--T:4-->
Большая часть периферии, описанной в этой статье, описана также в ноде /wirenboard в Devicee Tree контроллера. Сервисы wb-mqtt-gpio, wb-mqtt-adc и т.д. [https://github.com/wirenboard/wb-mqtt-gpio/blob/master/generate-system-config.sh берут] описание периферии именно оттуда, считывая описание каждый раз при старте контроллера. Этот способ является предпочтительным и для стороннего ПО, чтобы сохранить совместимость с прошлыми и будущими [[Controller_hardware_revisions|аппаратными ревизиями]] оборудования.
Большая часть периферии, описанной в этой статье, описана также в ноде /wirenboard в Devicee Tree контроллера. Сервисы wb-mqtt-gpio, wb-mqtt-adc и т.д. [https://github.com/wirenboard/wb-mqtt-gpio/blob/master/generate-system-config.sh берут] описание периферии именно оттуда, считывая описание каждый раз при старте контроллера. Этот способ является предпочтительным и для стороннего ПО, чтобы сохранить совместимость с прошлыми и будущими [[Controller_hardware_revisions|аппаратными ревизиями]] оборудования.


<!--T:5-->
<h2> Работа с GPIO в Linux </h2>
<h2> Работа с GPIO в Linux </h2>
'''GPIO ''' (''General-purpose input/output — ввод/вывод общего назначения'') — контакт электрической схемы, который может принимать одно из двух логических состояний — единицу или ноль. Пользователь может устанавливать и считывать состояние GPIO.
'''GPIO ''' (''General-purpose input/output — ввод/вывод общего назначения'') — контакт электрической схемы, который может принимать одно из двух логических состояний — единицу или ноль. Пользователь может устанавливать и считывать состояние GPIO.


<!--T:6-->
В разных устройствах высокий логический уровень может представляться разным напряжением — следите за этим. В контроллерах Wiren Board логическая единица — это 3.3 В.  
В разных устройствах высокий логический уровень может представляться разным напряжением — следите за этим. В контроллерах Wiren Board логическая единица — это 3.3 В.  


<!--T:7-->
'''ВНИМАНИЕ:''' не подключайте напрямую к GPIO контроллера сигналы с напряжением больше 3.3 В! Если нужно подключить устройство, которое выдает сигнал с более высоким напряжением — используйте схемы согласования. В некоторых случаях, если напряжение сигнала не больше 5 В, то можно согласовать сигналы через резистор на 20 кОм.
'''ВНИМАНИЕ:''' не подключайте напрямую к GPIO контроллера сигналы с напряжением больше 3.3 В! Если нужно подключить устройство, которое выдает сигнал с более высоким напряжением — используйте схемы согласования. В некоторых случаях, если напряжение сигнала не больше 5 В, то можно согласовать сигналы через резистор на 20 кОм.


О работе с GPIO в Linux читайте в [https://www.kernel.org/doc/Documentation/gpio/sysfs.txt документации к ядру]. Также можно почитать устаревшую инструкцию в нашей Wiki — [[Работа с GPIO|Работа с GPIO]].
<!--T:8-->
Подробно про работу с GPIO читайте в статье [[Работа с GPIO|Работа с GPIO]]. Также рекомендуем прочитать соответствующий раздел [https://www.kernel.org/doc/Documentation/gpio/sysfs.txt документации к ядру Linux].


Для других версий контроллера смотрите [[GPIO | Таблицы GPIO разных версий контроллера]]
<!--T:9-->
Для других версий контроллера смотрите [[GPIO | Таблицы GPIO разных версий контроллера]].
 
При работе с GPIO рекомендуем использовать адресацию по меткам, так как номера могут отличаться в разных версиях контроллера.
 
<!--T:10-->
Посмотреть метки GPIO можно командой <code>cat /sys/kernel/debug/gpio</code>, или в разделе ниже.
</translate>

Текущая версия на 16:28, 3 ноября 2023

Введение

Эта статья предназначена, в первую очередь, для разработчиков стороннего ПО для контроллеров Wiren Board.

Самый простой и удобный способ работы с железом контроллера — через MQTT, связываясь с сервисами wb: wb-mqtt-gpio, wb-mqtt-adc, wb-mqtt-gpio и т.п. Сервисы wb- позволяют работать с железом через унифицированный интерфейс MQTT и скрывают аппаратные различия между аппаратными ревизиями контроллеров.

Работа в обход стандартных сервисов wb- обычно используется, когда программное обеспечение выполняется на разных Linux-контроллерах разных вендоров, и работа через соответсвующие интерфейсы ядра уже реализована в ПО. Данная статья содержит описание периферии, нужное для работы с ней через стандартные интерфейсы ядра. При работе с ядерными интерфейсами не забудьте отключить соответствующий сервис wb-.

Большая часть периферии, описанной в этой статье, описана также в ноде /wirenboard в Devicee Tree контроллера. Сервисы wb-mqtt-gpio, wb-mqtt-adc и т.д. берут описание периферии именно оттуда, считывая описание каждый раз при старте контроллера. Этот способ является предпочтительным и для стороннего ПО, чтобы сохранить совместимость с прошлыми и будущими аппаратными ревизиями оборудования.

Работа с GPIO в Linux

GPIO (General-purpose input/output — ввод/вывод общего назначения) — контакт электрической схемы, который может принимать одно из двух логических состояний — единицу или ноль. Пользователь может устанавливать и считывать состояние GPIO.

В разных устройствах высокий логический уровень может представляться разным напряжением — следите за этим. В контроллерах Wiren Board логическая единица — это 3.3 В.

ВНИМАНИЕ: не подключайте напрямую к GPIO контроллера сигналы с напряжением больше 3.3 В! Если нужно подключить устройство, которое выдает сигнал с более высоким напряжением — используйте схемы согласования. В некоторых случаях, если напряжение сигнала не больше 5 В, то можно согласовать сигналы через резистор на 20 кОм.

Подробно про работу с GPIO читайте в статье Работа с GPIO. Также рекомендуем прочитать соответствующий раздел документации к ядру Linux.

Для других версий контроллера смотрите Таблицы GPIO разных версий контроллера.

При работе с GPIO рекомендуем использовать адресацию по меткам, так как номера могут отличаться в разных версиях контроллера.

Посмотреть метки GPIO можно командой cat /sys/kernel/debug/gpio, или в разделе ниже.