# NXP Config Tools — применение в проекте Справочный документ для разработчиков проекта на базе **MIMXRT1052CVJ5B**. > Применяемая версия генератора- **25.12** --- ## Что такое Config Tools NXP Config Tools — набор утилит для визуальной настройки микроконтроллера. Включает несколько инструментов: Pins Tool, Clocks Tool, Peripherals Tool. Генерирует инициализационный код на основе конфигурации сохранённой в файле `TFT_Board.mex`. --- ## Что используется в проекте Из всего набора инструментов используются только два: **Clocks Tool** — настройка тактирования: PLL, делители шин, clock gates. Генерирует `clock_config.c / clock_config.h`. **Pins Tool** — настройка мультиплексирования пинов, pull-up/pull-down, drive strength, hysteresis. Генерирует `pin_mux.c / pin_mux.h`. **Peripherals Tool** — в проекте **не используется** для генерации кода. Применяется исключительно как справочник при написании своей инициализации периферии в BSP. Инициализация периферии (CAN, UART, USDHC и др.) реализована гибко в BSP и не генерируется автоматически. --- ## Расположение файлов ```bash bsp/ └── generated/ ├── TFT_Board.mex # Исходник конфигурации — главный файл Config Tools ├── pin_mux.c # Сгенерировано из TFT_Board.mex (Pins Tool) ├── pin_mux.h ├── clock_config.c # Сгенерировано из TFT_Board.mex (Clocks Tool) └── clock_config.h ``` `TFT_Board.mex` — источник истины. Все изменения вносятся только через него. --- ## Конфигурация тактирования Внешний кварц **24 МГц**. Режим максимальной производительности (внешнее питание, энергопотребление не критично). | Параметр | Значение | | ------------------------ | ----------------------------------------- | | ARM PLL (PLL1) | 1200 МГц (VDIV = 50) | | CPU / AHB | 600 МГц (ARM_PODF /2, AHB_PODF /1) | | IPG | 150 МГц (IPG_PODF /4) | | PLL1 bypass clock | REF_CLK_24M (внешний кварц) | | Внутренний RC осциллятор | включён (используется BootROM при старте) | **SEMC и FlexSPI** в Clocks Tool настроены формально — реальная инициализация выполняется через **DCD** (SDRAM) и **FDCB** (QSPI Flash) до передачи управления прикладному коду. Для корректной сборки необходимы следующие дефайны: ```cmake target_compile_definitions(firmware PRIVATE XIP_EXTERNAL_FLASH=1 # код исполняется из QSPI Flash (XIP) XIP_BOOT_HEADER_DCD_ENABLE=1 # DCD блок инициализирует SDRAM SKIP_SYSCLK_INIT # System PLL не трогать — уже настроен DCD ) ``` --- ## Функциональные группы (Pins Tool) В проекте созданы три функциональные группы: **`BOARD_InitPins`** — основная группа. Инициализирует все статичные пины платы: LCDIF, SEMC, CAN, LPUART1, USDHC1, USB, MQS, SPI, GPIO (кнопки, светодиоды, входы, управляющие сигналы LCD). Вызывается один раз при старте. **`BOARD_InitRS_UART`** — пин RS_RX как вход LPUART (гальванически развязанный UART через оптопару). Вызывается при переключении в режим UART. **`BOARD_InitRS_GPIO`** — тот же пин RS_RX как цифровой вход GPIO. Вызывается при переключении в режим дискретного входа. Пин RS_RX **не входит** в `BOARD_InitPins` — только в две специализированные группы. --- ## Особенности настройки пинов **Pull-up / Pull-down:** - Пины с внешними резисторами подтяжки (кнопки 3K3, оптопары 1K, SDIO 10K) — внутренний pull отключён - Аналоговые пины (VOLUME/ADC) — pull полностью отключён - Выходы (светодиоды, управляющие сигналы) — pull отключён или pull-down чтобы исключить неопределённое состояние при старте **Hysteresis:** - Включён на всех дискретных входах: кнопки, оптопарные входы (EXT_IN1, EXT_IN2, RS_RX) - Отключён на аналоговых входах **Drive strength:** - Высокоскоростные интерфейсы (LCDIF, USDHC) — R0/4 или выше - Обычные GPIO и управляющие сигналы — R0 - CAN, UART — R0/2 **Pull/Keeper selection:** - Поле не сбрасывается при отключении Pull/Keeper Enable — это нормальное поведение. При отключённом Enable значение поля игнорируется железом. --- ## Переключение режима RS_RX в BSP ```c // Переключение в режим UART void BSP_RS_InitUART(uint32_t baudrate) { BOARD_InitRS_UART(); // переключаем мультиплексирование пина LPUART_Init(LPUART3, &config); // инициализируем периферию } // Переключение в режим GPIO void BSP_RS_InitGPIO(void) { LPUART_Deinit(LPUART3); // деинициализируем UART перед переключением BOARD_InitRS_GPIO(); // переключаем мультиплексирование пина GPIO_PinInit(GPIO1, pin, &config); } ``` --- ## Workflow при изменениях Config Tools открывается **только при изменении аппаратной конфигурации**. В штатном режиме разработки не используется. **Когда открывать:** - Изменилась схема — новый пин, другая периферия, изменился pull или drive strength - Нужно добавить новую функциональную группу - Обнаружена ошибка в конфигурации пина **Порядок внесения изменений:** 1. Открыть `bsp/generated/TFT_Board.mex` в Config Tools 2. Внести изменения 3. Сгенерировать код (Update Code) 4. Закоммитить `TFT_Board.mex` и сгенерированные файлы **в одном коммите** **Главное правило:** `pin_mux.c`, `pin_mux.h`, `clock_config.c`, `clock_config.h` — **не редактировать вручную**. Только через Config Tools. Ручная правка приведёт к рассинхронизации с `TFT_Board.mex` и потере воспроизводимости конфигурации. --- ## ConfigToolsData При скачивании SDK Builder предлагает загрузить **ConfigToolsData** — данные о микроконтроллере для Config Tools (описание пинов, clock tree, альтернативные функции). Устанавливается локально на машину где запущен Config Tools. В репозиторий не входит.