| .. | ||
| board | ||
| startup | ||
| .clang-tidy | ||
| board.c | ||
| board.h | ||
| clock_config.c | ||
| clock_config.h | ||
| pin_mux.c | ||
| pin_mux.h | ||
| README.md | ||
| sdmmc_config.c | ||
| sdmmc_config.h | ||
| syscalls.c | ||
| TFT_Board.mex | ||
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 и не генерируется автоматически.
Расположение файлов
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) до передачи управления прикладному коду. Для корректной сборки необходимы следующие дефайны:
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
// Переключение в режим 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
- Нужно добавить новую функциональную группу
- Обнаружена ошибка в конфигурации пина
Порядок внесения изменений:
- Открыть
bsp/generated/TFT_Board.mexв Config Tools - Внести изменения
- Сгенерировать код (Update Code)
- Закоммитить
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. В репозиторий не входит.