Система управления до 10 шаговыми двигателями (ШД) для ЧПУ-станков. Поддерживает синхронный и асинхронный режимы запуска.
PC (squid CLI / MotorManagerService)
| USB
v
FT232RL (USB-UART мост)
| UART4
v
STM32F407VG (центральный контроллер)
| USART2 + CD4066BM мультиплексор
v
STM32G031F8P6 x10 (Motor Drivers)
| STEP/DIR
v
Драйверы ШД -> Моторы
Требуется arm-none-eabi-gcc. Используется чистый CMSIS (HAL запрещён).
# Оба таргета
cmake -B build && cmake --build build
# Только MCU / только Motor Driver
cmake --build build --target stm32f407vg_mcu
cmake --build build --target stm32g031_motor_driver
# Прошивка через ST-Link
cmake --build build --target flash-mcu
cmake --build build --target flash-driverpoetry install
# Центральный MCU
poetry run squid board version
poetry run squid board status
poetry run squid board move -m 1 -s 5000
# Motor Driver (прямое управление)
poetry run squid driver move --accel 2000 --speed 5000 --steps 1000
poetry run squid driver stress-test --count 10
poetry run squid driver dump-raw# Unit тесты
poetry run pytest tests/test_packet.py tests/test_motor.py -v
# Интеграционные тесты (требуется подключенный MCU)
poetry run pytest tests/test_integration.py -v --port /dev/tty.usbserial-*| Директория | Описание |
|---|---|
firmware/stm32f407vg/ |
Прошивка центрального MCU (STM32F407VG, Cortex-M4) |
firmware/stm32g031f8/ |
Прошивка Motor Driver (STM32G031F8P6, Cortex-M0+) |
cli/ |
Единый Python CLI (squid board ... / squid driver ...) |
tests/ |
Unit и интеграционные тесты (pytest) |
docs/ |
Документация: протоколы, архитектура, схемы |
cmake/ |
Единый ARM toolchain |
- docs/ARCHITECTURE.md - Архитектура системы
- docs/COMMAND.md - Протокол команд PC <-> MCU
- docs/DRIVER_PROTOCOL.md - Протокол MCU <-> Motor Driver
- docs/MOTOR_DRIVER.md - MotorDriver FSM
- docs/FILETREE.md - Описание файловой структуры
- docs/device_interface.md - Протокол устройства
- docs/motor_logic.md - GPIO логика
- FT232RL нестабилен -- периодически не видит данные
- Запрос версии срабатывает через раз
- Асинхронный режим работает нестабильно