Skip to content

Firmware developed in C for the STM32F429 microcontroller with custom hardware abstraction for minimal memory usage

Notifications You must be signed in to change notification settings

Matt-Lemcke/Register-Level-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Register-Level-Project

Firmware developed in C for the STM32F429 microcontroller with custom hardware abstraction for minimal memory usage.

Purpose

This is a learning project with a focus on bare-metal programming of ARM-based devices. The goal is to develop firmware using the STMirco CMSIS library for register level programming of peripherals such as:

  • GPIO
  • ADC
  • I2C
  • Timers

All information regarding peripheral configuration and control was taken from the reference manual.

Goal

Create driver code for interfaceing with an EEPROM ASIC via I2C communication protocol with the following requirements:

  • Proper abstraction and modularity for portable code and an easy to use interface
  • No use of the hardware abstraction library providied by STMicro
  • Clean, readable code with comments when neccessary
  • Optimized memory management techniques for reading/writing to the 8K EEPROM

Hardware

What Does It Do?

This project is an 8-bit data logger that stores temperature measurements taken at 5 second intervals. The temperature data is stored on an 8K byte external EEPROM memory chip to prevent log data loss during a system reset/power off. The application layer of this device was designed for reading indoor ambient temperatures at regular intervals, but could be changed for more specific use cases using the same custom device drivers.

Notable Achievemets

  • Extends the life of the EEPROM chip by 64 times by using a paging technique to reduce the number of writes to the current data pointer
  • Reduced the flash memory footprint of the source code by over 80% by using a custom hardware abstraction layer

About

Firmware developed in C for the STM32F429 microcontroller with custom hardware abstraction for minimal memory usage

Topics

Resources

Stars

Watchers

Forks