Learn how to interface an external Electrically Erasable Programmable Read-Only Memory (EEPROM) with STM32 microcontrollers using the built-in EEPROM peripheral. Explore various EEPROM features and see an example code for easy understanding.

Disclaimer: Electricity is always dangerous. Proper skill is required to work with electricity. Do work at your own risk. The author will not be responsible for any misuse or harmful act or any mistake you make. The contents of this website are unique and copyright protected. Kindly don’t do any nonsensical act of copying and claiming it as yours. Most of the articles published here are kept open-source to help you. Take the knowledge for free and use it, but if you are interested you can buy the ready resources offered here. If you need any help or guidance feel free to comment below, the author will try to help you. Also, there can be affiliation links in the article. Which will not affect you anyway, but allows the author with some commission. So please don’t take it otherwise. Thanks.

Electrically erasable programmable read-only memory (EEPROM) is a type of non-volatile memory that allows users to store data permanently. EEPROMs are commonly used in embedded systems where data needs to be stored even when the device is powered off. STM32 microcontrollers come with built-in EEPROM peripherals that provide a simple and efficient way to interface with EEPROMs. In this article, we will discuss the EEPROM peripheral of STM32 microcontrollers and its various features.


EEPROM Overview:

The EEPROM peripheral of STM32 microcontrollers provides a simple way to interface with external EEPROM devices. The EEPROM peripheral allows users to read and write data to an external EEPROM using the I2C or SPI communication protocol. The EEPROM peripheral can also be configured to generate an interrupt when the data transfer is complete.

STM32 EEPROM Configuration:

The EEPROM peripheral of STM32 microcontrollers can be configured using the STM32CubeIDE software. The STM32CubeIDE provides an EEPROM configuration tool that allows users to configure various parameters such as the communication protocol, memory address, and data transfer rate.

How to interface EEPROM with STM32

EEPROM Example Code

Here is an example code that demonstrates the basic EEPROM functionality of STM32 microcontrollers. This code uses the STM32CubeIDE and the STM32F4 Discovery board.

#include "main.h"
#include "stm32f4xx_hal.h"

I2C_HandleTypeDef hi2c1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);


int main(void)

  uint8_t data_write[10] = "Hello";
  uint8_t data_read[10] = {0};

  if (HAL_I2C_Mem_Write(&hi2c1, EEPROM_ADDRESS, 0, I2C_MEMADD_SIZE_8BIT, data_write, sizeof(data_write), HAL_MAX_DELAY) != HAL_OK)


  if (HAL_I2C_Mem_Read(&hi2c1, EEPROM_ADDRESS, 0, I2C_MEMADD_SIZE_8BIT, data_read, sizeof(data_read), HAL_MAX_DELAY) != HAL_OK)

  printf("Data read: %s\n", data_read);

  while (1)

Hope this will help you. See you soon. Thanks.

You can read more on:

For Professional Designs or Help:


Also let me know what you want to get as the next article, comment below!


Mithun K. Das; B. Sc. in EEE from KUET; Head of R&D @ M's Lab Engineering Solution. "This is my personal blog. I post articles on different subjects related to electronics in the easiest way so that everything becomes easy for all, especially for beginners. If you have any questions, feel free to ask through the contact us page." Thanks.


Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

%d bloggers like this: