В библиотеке PiGPIO http://abyz.me.uk/rpi/pigpio/index.html упоминается, что одной из ее функций является «программная последовательная связь с использованием любого пользовательского gpio».
Я полагаю, это означает, что вы можете использовать его для генерации программного UART на любых 2 бесплатных выводах GPIO.
На странице примеров проектов нет примеров для этой функции, и я не нашел ни одного в Google.
Кто-нибудь делал это? Если это так, пожалуйста, укажите мне на пример.
Если нет, есть ли альтернативные библиотеки для битового UART?
Спасибо,
Ответы:
Вот какой-то Python, который я использовал для проверки надежности серийного программного обеспечения. Входная сторона довольно тривиальна. Вы просто делаете соответствующие вызовы последовательного открытия битов взрыва в Python или C. Выходная сторона более сложна, так как вы должны использовать формы сигналов для создания потока битов.
Код здесь использует 7-битные, а не 8-битные данные. Тест был написан примерно в то же время, когда я добавлял поддержку разных битов на байт.
Код записывает блоки двоичных данных в gpio, подключенный к ноутбуку (через последовательный ключ). Ноутбук отображает поступающие последовательные данные на свою выходную последовательную линию. Пи читает последовательные данные на другом GPIO.
Код проверяет расхождения между отправленными и полученными данными. Предполагается, что ноутбук не содержит ошибок, поэтому предполагается, что любые ошибки находятся в битах.
Глядя на логи, что-то меньше 19,2 кбит / с было солидно. Все до 115.2 кбит / с было разумным (но потребовало бы контрольной суммы), а 230.4 кбит / с давало 13% ошибок в байтах.
бревна
источник
Когда вы подключаете Tx напрямую к Rx для тестирования без всего, что может добавить ошибку, например, ключи, оно говорит вам, насколько хорошо работает библиотека.
Используйте GPIO 23 в качестве Tx и GPIO 24 в качестве Rx или другого бесплатного GPIO на Raspberry Pi 3b +. Это выглядит хорошо в том же порядке, что и встроенный UART, и он практически рядом с ним, всего 3 контакта справа, с выводом GND справа от Rx.
Результаты:
Если вы можете жить с 19200 или меньше без необходимости использования хешей контрольных сумм или конвертеров SPI / I2C в UART - это должно быть хорошо.
источник