Найти в Дзене
Электроника и жизнь

Запись больших объемов данных в несколько чипов EEPROM

Здравствуйте, уважаемые читатели! В прошлой статье "Последовательное соединение модулей памяти EEPROM. Увеличиваем объем EEPROM памяти до 512 КБ" я рассказывал как подключить несколько модулей внешней энергонезависимой памяти EEPROM к Ардуино и осуществить в них запись и чтение. Там при записи и при чтении мы указывали каждый раз адрес чипа памяти, с которым в данный момент работаем. Но на практике, если нам необходимо сохранить большой объем данных, который превосходит объем памяти одного чипа, но меньше суммарного объема всех подключенных чипов, неудобно задумываться каждый раз о том, в какой чип мы пишем. Нам нужно записать в память весь объем данных, а задачу распределить эти данные по конкретным чипам памяти мы поручим программе. Именно о таких двух скетчах мы и поговорим в этой статье. Один позволит записать данные в EEPROM память, а второй считать. Для примера возьмем 3 модуля памяти разного номинала. Первый чип 24LC02 имеет объем памяти 256 байт. Второй чип 24LC32 объемом памят
Оглавление

Здравствуйте, уважаемые читатели! В прошлой статье "Последовательное соединение модулей памяти EEPROM. Увеличиваем объем EEPROM памяти до 512 КБ" я рассказывал как подключить несколько модулей внешней энергонезависимой памяти EEPROM к Ардуино и осуществить в них запись и чтение. Там при записи и при чтении мы указывали каждый раз адрес чипа памяти, с которым в данный момент работаем. Но на практике, если нам необходимо сохранить большой объем данных, который превосходит объем памяти одного чипа, но меньше суммарного объема всех подключенных чипов, неудобно задумываться каждый раз о том, в какой чип мы пишем. Нам нужно записать в память весь объем данных, а задачу распределить эти данные по конкретным чипам памяти мы поручим программе. Именно о таких двух скетчах мы и поговорим в этой статье. Один позволит записать данные в EEPROM память, а второй считать.

Для примера возьмем 3 модуля памяти разного номинала. Первый чип 24LC02 имеет объем памяти 256 байт. Второй чип 24LC32 объемом памяти 4 килобайта. И третий чип 24LC512 объемом памяти 64 КБ.

-2

Размещаем чипы на макетной плате и подключаем ровно также, как подключали в прошлой статье.

-3

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

-4

Запись данных в EEPROM

В первом скетче (ссылка на скетч в конце статьи) будем записывать картинки в EEPROM память. Здесь, после подключения библиотеки Wire и массива с картинками создаем 2 массива: первый с адресами модулей памяти, которые соответствуют их подключению. А во втором массиве размер памяти каждого модуля в байтах. Информацию мы будем записывать блоками по 16 байт. Какой бы чип памяти у нас не был, его размер в любом случае будет кратен 16 байтам.

-5

Ключевой в скетче является функция EEPROMWriteBlock(). Ей мы передаем блок данных для записи из 16 байт и адрес, в который эти данные нужно записать. А функция уже определяет номер чипа в который нужно записать блок данных и адрес памяти для записи внутри самого чипа.

Так же если мы зададим адрес, который превосходит суммарный объем всех подключенных модулей памяти, у нас появится сообщение об ошибке.

В конце выводим в Монитор порта объем записанных байт и сколько у нас это заняло времени в миллисекундах.

-6

Чтение данных из EEPROM

Для чтения данных из подключенных к Ардуино модулей EEPROM используем другой скетч (ссылка на скетч в конце статьи). Где схожая по принципу работы функция EEPROMReadBlock() производит чтение из модулей EEPROM. После чтения, полученный массив данных превращается в кадр для анимации, которую мы выводим на светодиодную матрицу. Переход между анимациями осуществляется по нажатию на кнопку.

-7

Таким образом мы можем хранить не только картинки, но и любые другие данные, суммарным объемом (при использовании 8 чипов 24LC512), до 512 КБ.

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

Ссылка на скетч записи в EEPROM - https://disk.yandex.ru/d/WYUJdk01q42LpQ

Ссылка на скетч чтения из EEPROM - https://disk.yandex.ru/d/poOsDuQ4Av4PXw

_________________________________________________________

Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!

Другие публикации по теме: