Микроконтроллеры

STM32F4. Урок 19 — функционирование с EEprom M24C02 по I2C

Staticvoid
26 Июл 2026
2 мин чтения
3 просмотров

эта библиотека необходима для работы с микросхемой M24C02 (256Byte EEPROM) на внешнем модуле, подключенном через интерфейс I2C к STM32F4. К линиям SCL и SDA необходимо подсоединить подтягивающие вверх резисторы по 4,7кОм, иначе интерфейс работать не будет. Возможно подсоединение до 8 микросхем M24C02, но тогда необходимо использование третьего адресного вывода. Для работы библиотеки необходимо кроме того подсоединить низкоуровневую библиотеку для работы с I2C.

Демонстрация работы:

STM32F4. Урок 19 - функционирование с EEprom M24C02 по I2C

Используемые выводы:

SCL к PB6SDA к PB7

Требования:

Подключаемые модули CooCox-IDE: отсутствуют.Поддерживаемые библиотеки: STM32_UB_I2C1.

Перечисления:


typedef enum {
  M24C02_0 = 0xA0, // A2=0, A1=0, A0=0
  M24C02_1 = 0xA2, // A2=0, A1=0, A0=1
  M24C02_2 = 0xA4, // A2=0, A1=1, A0=0
  M24C02_3 = 0xA6, // A2=0, A1=1, A0=1
  M24C02_4 = 0xA8, // A2=1, A1=0, A0=0
  M24C02_5 = 0xAA, // A2=1, A1=0, A0=1
  M24C02_6 = 0xAC, // A2=1, A1=1, A0=0
  M24C02_7 = 0xAE  // A2=1, A1=1, A0=1
}I2C_ADR_M24C02_t;

Функции:


ErrorStatus UB_M24C02_Init(I2C_ADR_M24C02_t slave);                             // Инициализация EEProm
int16_t UB_M24C02_ReadByte(I2C_ADR_M24C02_t slave, uint8_t adr);                // читать байт из памяти EEPROM
int16_t UB_M24C02_WriteByte(I2C_ADR_M24C02_t slave, uint8_t adr, uint8_t wert); // писать байт в память EEPROM

Пример использования:


//--------------------------------------------------------------
// File     : main.c
// Datum    : 07.03.2013
// Version  : 1.0
// Autor    : UB
// EMail    : mc-4u(@)t-online.de
// Web      : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Module   : CMSIS_BOOT, M4_CMSIS_CORE
// Funktion : Demo der M24C02 Library
// Hinweis  : Diese zwei Files muessen auf 8MHz stehen
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_m24c02.h"
#include "stm32_ub_led.h"

int main(void)
{
  ErrorStatus check;
  int16_t wert;

  SystemInit(); // инициализация настроек кварца

  UB_Led_Init(); // инициализация светодиодов

  // инициализация EEprom через I2C-1 с адресом 0xA2
  check=UB_M24C02_Init(M24C02_1);
  if(check==SUCCESS) {
	  UB_Led_On(LED_GREEN);

	  // записать значение 0x12 по адресу 0x03
	  UB_M24C02_WriteByte(M24C02_1,0x03,0x12);
	  // зачитать новое значение
	  wert=UB_M24C02_ReadByte(M24C02_1,0x03);
	  // проверка, все ли в порядке
	  if(wert==0x12) {
		  UB_Led_On(LED_BLUE);
	  }
	  else {
		  UB_Led_On(LED_ORANGE);
	  }
  }
  else {
	  UB_Led_On(LED_RED);
  }

  while(1)
  {

  }
}

В приложении проектCooCoxи отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

Оригинал статьи

  • ub_stm32f4_i2c_m24c02_v100_rus.rar(8 Кб)
  • Demo_19_I2C_M24C02_rus.rar(197 Кб)
  • STM32
  • CooCox CoIDE
  • Перевод

Staticvoid

Администратор сайта https://www.radiomasters.ru/

Администратор сайта https://www.radiomasters.ru/

Комментарии (0)

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие статьи