WeAct: от сигнала к проверке
Измерения цифровых сигналов для автоматизированных тестов прошивки. Навык управляет sigrok-cli, сохраняет запись, считает интервалы и передаёт результат в проверки Python. Windows локально или Linux по SSH — анализатор подключается к машине захвата.
Путь данных
Выводы MCU
GPIO, UART, SPI, I²C
Общая земля и известная разводка
WeAct · 8 каналов
USB → sigrok-cli
Окно или триггер
Запись .sr
Отсчёты → интервалы → декодеры
Ожидания → результат теста
Выбрать режим захвата
Фиксированное окно
Задать длительность и частоту: N = fₛ × t. Подходит для периодических сигналов и поиска обмена в длинной записи.
Проверено: 100 кГц × 5 с; 1/8/16/24 МГц × 1,2 с на PC13.
Триггер и предыстория
Вооружить анализатор до события, дождаться фронта или спада, собрать запись. Предыстория показывает состояние до события, если успела накопиться.
Проверено: rising/falling, pre=0/10/50%; тайм-аут и следующий захват.
Что измерять
Условная схема, не аппаратная запись. Шаг времени — 1/fₛ; абсолютная точность требует калибровки часов.
Период, частота, импульсы
Интервалы между фронтами, high/low, duty cycle. Для PC13 подтверждены на железе; статистика исключает импульсы, обрезанные границами файла.
Джиттер и задержка
Распределение периодов и Δt между каналами. GPIO-маркер позволяет измерять ISR или отклик на стимул. Точные аппаратные эталоны ещё предстоит проверить.
Декодирование
Обёртки UART, SPI, I²C проверяются синтетическими сигналами в CI. Следующий этап — реальные обмены BluePill/BlackPill с известными данными и внесёнными ошибками.
Каталог sigrok: доступность конкретного декодера проверять в установленной сборке; каталог также содержит разработки.
Три условия успешного теста
- Полнота: число отсчётов и samplerate совпадают с запросом. Код возврата 0 сам по себе недостаточен.
- Форма: нет неожиданных коротких импульсов, интервалы соответствуют известному сигналу. Полный ZIP не гарантирует корректной формы.
- Смысл: ожидаемые данные и временные допуски выполнены; учтены часы MCU и анализатора, влияние остановок отладчиком.
Проверено на F411CE · 19 октября 2026
Windows · прямой USB
CLI 0.8.0-git-f44dd91, libsigrok 0.6.0-git-883c2ac: полные записи до 24 МГц × 1,2 с, чистая серия триггеров. Старая 0.7.2 обрезала .sr на одном из путей сохранения.
Возврат на прежний хаб воспроизвёл обрыв 24 МГц и лишние переходы даже в полном файле. Точная причина внутри USB-тракта не установлена.
Ubuntu 20.04 · ARM64 · SSH
OrangePi 5, CLI 0.7.1, libsigrok runtime 0.5.2: все 12 проверок успешны. 500000 отсчётов за 5 с; 28800000 за 1,2 с при 24 МГц.
PC13: период 1,02784 с; high 513,890 мс, low 513,952 мс. В пяти триггерных захватах лишних переходов не обнаружено.
24 МГц здесь — скорость дискретизации медленного PC13. Это не подтверждение полосы входа, максимального битрейта протокола или надёжности любого хаба. Анализатор показывает цифровые уровни; форму напряжения исследуют осциллографом.
Совместные автоматизированные сценарии
С отладчиком
Вооружить → запустить стимул → собрать → проверить. Пошаговое выполнение и breakpoints меняют тайминги; для измеряемого участка нужен непрерывный запуск.
С stm32-diag-record
Запись внутренних переменных дополняет физические сигналы. Для сопоставления нужен общий GPIO-маркер: часы хоста, MCU и анализатора не синхронизируются автоматически.
Дальнейшие тесты: UART, SPI/I²C, Modbus RTU, неверный CRC и тайм-ауты, задержка «команда → реакция», длительность ISR. Эти сценарии пока не представлены как подтверждённые на железе.