Eeprom память что это
В данной статье речь пойдет об энергонезависимой памяти EEPROM (электрически стираемое программируемое постоянное запоминающее устройство). Как видно из названия EEPROM является разновидностью ПЗУ , важной особенностью которой является возможность перезаписывать хранимые в памяти значения (в отличие от FLASH-памяти) во время выполнения скетча и сохранять после отключения питания.
Энергонезависимая память EEPROM прекрасно подходит для хранения настроек работы устройства , которые были выбраны пользователем во время его работы и должны быть сохранены при отключении питания. Например, пользователь может задать определенную температуру, при которой микроконтроллер должен включить нагревательный элемент. Или определенную влажность почвы, при которой будет включен автополив. Определенную освещенность, при которой будет включено освещение и т.д. Так же в данной памяти можно логировать данные , получаемые от внешних датчиков и возникающие в процессе работы ошибки для последующей отладки.
В размещенной ниже таблице можно посмотреть сравнение различных типов памяти у микроконтроллеров серии ATtiny и микроконтроллера ATmega328 (основы Arduino UNO).
Как видно из таблицы, размер EEPROM либо равен размеру памяти SRAM (оперативной памяти), либо даже меньше неё. И существенно меньше размера FLASH-памяти (памяти для хранения кода программы).
Работа с памятью EEPROM в среде Arduino UNO отличается от работы с памятью SRAM. При работе с оперативной памятью нам не нужно заботиться, где именно располагается значение переменной, к которой мы обращаемся. Т.к. на этапе компиляции программы под каждую переменную, в зависимости от ее размера, выделяется блок памяти, где и хранится значение переменной. Мы же извлекаем это значение или перезаписываем его, обращаясь к переменной по имени.
При работе с памятью EEPROM мы должны указывать непосредственно адрес байта, в котором храниться переменная . Учитывая, что переменные bool, char, byte – занимают 1 байт, переменные int, word - 2 байта, а переменные long, float – 4 байта.
Т.е. в память EEPROM ATtiny13 можно записать 64 значения переменной типа byte, 32 значения переменной типа int и 16 значений переменной типа long. При этом в качестве адреса ячейки памяти при записи и чтении мы указываем номер первого байта переменной.
Для работы с памятью EEPROM в среде Arduino IDE служит специальная библиотека EEPROM.h . В её примерах есть несколько скетчей, показывающих как работать с основными функциями библиотеки.
Память с изменением фазового состояния
Третий перспективный вид памяти — память на основе фазового перехода. Данный вид памяти использует свойства халькогенидов переключаться между кристаллическим и аморфным состоянием при нагреве.
Халькогениды — бинарные соединения металлов с 16-ой группой (6-ой группы главной подгруппы) периодической таблицы Менделеева. Например, в CD-RW, DVD-RW, DVD-RAM и Blu-ray дисках используются теллурид германия (GeTe) и теллурид сурьмы (III) (Sb2Te3).
Исследования по применению фазового перехода для хранения информации проводились в 1960-ые года Стэнфордом Овшинским (Stanford Ovshinsky), но тогда до коммерческой реализации дело не дошло. В 2000-х снова возник интерес к технологии, Samsung запатентовала технологию, позволяющую переключать бит за 5 нс, а Intel и STMicroelectronics увеличили количество состояний до четырех, тем самым увеличив возможный объем вдвое.
При нагреве выше точки плавления халькогенид теряет кристаллическую структуру и, остывая, превращается в аморфную форму, характеризующуюся высоким электрическим сопротивлением. В свою очередь при нагревании до температуры выше точки кристаллизации, но ниже точки плавления халькогенид возвращается в кристаллическое состояние с низким уровнем сопротивления.
Память с изменением фазового перехода не требует «подзарядки» с течением времени, а также не восприимчива к радиационному излучению, в отличие от памяти на электрических зарядах. Такой тип памяти может сохранять информацию в течение 300 лет при температуре 85°С.
Считается, что разработка Intel, технология 3D Crosspoint (3D XPoint) использует именно фазовые переходы для хранения информации. 3D XPoint используется в накопителях Intel® Optane™ Memory, для которых заявлена большая износостойкость.
Flash-память
Flash-память, совмещающая лучшие черты EPROM и EEPROM, разработана японским профессором Фудзио Масуокой (Fujio Masuoka), инженером компании Toshiba, в 1980 году. Первая разработка получила название Flash-память типа NOR и, как и ее предшественники, основана на полевых МОП-транзисторах с плавающим затвором.
Flash-память типа NOR — это двухмерный массив транзисторов. Затворы транзисторов подключены к линии слов, а стоки — на линию битов. При подаче напряжения на линию слов транзисторы, содержащие электроны, то есть хранящие «единицу», не откроются и ток не потечет. По наличию или отсутствию тока на линии бита делается вывод о значении бита.
Спустя семь лет Фудзио Маусока (Fujio Masuoka) разработал Flash-память типа NAND. Данный вид памяти отличается количеством транзисторов на битовой линии. В памяти типа NOR каждый транзистор напрямую подключен к битовой линии, в то время как в NAND-памяти транзисторы подключены последовательно.
Чтение из памяти такой конфигурации сложнее: на необходимую линию слова подается напряжение, необходимое для чтения, а на все остальные линии слова подается напряжение, которое открывает транзистор вне зависимости от уровня заряда в нем. Так как все остальные транзисторы гарантированно открыты, то наличие напряжения на битовой линии зависит только от одного транзистора, на которое подано напряжение чтения.
Изобретение Flash-памяти типа NAND позволяет значительно уплотнять схему, размещая бо́льший объем памяти при тех же размерах. До 2007 года объем памяти увеличивали путем уменьшения производственного техпроцесса чипа.
В 2007 году компания Toshiba представила новую версию NAND-памяти: Vertical NAND (V-NAND), также известную как 3D NAND. В этой технологии делается акцент на размещение транзисторов в несколько слоев, что вновь позволяет уплотнить схему и увеличить объем памяти. Тем не менее, уплотнение схемы не может повторяться до бесконечности, поэтому исследовались другие методы увеличения хранимого объема памяти.
Изначально каждый транзистор хранил два уровня заряда: логический ноль и логическую единицу. Такой подход называется Single-Level Cell (SLC). Накопители с такой технологией отличаются высокой надежностью и максимальным количеством циклов перезаписи.
Со временем было принято решение увеличить объем накопителей ценой износостойкости. Так количество уровней заряда в ячейке до четырех, а технологию назвали Multi-Level Cell (MLC). Следом появились Triple-Level Cell (TLC) и Quad-Level Cell (QLC). В будущем появится новый уровень — Penta-Level Cell (PLC) с пятью битами в одной ячейке. Чем больше бит помещается в одну ячейку, тем больше объем накопителя при той же стоимости, но меньше износостойкость.
Уплотнение схемы уменьшением техпроцесса и увеличения количества бит в одном транзисторе негативно сказываются на хранимых данных. Несмотря на то, что в EPROM и EEPROM используются те же самые транзисторы, EPROM и EEPROM способны хранить данные без питания десять лет, в то время как современная Flash-память может все «забыть» уже через год.
Использование Flash-памяти в космической индустрии затруднительно, так как радиация пагубно влияет на электроны в плавающих затворах.
Перечисленные проблемы мешают Flash-памяти стать безоговорочным лидером в области хранения информации. Несмотря на то, что накопители на базе Flash-памяти широко распространены, ведутся исследования других видов памяти, лишенных этих недостатков, среди которых хранение информации в магнитных моментах и фазовых состояниях.
Заключение
Физическое устройство твердотельных накопителей претерпело множество изменений за более, чем полувековую историю, однако, каждое из решений имеет свои недостатки. Несмотря на неоспоримую популярность Flash-памяти, несколько компаний, среди которых Samsung и Intel, прорабатывают возможность создания памяти на магнитных моментах.
Сокращение износа ячеек, их уплотнение и повышение общей емкости накопителя — вот направления, которые в настоящий момент являются перспективными для дальнейшего развития твердотельных накопителей.
Протестировать самые крутые на сегодняшний день накопители NAND и 3D XPoint можно уже сейчас в нашей Selectel LAB.
Как вы считаете, будет ли технологии хранения информации на электрических зарядах вытеснена другими, например, кварцевыми дисками или оптической памятью на нанокристаллах соли?
Микросхемы памяти применяют для долгого хранения данных-энергонезависимое постоянное запоминающее устройство-ПЗУ,и для временного хранения данных-энергозависимое оперативное запоминающее устройство -ОЗУ.Микросхемы ПЗУ бывают:PROM,EPROM,EEPROM и FLASH память.
EPROM-запоминающее устройство,память,имеет многократные циклы записи с помощью программатора и стирания ультрафиолетом.На корпусе микросхемы можно увидеть Vpp=23В-это напряжение программирования.На каждый бит приходится один полевой транзистор.При прошивке,идет заряд электронами плавающего затвора,этот заряд может сохраняться десятки лет.Чтобы стереть информацию,кристалл облучают ультрафиолетом потоком фотонов,специальной лампой.Фотоны воздействуют на электроны и заряд рассеивается.Стекло на корпусе микросхемы затеняют изолентой, стереть информацию может солнечный свет в течении одной недели.
Микросхема EEPROM-электрически стираемая перепрограммируемая ПЗУ.Одна из подобных микросхем-кр1628рр2,емкостью 1кбит.
FLASH память,это EEPROM,также электрически стираемая и перепрограммируемая ПЗУ,но имеет большую емкость,скорость работы и низкое энергопотребление.
PROM-однократно программируемое ПЗУ,постоянная память с пережигаемыми перемычками.При прошивке,внутри сжигаются перемычки и такую микросхему уже не перепрошить.
Далее идет энергозависимая память или RAM.На такую память надо подавать питание,для сохранения информации,при отсутствии питания,информация стирается.К RAM(ОЗУ) памяти относится DRAM и SRAM.
DRAM-динамическая память,известная оперативная память компьютера.Для хранения бита используют заряженный конденсатор с транзистором.Заряд конденсатора уменьшается динамически во времени и этот заряд надо периодически восстанавливать(регенерация).
На старых компьютерах,для оперативной памяти использовали кр565ру6 или подобные микросхемы,в количестве десятков штук на плате.
SRAM-статическая память.Эту память не нужно регенерировать,она ститична,быстродейственна,запоминающей ячейкой является триггер.Но емкость такой памяти меньше,чем у динамической.
Память на основе электрических зарядов
Кодирование информации с помощью отрицательного заряда лежит в основе нескольких решений:
- стираемые ультрафиолетом ПЗУ (EPROM);
- электрически стираемые ПЗУ (EEPROM);
- Flash-память.
Каждая ячейка памяти — это полевой МОП-транзистор с плавающим затвором, в котором хранится отрицательный заряд. Его отличие от обычного МОП-транзистора заключается в наличии плавающего затвора — проводника в слое диэлектрика.
При создании разности потенциалов между стоком и истоком и наличии положительного потенциала на затворе от истока к стоку потечет ток. Однако, при наличии достаточно большой разности потенциалов некоторые электроны «пробивают» слой диэлектрика и оказываются в плавающем затворе. Это явление называется туннельный эффект.
Отрицательно заряженный плавающий затвор создает электрическое поле, мешающее протеканию тока от истока к стоку. Более того, наличие электронов в плавающем затворе увеличивает пороговое напряжение, при котором открывается транзистор. При каждой «записи» в плавающий затвор транзистора слой диэлектрика незначительно повреждается, что накладывает ограничение на количество циклов перезаписи каждой ячейки.
Полевые МОП-транзисторы c плавающим затвором были разработаны Давоном Кангом (Dawon Kahng) и Саймоном Мин Зи (Simon Min Sze) из Bell Labs в 1967 году. Позднее, при исследовании дефектов интегральных схем, было замечено, что из-за заряда в плавающем затворе изменилось пороговое напряжение, открывающее транзистор. Это открытие побудило Дова Фромана (Dov Frohman) начать работу над памятью на основе этого феномена.
Изменение порогового напряжения позволяет «программировать» транзисторы. Транзисторы с зарядом в плавающем затворе не откроются при подаче на затвор напряжения больше порогового напряжения для транзистора без электронов, но меньше порогового напряжения для транзистора с электронами. Назовем такое значение напряжением чтения.
Основные функции библиотеки EEPROM.h.
EEPROM.length () - возвращает размер памяти EEPROM в байтах.
EEPROM.write (address, value) – записывает значение value величиной 1 байт (0-255) по адресу address (от 0 до EEPROM.length()).
EEPROM.read(address) – читает и возвращает байт данных, размещенной по адресу address.
EEPROM.update(address, value) – обновляет байт памяти (записывает новое значение), если новое значение отличается от текущего. Этот вариант записи значения переменной предпочтительнее, т.к. продлевает срок службы памяти, уменьшая число перезаписей.
EEPROM.put(address, data) – автоматически вычисляет размер и записывает данные любого типа по адресу address .
С помощью данной функции можно размещать в памяти переменные разных размеров.
Например, можно последовательно записывать в память переменные разной длины:
не забывая вычислять размер переменной в байтах и сдвигать начальный байт записи на данный размер:
Так же можно объединить значения переменных в массив или сами переменные в структуры и записывать с помощью функции EEPROM.put() массив или структуру целиком.
EEPROM.get(address, data) – считывает данные по адресу address и заносит их в указанную переменную data .
Естественно, что тип и размер данных, записанных с помощью функции EEPROM.put(), должен совпадать с типом и размером данных, читаемых функцией EEPROM.get(). В примерах библиотеки есть скетчи, иллюстрирующие работу этих функций.
Еще в библиотеке есть оператор EEPROM[] , который позволяет работать с памятью EEPROM как с массивом байтов.
В следующей статье, я расскажу, как увеличить объем памяти EEPROM до 64 КБ . Это будет особенно актуально для микроконтроллеров с малым объемом всех типов памяти, таких как ATtiny .
За счет того, что скорость чтения данных из памяти EEPROM очень велика, мы можем использовать внешнюю память EEPROM как дополнительную оперативную память, либо хранить в ней достаточно объемные массивы данных. Например, шрифты для работы с LED-матицами и LCD-дисплеями. В статье " Создание анимации для LED матрицы 16x16 адресных светодиодов ", мы хранили массив изображения с помощью ключевого слова PROGMEM во FLASH-памяти (из-за нехватки оперативной памяти). Подключив внешнюю EEPROM память, изображения и шрифты можно будет хранить во внешней памяти , оставив FLASH-память исключительно для того, для чего она и предназначена, т.е. для хранения прошивки микроконтроллера.
Спасибо, что дочитали до конца! Если статья понравилась, нажмите, пожалуйста, соответствующую кнопку. Если интересна тематика электроники и различных электронных самоделок, подписывайтесь на канал. До встречи в новых статьях!
Забросил я уроки для начинающих, сегодня поговорим о EEPROM — энергонезависимой памяти.
Эта память одно из главных составляющих в функционале поделок на микроконтроллерах, любой начинающий микроконтроллерщик подходит к этапу освоения этой энергонезависимой памяти. Оно и ежу понятно, что сохранять настройки очень часто надо, нужно и без этого нельзя.
В даташитах все рассусолено сухим техническим языком про особенности работы еепром, я же остановлюсь на основополагающих правилах использования этой памяти, правильную на мой взгляд.
Объявляется еепром так же как и переменная, работают с еепром так же как с переменной, кроме некоторых но. Пример (Code Vision AVR):
unsigned char a; // объявляем беззнаковую переменную размером 8 бит
unsigned char eeprom eea; // объявляем "переменную" в еепром такого же типа, этого достаточно, всю остальную работу делает компилятор.
Переменную я обозвал в кавычках, ибо с ней можно обращаться как с обычной переменной, а в остальном она ведет себя по другому:
1. — значение хранимое в ЕЕПРОМ по умолчанию равно максимально возможному числу, в нашем случае после объявления в eea лежит число 255 или оно же 0xFF или оно же 0b11111111.
2- количество циклов стирания-записи у памяти ЕЕПРОМ относительно мало, поэтому нужно максимально ограничивать число записей в алгоритме программы.
3. Память ЕЕПРОМ самый тормозной тип данных, это нужно учитывать. Особенно при записи в ЕЕПРОМ. Можно получить каку, например, запихнув обработку еепром в прерываниях. В особо ответственных моментах можно использовать флаги состояния памяти ЕЕПРОМ, бывает очень полезно.
После обявления еепром и переменной я делаю команду присвоения числа из еепром в переменную, до начала основного цикла и как правило до начала работы прерываний:
После этого я верчу как хочу эту переменную, пишу в нее, читаю, используя ее в алгоритме и в нужный момент, когда нужно сохранить делаю так, чтоб данные закатились из этой переменной обратно в ЕЕПРОМ единожды:
Вот пример куска кода записи в ЕЕПРОМ:
unsigned char a; // объявляем беззнаковую переменную размером 8 бит
unsigned char eeprom eea; // объявляем еепром такого же типа,
unsigned char trig; // объявляем переменную, которая будет помнить, что кнопка нажата.
Далее идет основанная часть программы void main(void), в ней :
a=eea; // загоняем данные в с еепром в переменную
Далее идет главный цикл while(1) и в теле цикла:
if(key==1) // если кнопка настройки нажата, то:
trig=1; // включаем триггер, который запоминает, что кнопка нажата
a*b+b^2 ; //тут что то делаем нужное, когда кнопка нажата
>
else // если кнопка отжата
LED=1 ; //тут что то делаем нужное, когда кнопка отжата
if(trig) //если кнопка отжата и триггер включен, то:
eea=a; // пишем переменную а в еепром
trig=0; // сбрасываем триггер
>
>
Запись в ЕЕПРОМ срабатывает по отжатию кнопки единожды, когда триггер равен единице.
Всем привет, в это раз хочу осветить саму распространенную хитрость перекупов а это сматывание пробега электронных одометров. В периуд высоких технологий все сложные электроприборы у которых есть процессоры имеют внешнюу энергонезависимую память. За частую это небольшие микросхемы память EEPROM (англ. Electrically Erasable Programmable Read-Only Memory) — электрически стираемое перепрограммируемое ПЗУ (ЭСППЗУ). EEPROM разного назначения имеет разные объемы памяти, и различные интерфейсы передачи данных. Но нас интересует память с нашим пробегом, что бы узнать что за память хранит наш пробег разбираем приборку, ищем процессор (микросхема у которой очень много ножек) рядом микруха памяти имеет 8 ног . В моем случае это 93С56 объем памяти 256 байт.
Аккуратно ее выпеваем.
Теперь нужно считать ее прошивку, для этого нужен программатор.
Если по чистой случайности у вас его нет, то собираем с нуля.
Для сбора простейшего программатора вам потребуется COM порт (RS-232) если на задней панели компьютера его нет то вам потребуется переходник USB-COM (RS-232)
Дальше нужно собрать простейшую цепь для подключения память к разъему com порта.
Проверяйте по 10 раз как вы все подключили перед подключением к ПК!
У меня получилась вот такая ЗАЛИПУХА :)
Далее дело за программной частью
Незабываем устанавливливать драйвера на переходник USB-COM
Качаем с просторв интернет программулину PonyProg
Ну я по старинке пользовался IC-PROG (только для ОС XP)
Не забывайте о разрядности вашей ОС ищите программы для вашей ОС.
Если программы скачены и даже работают, настройте адаптер у PonyProg вкладка setup ->interface Setup
Выберите ваш COM порт назначенный системой вашему USB-com переходнику.
interface Setup">
Далее, выбираем в правом верхнем углу тип памяти и название,
Ну и пытайтесь считать прошивку.
Должно считать примерно так
Далее сохраняем прошивку в качестве гарантии, что бы можно было вернуть прошивку в первоначальном виде.
Теперь нам понадобиться программа калькулятор пробега, программа под названием carculator V-1.07
Находим в программе свое авто, (моего авто не было, по анологии понял куда вписывать новые данные).
Вбиваем в программу нужный пробег, и нажимаем Calculate он выдает преобразованный пробег в шестнадцатеричном виде, далее ставим галочку swap и опять нажимаем Calculate, мы получили набор символов который нужно вставить в определенную область памяти. Программа carculator v1.07 при выборе авто показывает в какие строки и ячейки нужно вставить новые данные с примером.
Далее меняем в программе редактора памяти значения на новые, и программируем контроллер.
Ворачиваем его в приборку, для удобства в приборку припаял сокет 8 ног, что бы постоянно не выпаивать микруху а просто вставлять.
Метаморфозы моего пробега ))
Прошлые части цикла «Введение в SSD» поведали читателю про историю появления SSD-накопителей, интерфейсы взаимодействия с ними и популярные форм-факторы. Четвёртая часть расскажет о хранении данных внутри накопителей.
В предыдущих статьях цикла:
Каждая ячейка твердотельного накопителя хранит один или несколько бит информации. Для хранения информации используются различные физические процессы. При разработке твердотельных накопителей прорабатывались следующие физические величины для кодирования информации:
- электрические заряды (в том числе Flash-память);
- магнитные моменты (магниторезистивная память);
- фазовые состояния (память с изменением фазового состояния).
Магниторезистивная память
Кодирование информации магнитными моментами появилось в 1955 году в виде памяти на магнитных сердечниках. До середины 1970-х годов ферритовая память была основным видом памяти. Чтение бита из памяти такого типа приводило к размагничиванию кольца и потере информации. Таким образом, после чтения бита его приходилось записывать обратно.
В современных разработках магниторезистивной памяти вместо колец используется два слоя ферромагнетика, разделенные диэлектриком. Один слой является постоянным магнитом, а второй меняет направление намагниченности. Чтение бита из такой ячейки сводится к измерению сопротивления при пропускании тока: если слои намагничены в противоположные стороны, то сопротивление больше и это эквивалентно значению «1».
Ферритовая память не требует постоянного источника питания для поддержания записанной информации, однако магнитное поле ячейки может влиять на «соседа», что накладывает ограничение на уплотнение схемы.
Согласно JEDEC SSD-диски на базе Flash-памяти без питания должны сохранять информацию как минимум три месяца при температуре окружающей среды 40°С. Разработанный Intel чип на базе магниторезистивной памяти обещает сохранить данные десять лет при температуре 200°С.
Несмотря на сложность разработки, магниторезистивная память не деградирует во время использования и имеет лучшее быстродействие среди остальных видов памяти, что не позволяет списать со счетов этот вид памяти.
Erasable Programmable Read-Only Memory
В 1971 году сотрудник Intel, Дов Фроман (Dov Frohman), создал перезаписываемую память на транзисторах, названную Erasable Programmable Read-Only Memory (EPROM). Запись в память проводилась с помощью специального устройства — программатора. Программатор подает на чип более высокое напряжение, чем применяется в цифровых схемах, тем самым «записывает» электроны в плавающие затворы транзисторов, где это необходимо.
В EPROM-памяти не предполагалась очистка плавающих затворов транзисторов электрическим способом. Вместо этого предлагалось воздействовать на транзисторы сильным ультрафиолетовым излучением, фотоны которого придают электронам энергию, необходимую, чтобы покинуть плавающий затвор. Для доступа ультрафиолета вглубь чипа на корпус добавлено кварцевое стекло.
EPROM-память дороже применявшихся ранее «одноразовых» постоянных запоминающих устройств (ПЗУ), однако возможность перепрограммирования позволяет отлаживать схемы быстрее и сократить время разработки нового аппаратного обеспечения.
Перепрограммирование ПЗУ ультрафиолетовым светом был значительным прорывом, однако, идея электрической перезаписи уже «витала» в воздухе.
Electrically Erasable Programmable Read-Only Memory
В 1972 году три японца: Ясуо Таруи (Yasuo Tarui), Ютака Хаяши (Yutaka Hayashi) и Кийоко Нагаи (Kiyoko Nagai) представили первое электрически стираемое постоянное запоминающее устройство (Electrically Erasable Programmable Read-Only Memory, EEPROM или E 2 PROM). Позже их научные исследования станут частью патентов на коммерческие реализации EEPROM-памяти.
Каждая ячейка EEPROM-памяти состоит из нескольких транзисторов:
- транзистор с плавающим затвором для хранения бита;
- транзистор для управления режимом чтения-записи.
Читайте также: