- ТТХ
- Начинаем «заводить» всех по очереди
- RTC
- GPIO
- Serial Port
ТТХ
Полные технические характеристики корпуса можно найти на сайте производителя - ТТХ. Наш обзор корпуса полностью тут. В этой статье сделан упор на работу с дополнительными интерфейсам, предоставляемыми производителем.
Собственно, к параметрам самой платы можно отнести следующие:
- I/O Interface:
- GPIO реализован на микросхеме TCA9554;
- GPI 0-3: VIH: 2 ~ 5V, VIL: 0 ~ 0.8V;
- GPO 0-3: 0 ~ 5V;
- Serial Ports: 1 x RS232/485 (5-pin terminal block), automatic direction control, 300 ~ 115.2k bps, UART используется нативный, самой RPi4 выведенный на 8-ой и 10-ый контакты «гребёнки».
Физика реализована на двух микросхемах SP3243EUEA (RS232) и MAX13488EESA (RS485)*.
Микросхемы, отвечающие за эти интерфейсы, указаны на изображении 1.
* Вывод TxD разведён на плате без всяких ухищрений - непосредственно на входы драйверов (SP3243EUEA - pin 14 - T1IN; MAX13488EESA - pin 4 - DI). А вот с RxD производитель подстраховался, и выходы драйверов объединяются через микросхему двухвходового вентиля SN74LVC1G08, реализующего логическое «И».
Начинаем «заводить» всех по очереди
Advantech предоставляет драйвера и тестовые примеры, но... только под Raspberry Pi OS. Причём эта OS 32-битная, притом что сам ARM на Raspberry Pi 4 уже 64-битный - Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz. Полные ТТХ тут.
Поскольку для нас в первую очередь важна совместимость всех и вся с OS Astra Linux, мы будем использовать OS Astra Linux® Special Edition, релиз «Новороссийск» от АО «НПО РусБИТех-Астра».
Готовый образ можно взять по ссылке. Нарезаем образ на uSD, включаемся и загружаемся. Для дальнейшей работы нам потребуется указать системе использовать I2C, для чего подредактируем файл /boot/config.txt следующим образом:
RTC
Часы реального времени управляются по шине I2C, следовательно, перед их использованием необходимо сказать нашей «малинке», что у нас есть новое устройство по некоему адресу. Для этого нам понадобится утилита i2cdetect, осуществляющая сканирование шины I2C на предмет поиска устройств и вывод таблицы со списком обнаруженных устройств на указанной шине. Скачать библиотеку, установить dpkg -i ./libi2c0_4.2-1build1_arm64.deb.
Теперь всё готово - определяемся с этим самым адресом, вывод команды i2cdetect:
Как мы видим, на шине присутствует два устройства. Методом научного тыка эмпирическим путём было установлено, что RTC - это адрес 0x32. Теперь сообщаем нашей «малинке»: «Давай подключим часики.»:
После успешной инициализации в системе должен автоматически подключиться модуль rtc_rx8010:
Появление RTC в системе можно продиагностировать следующим образом:
А ещё так:
administrator@astra-arm64:~$ hwclock -r
2021-05-25 10:25:38.546893+00:00
Есть один маленький, но очень чувствительный момент: при перезагрузке инициализацию требуется проводить заново. Во избежание, так сказать, и так как все мы - люди занятые и ерундой страдать не любим, приводим готовые файлы для systemd:
GPIO
Дополнительные (относительно самой Raspberry Pi) GPIO предоставлены в полное распоряжение микросхемой TCA9554, так же, как и часы, управляемые по шине I2C. Соответственно, и инициализация осуществляется схожим образом:
Дальнейшая работа с GPIO полностью соответствует стандартным операциям с sysfs.
Serial Port
UART выведенный на «гребёнку» у Raspberry Pi4 называется ttyS0, причём по умолчанию он используется как консольный терминал. Этим мы и воспользуемся для проверки. Подключаемся сначала по RS232:
- соединяем соответствующие контакты (показаны на изображении 3) на Raspberry и стендовом ПК;
- запускаем на стендовом ПК Putty и включаем или перезагружаем «малинку»;
- наблюдаем в окне Putty сначала сообщения от ядра Linux и, наконец, сообщения запуска системных служб, заканчивающиеся приглашением к вводу имени пользователя: Astra Linux CE 4.11.4 (Novorossiysk)
ttyS0
astra-arm64 login:. - При желании можно залогиниться и убедиться, что всё работает.
Для проверки подключения по RS485 всё аналогично за исключением того, что нужно сигналы забирать с соседних пинов и на стендовой машине, а так же использовать последовательный порт RS485.
Для использования последовательного порта в своих целях потребуется перенастроить работу /dev/ttyS0.
#astra linux #астра линукс новороссийск
#железо_и_технологии