lift_indicator_suite/bsp/generated
2026-06-26 18:23:26 +03:00
..
board # firmware_test: работа с bsp_mqs -done 2026-06-26 18:23:26 +03:00
startup # 8 - IMPORTANT 2026-03-11 14:58:11 +03:00
.clang-tidy ci: trigger 2026-04-23 18:49:38 +03:00
board.c # bsp_sd: smoke test 2026-05-06 16:12:10 +03:00
board.h # 6 2026-03-18 12:33:53 +03:00
clock_config.c # firmware_test: работа с bsp_mqs -done 2026-06-26 18:23:26 +03:00
clock_config.h # firmware_test: работа с bsp_mqs -done 2026-06-26 18:23:26 +03:00
pin_mux.c # 8 - IMPORTANT 2026-03-11 14:58:11 +03:00
pin_mux.h # 8 - IMPORTANT 2026-03-11 14:58:11 +03:00
README.md # Update documentation 2026-05-14 00:04:36 +03:00
sdmmc_config.c # bsp_sd: smoke test 2026-05-06 16:12:10 +03:00
sdmmc_config.h # bsp_sd: smoke test 2026-05-06 16:12:10 +03:00
syscalls.c # 8 - IMPORTANT 2026-03-11 14:58:11 +03:00
TFT_Board.mex # firmware_test: работа с bsp_mqs -done 2026-06-26 18:23:26 +03:00

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
  • Нужно добавить новую функциональную группу
  • Обнаружена ошибка в конфигурации пина

Порядок внесения изменений:

  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. В репозиторий не входит.