Embedded C drivers and examples for the NXP FRDM-MCXA153 development board (ARM Cortex-M33 microcontroller).
This repository contains hands-on embedded software projects for the NXP FRDM-MCXA153 evaluation board, focusing on low-level peripheral drivers and motor control applications. It serves as a practical learning resource for embedded systems development on the MCX A-series platform.
The FRDM-MCXA153 is a cost-effective development platform for the NXP MCXA153 microcontroller (Cortex-M33, 96MHz, up to 256KB flash). This repository provides:
- Educational driver examples - Implementing UART, GPIO, and other peripherals from scratch using register-level programming
- Motor control reference - PMSM (Permanent Magnet Synchronous Motor) and BLDC motor control implementations using NXP's Motor Control Advanced Algorithms (MCAA) library
- Interview-ready code samples - Clean, well-documented C code demonstrating embedded best practices
| Component | Technology |
|---|---|
| MCU | NXP MCXA153 (ARM Cortex-M33, 96 MHz) |
| SDK | MCUXpresso SDK v2.14 |
| Toolchain | ARM GCC / CMake |
| IDE | VS Code with MCUXpresso extensions |
| Debug | MCU-Link (on-board debugger) |
| Motor Control | NXP MCAA Library (CM33 No-DSP) |
FRDM-MCXA153/
├── Examples/
│ └── frdmmcxa153_ese_driver_examples_lpuart_interrupt/ # LPUART interrupt-driven driver with RGB LED control
├── SDK_24/
│ ├── boards/frdmmcxa153/ # Board support files
│ ├── devices/MCXA153/ # Device headers and startup
│ ├── CMSIS/ # ARM CMSIS core files
│ ├── components/ # Additional components (serial_manager, etc.)
│ ├── middleware/
│ │ └── motor_control/ # PMSM/BLDC motor control middleware
│ └── tools/ # CMake toolchain files
├── .gitignore
├── LICENSE
└── README.md
- ARM GCC Toolchain (v10.3.1 or later)
- CMake (v3.10 or later)
- MCUXpresso for VS Code (optional but recommended)
cd Examples/frdmmcxa153_ese_driver_examples_lpuart_interrupt/armgcc
# Debug build
./build_debug.sh
# Release build
./build_release.sh
# Clean build artifacts
./clean.shThe build generates .bin and .elf files in the debug/ or release/ folder. Flash using:
- MCU-Link (drag-and-drop to mass storage device)
- MCUXpresso IDE or VS Code with debug configuration
- pyOCD or OpenOCD command line tools
- Connect USB-C cable to the MCU-Link port (J15)
- Build and flash the firmware
- Open serial terminal (115200 baud, 8-N-1)
- Type 'r', 'g', or 'b' to toggle the RGB LED
- Register-level programming - Direct hardware register manipulation for UART, GPIO, and clock configuration without HAL abstraction layers
- Interrupt-driven architecture - Efficient FIFO-based circular buffer implementation for non-blocking UART communication using NVIC and Cortex-M33 interrupt handling
- Embedded build systems - CMake-based cross-compilation setup with linker scripts for ARM Cortex-M targets
- Motor control fundamentals - PMSM/BLDC field-oriented control (FOC) implementation using NXP's MCAA library for sensorless and encoder-based motor control
This project is licensed under the MIT License - see the LICENSE file for details.
Note: The NXP SDK files in SDK_24/ are subject to the NXP Software License Agreement (see SDK_24/LA_OPT_NXP_Software_License.txt). The motor control middleware has its own BSD-3-Clause license (see SDK_24/middleware/motor_control/licenses/).
Developed for educational purposes at HAN University of Applied Sciences.