Универсальная утилита с графическим интерфейсом (Tkinter) для мониторинга, конфигурации и управления DC/DC преобразователями (полифазными модулями питания LTM) по протоколу PMBus/I2C. Поддерживает работу как с реальным оборудованием через различные USB-адаптеры, так и в режиме симуляции.
- Телеметрия: чтение в реальном времени параметров
VOUT,IOUT,POUT,VIN,IIN,PIN, температуры, частоты и коэффициента заполнения (duty cycle). - Конфигурация: гибкая настройка выходного напряжения, порогов защит (
OV/UV/OC/OT), таймингов запуска и рабочей частоты. - Управление: прямая отправка команд
OPERATION,ON_OFF_CONFIG, а также сброс флагов ошибок черезCLEAR_FAULTS. - Мониторинг: чтение регистров
STATUS_WORD,STATUS_VOUT,STATUS_IOUT,STATUS_INPUT,STATUS_TEMPERATURE,STATUS_CMLс детальной побитовой расшифровкой каждой ошибки. - Работа с NVM: энергонезависимая память устройств — сохранение и восстановление конфигурации (
Store/Restore RAM ↔ EEPROM). - Дампы конфигурации: полное последовательное чтение или запись карты регистров, импорт и экспорт конфигурационных дампов в формате CSV.
| Модель | Каналов | VIN | VOUT | IOUT макс |
|---|---|---|---|---|
| LTM4671 | 4 | 4.5–16V | 0.5–5.5V | 8A |
| LTM4673 | 4 | 4.5–16V | 0.5–5.5V | 8A |
| LTM4675 | 2 | 4.5–16V | 0.5–5.5V | 13A |
| LTM4676/A | 2 | 4.5–16V | 0.5–5.5V | 13A |
| LTM4677 | 2 | 4.5–16V | 0.5–1.8V | 18A |
| LTM4678 | 2 | 4.5–16V | 0.5–3.4V | 25A |
Приложение автоматически определяет тип подключения на основе выбранного ID шины:
| Bus ID | Адаптер | Библиотека | Команда установки |
|---|---|---|---|
| 0–99 | Локальная шина /dev/i2c-N (Linux) |
smbus2 |
pip install smbus2 |
| 100–199 | USB-I2C адаптер CH341T/A (VID 1a86:5512) | pyusb |
pip install pyusb |
| 200–299 | Адаптеры FT232H / FT2232H / FT4232H | pyftdi |
pip install pyftdi |
При использовании адаптера FT232H выполните подключение по следующей схеме:
FT232H LTM467x
AD0 (SCL) ───── SCL
AD1 (SDA) ───── SDA
GND ─────────── GND
[Важно: Необходимы pull-up резисторы 2.2кОм к линии 3.3V на SCL и SDA]
Для работы платы FT232H в Linux необходимо выгрузить стандартный драйвер ядра виртуального COM-порта, иначе pyftdi не сможет получить эксклюзивный доступ к MPSSE-движку:
sudo rmmod ftdi_sio usbserialУтилита под капотом автоматически обрабатывает низкоуровневые форматы данных протокола PMBus:
- L11 (Linear_5s_11s): 5-битная экспонента + 11-битная мантисса (используется для токов, мощностей, температур и частот).
- L16 (Linear_16u): 16-битное беззнаковое целое число, масштабируемое по формуле 2^VOUT_MODE (используется для высокоточного измерения напряжений).
- BYTE / RAW: сырые шестнадцатеричные данные для битовых масок статуса и регистров команд.
Перед запуском убедитесь, что в вашей системе установлены:
- Python 3.13+
- Компонент tkinter (в Linux может потребоваться установка через пакетный менеджер системы:
sudo apt install python3-tk). - Системная библиотека libusb (необходима для работы
pyusbс CH341).
Для ознакомления и тестирования интерфейса в режиме симуляции (без подключения реального железа):
python main.py --simДля работы с реальной шиной I2C или USB-адаптерами в Linux (требуются права суперпользователя):
sudo python main.pyЧтобы каждый раз не запускать утилиту через sudo при использовании адаптера CH341, добавьте правило udev, разрешающее доступ текущему пользователю:
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1a86", ATTR{idProduct}=="5512", MODE="0666"' | \
sudo tee /etc/udev/rules.d/99-ch341.rules
sudo udevadm control --reload-rules.
├── main.py # Точка входа в приложение
├── core/ # Ядро системы (логика протокола и драйверы)
│ ├── pmbus_constants.py # Коды команд, карта регистров, ID устройств
│ ├── pmbus_formats.py # Конвертация форматов данных L11/L16 ↔ float
│ ├── pmbus_device.py # Класс PMBusDevice (чтение/запись/телеметрия)
│ ├── bus_factory.py # Фабрика шин (автовыбор smbus2/CH341/FTDI)
│ ├── bus_scanner.py # Сканирование I2C шин на наличие устройств
│ ├── ch341_i2c.py # Драйвер для работы через USB-I2C адаптер CH341
│ ├── ftdi_i2c.py # Драйвер для работы через FTDI MPSSE I2C
│ └── dump_csv.py # Модуль экспорта и импорта дампов в формат CSV
├── gui/ # Графический интерфейс пользователя (Tkinter)
│ ├── app.py # Главное окно приложения
│ ├── device_tab.py # Вкладка конфигурации конкретного устройства
│ ├── channel_frame.py # Колонка канала (телеметрия, конфиг, статус)
│ └── status_defs.py # Битовые маски STATUS_* регистров для разбора ошибок
└── sim/ # Модули для отладки без железа
└── sim_bus.py # Эмуляция I2C шины для демонстрационного режима (--sim)
-
awolfman — Архитектура системы, постановка задач, общая координация и тестирование в железе
-
Claude 4.6 — Написание основного программного кода (ядро PMBus, обработка протоколов, интерфейс Tkinter)
-
Gemini — Тестирование, рефакторинг и доведение кода до стабильного рабочего состояния
-
DeepSeek — Отладка драйверов интерфейсов (USB-I2C), оптимизация обработки ошибок и тестирование под Linux