LPC4088 Embedded Firmware System
Bare-metal embedded firmware developed for the NXP LPC4088 microcontroller. This project demonstrates low-level hardware control, deterministic real-time behavior, and multi-peripheral integration.

Bare-Metal Firmware Architecture
- Programmed the LPC4088 using ARM assembly and C++ at the register level.
- No RTOS — firmware executes deterministically using interrupts and polling.
- Direct control of GPIO, timers, UART, and I2C peripherals.
- Designed a structured main loop with interrupt-driven events.
- Emphasis on predictability, timing, and hardware awareness.
I2C Peripheral Integration
The firmware integrates multiple I2C devices on a shared bus, coordinated through low-level driver logic and a simple user-interface system.
- RTC: DS1337 real-time clock with alarm support.
- Temperature Sensor: DS1631 digital temperature sensor.
- LCD: 4×20 character LCD via PCF8574T I/O expander.
- Input: Matrix keypad for menu navigation and control.
- Event-driven updates using timer interrupts and keypad input.

System Features
- Real-time clock display and alarm handling.
- Temperature monitoring with periodic updates.
- Menu-driven UI using keypad + LCD.
- Interrupt-driven timing using hardware timers.
- Clean separation between drivers and application logic.
Tools Used
- MCU: NXP LPC4088 (ARM Cortex-M4)
- Languages: ARM Assembly, C++
- Peripherals: GPIO, UART, I2C, Timers, Interrupts
- IDE: Keil µVision 5
- Debug: JTAG / Serial Debugging
Purpose
Demonstrate a strong understanding of low-level embedded systems by building a complete, bare-metal firmware application that interfaces directly with hardware and behaves deterministically.
Results
- Fully functional multi-device I2C system.
- Stable UI with predictable timing.
- Demonstrated register-level hardware control.
- Reusable firmware structure for future projects.

