# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Project Overview This is an embedded C application for the LPC54114 microcontroller (ARM Cortex-M4) running on the LPCXpresso54114 development board. The project appears to be a transmitter device (TX) with signal generation, display, USB communication, and power management capabilities. **Hardware Target:** NXP LPC54114 dual-core Cortex-M4/M0+ microcontroller **Software Version:** 1.10A (defined in source/System/system.h:18) ## Build System ### Build Commands ```bash # Build debug version cd Debug make all # Build release version cd Release make all # Clean build artifacts make clean ``` ### Build Artifacts - **Target executable:** `TX_App.axf` (ARM executable format) - **Binary output:** `TX_App.bin` (generated post-build) - **Memory map:** `TX_App.map` - **Linker scripts:** `TX_App_Debug.ld`, `TX_App_Release.ld` ### Toolchain - **Compiler:** arm-none-eabi-gcc - **Target:** Cortex-M4 with hardware floating point (fpv4-sp-d16) - **IDE Support:** MCUXpresso, IAR, Keil MDK ## Code Architecture ### Core System Structure **Main Application Flow:** - Entry point: `source/main.c` - System initialization: `source/System/system.c` - Hardware initialization: `source/init.c` **Key Subsystems:** 1. **Signal Generation (`source/dds.c`, `source/fgen.c`)** - DDS (Direct Digital Synthesis) for frequency generation - Function generator capabilities - Frequency range: 3.14kHz - 200kHz for broadcast mode - System clock: 12MHz 2. **Display System (`source/display.c`, `source/lcd.c`)** - Graphics library in `source/Graphics/` - Font rendering system in `source/Fonts/` - Multi-language support with translations - Icon and bitmap handling 3. **Power Management (`source/battery.c`, `source/ports.c`)** - Battery type detection (Lithium/Alkaline/External DC) - Power limits: 10W (Lithium/Ext), 5W (Alkaline) - Clamp control and regulation 4. **Communication (`source/USB/`, `source/broadcast.c`)** - USB CDC (Virtual COM) interface - Broadcast transmission capabilities - Flash update support via USB 5. **Hardware Drivers (`source/driver.c`, `source/io.c`)** - SPI communication for external components - ADC for measurements - Timer and PWM control - GPIO port management ### Directory Structure - `source/` - Main application code - `source/System/` - System-level configuration and data structures - `source/USB/` - USB device implementation - `source/Graphics/` - Display graphics and UI - `source/Fonts/` - Font data and localization - `source/Loader/` - Bootloader and flash update functionality - `drivers/` - NXP SDK peripheral drivers - `CMSIS/` - ARM CMSIS headers - `usb/` - USB middleware stack - `Debug/`, `Release/` - Build output directories ### Key Data Structures **ClampData_t** (`source/System/system.h:35`): Core control structure containing: - Slope, voltage, current, impedance measurements - Power regulation parameters - Digital potentiometer settings ### Development Notes - The project uses NXP's MCUXpresso SDK for peripheral drivers - Hardware-specific fixes are isolated in `source/hwFixes.c` - Comprehensive change log maintained in `source/AppChangeLog.txt` - Flash memory layout: Application starts at 0x10000 (64KB offset for bootloader) - Maximum application size: 192KB ### Testing Connect via USB (J7 connector) at 115200 baud for debug console output. The application supports firmware updates through the bootloader system.