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%; тайм-аут и следующий захват.

Что измерять

Условная диаграмма: период T, длительность высокого уровня и задержка между каналами D0D1tHIGHTΔt

Условная схема, не аппаратная запись. Шаг времени — 1/fₛ; абсолютная точность требует калибровки часов.

Период, частота, импульсы

Интервалы между фронтами, high/low, duty cycle. Для PC13 подтверждены на железе; статистика исключает импульсы, обрезанные границами файла.

Джиттер и задержка

Распределение периодов и Δt между каналами. GPIO-маркер позволяет измерять ISR или отклик на стимул. Точные аппаратные эталоны ещё предстоит проверить.

Декодирование

Обёртки UART, SPI, I²C проверяются синтетическими сигналами в CI. Следующий этап — реальные обмены BluePill/BlackPill с известными данными и внесёнными ошибками.

Каталог sigrok: доступность конкретного декодера проверять в установленной сборке; каталог также содержит разработки.

Три условия успешного теста

  1. Полнота: число отсчётов и samplerate совпадают с запросом. Код возврата 0 сам по себе недостаточен.
  2. Форма: нет неожиданных коротких импульсов, интервалы соответствуют известному сигналу. Полный ZIP не гарантирует корректной формы.
  3. Смысл: ожидаемые данные и временные допуски выполнены; учтены часы 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. Эти сценарии пока не представлены как подтверждённые на железе.

Методика и доказательства: навык · Windows · Ubuntu.