Главная » Ардуино » Подключение 24LC256 EEPROM к Ардуино. Руководство

Подключение 24LC256 EEPROM к Ардуино. Руководство

Сегодня мы рассмотри пример использования EEPROM 24LC256 совместно с Ардуино. Подключив этот чип к Ардуино, мы с легкостью можем увеличить доступную память на 32 КБ.

Технические характеристики 24LC256

Ниже представлены характеристики микросхемы внешней памяти 24LC256 от Microchip:

  • Тип памяти: EEPROM
  • Объем памяти: 256Kбит (32K x 8)
  • Максимальная частота: 400kHz
  • Время доступа: 900нс
  • Ток потребления: чтение 3мА / режим ожидания 1 мкА
  • Интерфейс подключения: I2C, 2-Wire Serial
  • Защита от электростатического разряда: > 4000 В
  • Выносливость: 1000000 циклов запись / стирание
  • Напряжение питания: 2,5 В…5,5 В
  • Рабочая температура: -40°C… 85°C

фото 24LC256 EEPROM

Распиновка 24LC256Распиновка 24LC256

Назначение выводов

  • A0…A2 — установка адреса устройства. В большинстве случаев используется 000.
  • Vss — земля
  • SDA — Serial Address/Data I/O
  • SCL — Serial Clock Input
  • WP — вход защиты от записи
  • Vcc — источник питания

В нашем случае мы подключим выводы A0, A1 и A2 к земле, таким образом, на них будет низкий логический уровень. Это означает, что адресные выводы будут иметь значение 000, а адрес I2C будет равен 0x50.

Если на выводы A0, A1 и A2 подать высокий уровень (111), то адрес I2C будет равен 0x57. Соответственно перебрав все комбинации, мы можем получить 8 адресов I2C.

Подключение 24LC256 к Ардуино

  • Контакт SDA (вывод 5) EEPROM подключим к аналоговому выводу 4 Arduino.
  • Контакт SCL (вывод 6) EEPROM подключим к аналоговому выводу 5 Arduino.
  • Контакт WP — это вывод защиты от записи. Подав на этот вывод высокий уровень, вы запретите запись в EEPROM. В нашем случае мы соединим его с GND.
  • К линиям SDA и SCL подключим подтягивающие резисторы сопротивлением по 10 кОм.

Вся схема подключения должна выглядеть следующим образом:

Подключение 24LC256 EEPROM к Ардуино

Можно использовать следующий модуль, у которого есть перемычки для установки адреса I2C и линии WP. Он также имеет подтягивающие резисторы по шине I2C.

Вот, можете взглянуть на принципиальную схему данного модуля, возможно, кто-то захочет собрать нечто подобное:

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

#include <Wire.h> // для I2C
#define eeprom_address 0x50 // адрес устройства
byte d=0;

void setup()
{
Serial.begin(115200); // Инициализация последовательного порта
Wire.begin();

// запись данные
Serial.println("Writing data.");
for (int i=0; i<10; i++)
{
writeData(i,i);
}
Serial.println("Complete");
// чтение данных
Serial.println("Reading data.");
for (int i=0; i<10; i++)
{
Serial.print(i);
Serial.print(" : ");
d=readData(i);
Serial.println(d, DEC);
}
Serial.println("Complete");
}

// запись байта данных в адрес ячейки памяти
void writeData(unsigned int eaddress, byte data)
{
Wire.beginTransmission(eeprom_address);
// установить положение указателя
Wire.write((int)(eaddress >> 8));
Wire.write((int)(eaddress & 0xFF));
Wire.write(data);
Wire.endTransmission();
delay(10);
}
// чтение байт данных из адреса ячейки памяти
byte readData(unsigned int eaddress)
{
byte result;
Wire.beginTransmission(eeprom_address);
// установить положение указателя
Wire.write((int)(eaddress >> 8));
Wire.write((int)(eaddress & 0xFF));
Wire.endTransmission();
Wire.requestFrom(eeprom_address,1); // получить байт данных
result = Wire.read();
return result;
}

void loop()
{
}

После загрузки скетча вы должны увидеть в мониторе последовательного порта следующее:

Оставить комментарий

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

*