From: Ivan Shmakov Document-Id: urn:uuid:2226dab1-3c38-4aa6-a447-8de48a921960 License: CC0-1.0 Для управления устройством с компьютера «общего назначения» должны быть решены две задачи: • реализован «внешний» интерфейс SPI; • обеспечена возможность передачи по интерфейсу октетов, соответствующих системе команд [1] устройства. [1] http://users.am-1.org/~ivan/notes-2020/150.threespi.text Обе задачи можно решить используя отладочный интерфейс, подобный Bus Pirate, и программу взаимодействия с последовательным портом (cu(1), PuTTY, socat(1), etc.) Иначе, интерфейс USB—SPI может быть реализован на основе, например, платы Arduino Uno rev. 3, с загруженной программой uart-spi.c [2]. [2] http://users.am-1.org/~ivan/src/fourbit-2019/src/uart-spi.c В этом случае, использование Unix-подобной системы позволяет передавать нужные команды на устройство просто из пользовательской оболочки (командного интерпретатора.) Например (проверено на Debian GNU/Linux 10, оболочка Bash): $ stty -F /dev/ttyUSB3 \ 115200 \ clocal -crtscts -opost -i{sig,canon,exten} \ -echo{,e,k,ctl,ke} -icrnl -ixo{n,ff} — настройка порта (115200 бит/с — для используемой нами сборки uart-spi.c; режим без какой бы то ни было обработки управляющих кодов); $ od -An -w1 -t o1 < /dev/ttyUSB3 & — выполнять чтение ответов устройства (в фоновом режиме); $ printf > /dev/ttyUSB3 \\312 — выбрать ослабление −10 dB на втором канале; $ printf > /dev/ttyUSB3 \\072 — включить усилитель второго канала и выключить — первого; $ printf > /dev/ttyUSB3 \\176 $ printf > /dev/ttyUSB3 \\276 — ничего не делать (полезно для получения текущего состояния устройства.)