Программирование GPIO: пара вопросов.
-
Здравствуй, Всезнающий All!
Столкнулся с необходимостью работы с GPIO на малинке, плюс - с организацией дополнительных (программных) последовательных интерфейсов (пока выбор пал на UART и I2C), чтобы не трогать занятые системой.
В связи с этим пара вопросов:
1.Кто какие либы использует для этих целей, и чем они понравились?
Я пока нашёл WiringPi и PiGPIO, но может есть еще что-то...2.Где-то встречал библиотеку программно реализующую и UART, и I2C, и что-то еще из последовательных интефейсов, по это было задолго до появления такой необходимости, а потому ссылку что-то найти не могу.
Нет ли у кого что подсказать по этому поводу? -
wiringPi неплохая либа для работы с GPIO, я использую её
pigpio немного сложнее, но и возможностей там больше (хотя большинству разработчиков хватит и wiringPi)
Есть ещё пайтоновская либа Rpi.GPIO - https://pypi.org/project/RPi.GPIO/Программный i2c - https://electronicayciencia.github.io/wPi_soft_i2c/
Насчёт программного UART'а в pigpio есть функция, которая открывает произвольный порт user_gpio для чтения последовательных данных (используется технология Bit-banging)
bb_serial_read_open(user_gpio, baud, bb_bits)
-
cook, спасибо за подсказки! Посмотрю.
А эти либы все к GTK прикручиваются, не знаешь?
Программный I2C - мысль хорошая, спасибо, можно навесить несколько слейвов...
С наступившими праздниками всех!
-
> Программный I2C ...
Кстати, а аппаратный I2C вроде ничем на малинке не занят? То есть, его можно (в отличие от аппаратного UART'а) использовать ни с чем не кнфликтуя?
-
> @cook#6018 Есть ещё пайтоновская либа Rpi.GPIO - ...
> Программный i2c - ...Эх, не подошли они...
Питоновская не подойдёт, потому, что питоновская, а программный I2C не подойдёт из-за того, что он - "implementation of the I2C protocol using WiringPi library", а WiringPi уже не поддерживается...А жаль...
В bcm2835 есть функции работы с аппаратным I2C, может начать с этой либы? Если конечно этот интерфейс не занят чем-то системным... Кто что скажет на этот счёт? Я только про аппаратный UART такое читал...
-
> @Paccmpura#6031 Кстати, а аппаратный I2C вроде ничем на малинке не занят? То есть, его можно (в отличие от аппаратного UART'а) использовать ни с чем не кнфликтуя?
Да
> @Paccmpura#6032 а WiringPi уже не поддерживается..
Ну и что?
> @Paccmpura#6032 В bcm2835 есть функции работы с аппаратным I2C, может начать с этой либы?
Я для i2c пользуюсь i2ctools. Т.е прям из своей программы запускаю i2cset с нужными параметрами без подключения библиотек.
Может это через жопу, но зато быстро и надёжно -
> @cook#6033 cook: а WiringPi уже не поддерживается..
> Ну и что?Да, некузяво это как-то. Вот скажем, захочу я перенести всё это хозяйство на четвёртую малинку (или на пятую) а там WiringPi работать не захочет, что тогда? Т.е., либо придется брать поддержку этой либы на себя, а мне это совсем некстати - и без неё есть чем заняться, либо перетачивать весь код, заточенный под WiringPi, под другую либу. Очень похоже на заблаговременную постановку граблей... но себе-то зачем? :о)))
> @cook#6033 cook: зато быстро и надёжно
Насчёт "быстро" - это в плане времени на программирование? Наверное, однако, врядли время реакции меня устроит. Обмен, как сейчас представляется, д.б. быстрым, иначе NACK'и могу посыпаться...
Ладно, пока почитаю доки на PiGPIO bcm2835, и если за это время других вариантов не наклюнется, то на них и проверю, что да как.
Спасибо!
-
> @Paccmpura#6032 а WiringPi уже не поддерживается...
Официальный разработчик забил на либу, но энтузиасты продолжают её пилить
https://github.com/WiringPi/WiringPi
В репозитории последний коммит 20 дней назад -
> @nbo#6040 энтузиасты продолжают её пилить
Спасибо, я в курсе. Даже скачал штук 8-10 форков/копий/клонов.
Однако, уже само их количество вызывает определенный скепсис.
Есть интересный момент - WiringPi, если я правильно понял, вошла в дистрибутив Raspbian Buster! Я его еще не устанавливал, но если это окажется правдой, то тогда на ближайшие три-четыре года связность этого кода с ОСью гарантирована именно этим фактом.
Кстати, кто-то уже работал с Buster'ом, может подтвердить моё предположение? Ну, или опровергнуть...? -
Доброго времени.
Вопрос собственно, как в начале темы, однако грабли, бубны и танцы осваиваю сам.
Не получается запустить скомпилировать прогрммку. Помогите дельным советом.
Малинку Pi3 осваиваю 3й день. На карте с ней была ОС от Амперки. В ней нашел Geany.
Стал писать на Си. Хело ворлд работает.
При компиляции с WiringPi компилируется без ошибки, а вот собирается с ошибкой. В папках с Либами, WiringPi присутствует.
Пример из инета:#include <wiringPi.h> #include <stdio.h> int main(void) { printf("Start"); wiringPiSetup (); pinMode (0, OUTPUT); digitalWrite(0, HIGH); delay (500); digitalWrite(0, LOW); delay (500); return 0; }
[upl-image-preview url=https://raspberrypi.ru/forum/assets/files/2020-12-22/1608663534-775208-scr1.jpeg]
Так же пробовал <bcm2835.h>, тоже самое, компилируется, не собирается.
Что я делаю не так? -
что-то с библиотекой wiringPi. Либо компилятор её не видит, либо она косячная
- Команда
ldconfig -p | grep "wiring"
что выдаёт? - Попробуй скомпилировать из консоли
gcc -Wall -o /путь_до_Test2/Test2 /путь_до-исходника/Test2.c -lwiringPi
- Команда