At24c01a что за микросхема
Перейти к содержимому

At24c01a что за микросхема

  • автор:

AT24C01A, AT24C02, AT24C04, AT24C08, AT24C16

EEPROM-двух проводная серия с интерфейсом I 2 C
1кб (128 x 8), 2кб (256 x 8), 4кб (512 x 8), 8кб(1024 x 8),16кб (2048 x 8)

  • Низкое напряжение и стандартное напряжение работы
    — 5.0 (Vсс =от 4.5В до 5.5В)
    — 2.7 (Vсс =от 2.7В до 5.5В)
    — 2.5 (Vсс =от 2.5В до 5.5В)
    — 1.8 (Vсс =от 1.8В до 5.5В)
  • Внутренняя организация — 128×8 (1КБ), 256×8 (2КБ), 512×8 (4КБ), 1024×8 (8КБ) или 2048×8 (16КБ)
  • Последовательный двухпроводный интерфейс
  • Триггер Шмитта, фильтруемые входы для шумового подавления
  • Двунаправленный протокол передачи данных
  • Совместимость — 100 кГц (1.8В, 2.5В, 2.7В) и 400 кГц (5V)
  • Вывод защиты записи для защиты данных аппаратных средств
  • Режимы записи — 8-байтовая страница(1кб,2кб) и 16-байтовая страница(4кб,8кб,16кб)
  • Разрешена частичная запись страницы
  • Автосинхронизирующийся цикл записи (10 мс максимально)
  • Высокая надежность
    — Временной ресурс: 1 миллион циклов записи
    — Сохранение данных: 100 лет
    — ESD защита: > 3,000В
  • Доступно автомеханическое качество и большой диапазон температуры устройств
  • Корпуса — JEDEC SOIC с 8 и 14 выводами, PDIP с 8 выводами , MSOP с 8 выводами и TSSOP с 8 выводами

AT24C01A/02/04/08/16 постоянное запоминающее устройство обеспечивает 1024/2048/4096/8192/16384 битов серии электрически стираемое и программируемое (EEPROM), организованное как 128/256/512/1024/2048 слов по 8 бит. Устройство оптимизировано для использования во многих индустриальных и коммерческих приложениях, где низкая мощность и низкие напряжения работы существенны. AT24C01A/02/04/08/16 используется для экономии места (пространства) в корпусах — PDIP с 8 выводами (AT24C01A/02/04/08/16), MSOP с 8 выводами (AT24C01A/02), TSSOP с 8 выводами ( AT24C01A/02/04/08/16)и JEDEC SOIC с 8 и 14 выводами ( AT24C01A/02/04/08/16) и обращаются к ним через последовательный двухпроводной интерфейс.

В добавок все семейство доступно в 5.0В(от 4.5В до 5.5В), 2.7В(от 2.7В до 5.5В), 2.5В(от 2.5В до 5.5В) и 1.8В(от 1.8В до 5.5В) версиях.

Абсолютные максимальные номинальные значения

Рабочая температура -55°C до +125°C
Температура хранения -65°C до +150°C
Напряжение на любом выводе относительно земли -1.0В до +7.0В
Максимальное рабочее напряжение 6.25В
Постоянный ток на выходе 5.0 mA

*ВНИМАНИЕ: Напряжения вне тех, что напечатали в» Абсолютные максимальные номинальные значения » могут вызывать постоянное повреждение устройства. Это — только номинальные значения нагрузки и функциональная работа устройства при этих или любых других условиях вне тех, что указали в рабочих разделах этой спецификации, не подразумевается. Внешнее воздействие при абсолютных максимальных номинальных значениях может привести к расширению диапазонов, что может воздействует на надежность устройства.

450 Kb Engl Описание микросхемы
Rus Интерфейс I 2 C

Последовательная память EEPROM с интерфейсом I 2 C AT24

Приборы, входящие в семейство AT24C, являются последовательными электрически стираемыми и программируемыми ПЗУ емкостью от 1 до 1024 Кбит с 8-ми разрядной организацией. В режиме чтения обеспечивается чтение одного байта, последовательности байтов вплоть до полного объема памяти, а в режимах программирования обеспечивается запись как отдельного байта, так и целой страницы или ее части. Объем страницы составляет от 4 до 256 байт (в зависимости от типа прибора). Вход и выход данных организуется посредством простого двупроводного интерфейса. Все приборы семейства, за исключением AT24C01, оснащены средствами аппаратной защиты данных. Кроме того, имеется возможность каскадирования приборов семейства для увеличения доступного объема памяти (за исключением приборов AT24C01, AT24C21 и AT24C16). Все члены семейства AT24С разрабатывались для тех областей применения промышленного и бытового диапазона температур, где важны малое потребление и низкие напряжения питания, и размещены в 8-выводных, 14-выводных корпусах PDIP, JEDEC SOIC и EIAI SOIC, занимающих незначительную поверхность печатной платы.

Основные характеристики приборов семейства AT24.

Тип Ёмкость Организация Интерфейс Vcc Корпус
AT24C01 1K 128×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C01A 1K 128×8 2-wire 1.8,2.7 PDIP8,SOIC8,TSSOP8
AT24C01A Avtomotive 1K 128×8 2-wire 2.7 PDIP8,SOIC8
AT24C21 1K 128×8 2-wire 2.5 PDIP,SOIC
AT24C02 2K 256×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C02 Avtomotive 2K 256×8 2-wire 2.7 PDIP8,SOIC8
AT24C02A 2K 256×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C02A Avtomotive 2K 256×8 2-wire 2.7 PDIP8,SOIC8
AT24C02B 2K 256×8 2-wire 1.8 TSSOP8, PDIP8, MINIMAP8, SOIC8, SOT23, 5dBGA2 8
AT24C04 4K 512×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C04 Avtomotive 4K 512×8 2-wire 2.7 PDIP8,SOIC8
AT24C04A 4K 512×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C04A Avtomotive 4K 512×8 2-wire 2.7 PDIP8,SOIC8, TSSOP8
AT24C08 8K 1024×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C08A 8K 1024×8 2-wire 1.8,2.7 TSSOP8, PDIP8 ,SOIC8
AT24C08A Avtomotive 8K 1024×8 2-wire 2.7 PDIP8,SOIC8
AT24C1024B 1M 131072×8 2-wire 1.8, 2.7 PDIP8, LAP8, SOIC (EIAJ) 8,SAP8
AT24C11 1k 128×8 2-wire 1.8,2.7 TSSOP8, PDIP8, SOIC8
AT24C11 Avtomotive 1k 128×8 2-wire 2.7 TSSOP8, PDIP8, SOIC8
AT24C128 128K 16384×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP,LAP,dBGA
AT24C128 Avtomotive 128k 16384×8 2-wire 2.7 TSSOP8, PDIP8, SOIC8
AT24C16 16K 2048×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C164 16K 2048×8 2-wire 1.8,2.7 PDIP,SOIC
AT24C16A 16K 2048×8 2-wire 1.8,2.7 PDIP8,SOIC8,TSSOP8
AT24C16A Avtomotive 16K 2048×8 2-wire 2.7 PDIP8,SOIC8
AT24C256 256K 32768×8 2-wire 1.8,2.7 PDIP8,SOIC8,TSSOP8,LAP8,dBGA8
AT24C256 Avtomotive 256K 32768×8 2-wire 2.7 PDIP8,SOIC8,TSSOP8
AT24C256B 256K 32768×8 2-wire 1.8,2.7 TSSOP8, PDIP8, MSOP—MAP8, SOIC8, dBGA28
AT24C32 32K 4096×8 2-wire 1.8,2.7 PDIP,SOIC
AT24C32A 32K 4096×8 2-wire 1.8,2.7 TSSOP8, PDIP8, SOIC8, SOIC(EIAJ) 8
AT24C32A Avtomotive 32K 4096×8 2-wire 1.8,2.7 TSSOP8, PDIP8, SOIC8
AT24C512 512K 65536×8 2-wire 1.8,2.7 PDIP8,SOIC8,TSSOP8,LAP8,SOIC(EIAJ)8
AT24C512B 512K 65536×8 2-wire 1.8 PDIP8,SOIC8,TSSOP8,LAP8,dBGA8
AT24C64 64K 8192×8 2-wire 1.8,2.7 PDIP,SOIC,TSSOP
AT24C64A 64K 8192×8 2-wire 1.8,2.7 PDIP8,SOIC8,TSSOP8,SOIC(EIAJ)8
AT24C64A Avtomotive 64K 8192×8 2-wire 1.8,2.7 TSSOP8, PDIP8, SOIC8
AT24C64B 64K 8192×8 2-wire 1.8,2.7 PDIP8,SOIC8,TSSOP8
AT24HC02B 2K 256×8 2-wire 1.8 PDIP8,SOIC8,TSSOP8
AT24CS128 128K 16384×8 2-wire 1.8,2.7 PDIP,SOIC

Примеры применения и программ:

RUS Подключение последовательных ЭСППЗУ 24CXX к микроконтроллерам семейства MCS51

Методика подсчета количества микросхем

Важной характеристикой универсального программатора, с точки зрения покупателя, является количество поддерживаемых (программируемых) микросхем. Это практически единственная характеристика, которая предоставляется не в описательном, а количественном виде и, поэтому, легка для беглого сравнения. Кажется, что этот параметр невозможно исказить. Однако именно количество программируемых микросхем наиболее часто используется для введения потенциальных покупателей в заблуждение.

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

Типичные способы завышения количества микросхем

Начнем с конкретного примера.

Фрагмент списка поддерживаемых микросхем взят с сайта одного из отечественных производителей программаторов:

AT24C01A

AT24C01A [ISP Mode]

AT24C01A-10xE-1.8

В списке этого производителя программаторов микросхема AT24C01A производства фирмы Microchip поименована 14 раз, как показано в столбцах A и B. Обратимся к документации производителя. В документации описана только микросхема AT24C01A и лишь в конце документа, в разделе «Информация для заказа» находим расшифровку дополнительных символов, следующих за обозначением микросхемы:

AT24C01

A

P

  1. Обозначение микросхемы
  2. Версия микросхемы
  3. Время записи
  4. Корпус
  5. Температурный диапазон С, E, I, J
  6. Минимальное напряжение 1.8V, 2.5V, 2.7V или 5.0V

Совершенно очевидно, что температурный диапазон работы микросхемы не влияет на параметры программирования, если вы конечно не собираетесь ее программировать при температуре, скажем минус 35 градусов. Минимальное напряжение также не существенно, если программатор не имеет встроенной системы измерения параметров микросхемы (а он ее не имеет), ведь номинальное напряжение программирования от указанного минимального до 5.5V, то есть при напряжении 5.0V все микросхемы можно программировать. Исключение составит режим внутрисхемного программирования, когда важно уравнять напряжение работы программатора и напряжение питания целевого устройства. Удалим явную накрутку — получилось всего 5 микросхем (столбец С).

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

Но и это еще не все! Раньше эти микросхемы выпускала фирма Atmel. Если заглянуть в список программируемых микросхем этого программатора, то мы найдем там ровно этот же список! А если учесть, что микросхема AT24C01 выпускалась в 3 версиях: AT24C01, AT24C01A и AT24C01B, а в настоящее время выпускается AT24C01С. Разные версии микросхем отличаются технологическими, и зачастую электрическими параметрами, но эти отличия не существенны, микросхемы взаимозаменяемы даже в аппаратуре, а уж по программированию они вообще, как правило, не отличаются! Но в списке программатора они продублированы.

Итог: количество микросхем завышено как минимум в 22 раза!

В этом примере использованы способы накрутки :

  • Разные бренды производителей одинаковых микросхем;
  • Дублирование режима внутрисхемного программирования для каждого корпуса;
  • Использование различий в параметрах микросхем, не влияющих на программирование;
  • Включение микросхем и корпусов реально не поддерживаемых.

Какие еще, кроме расмотренных в примере, применяются методы накрутки ?

  • Дублирование микросхемы с разными протоколами работы, не влияющими на результат программирования,
    например, для микросхемы 29LF800 восьмибитный и шестнадцатибитный режимы;
  • Включение микросхемы с расширенным диапазоном питания несколько раз для каждого рабочего напряжения;
    например, 2.5V, 3.3V, 5.0V
  • Включение реально не поддерживаемых микросхем.

На это можно возразить: это все сделано ради удобства пользователя, чтобы он не задумывался, чем отличается AT24C01 производства Atmel от AT24C01С производства Microchip. Но правда в том, что Microchip не производила AT24C01, к ним производство перешло начиная с AT24C01C. А включать в список микросхемы многократно с разным температурным диапазоном? А задавать название в формате AT24C01A-10xJ-1.8 который ну никак не ради удобства пользователя! На самом деле цель одна: создать видимость крутизны программатора.

Занижение реальной цены программатора

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

Отдельные производители вообще не заморачиваются с какой-либо методикой подсчета, а просто пишут: всего NNN микросхем, с учетом переходных панелек MMM микросхем, где цифра MMM по всей видимости просто взята из головы.

Сравнение количества микросхем для программаторов ChipStar

Итак, попробуем подсчитать количество микросхем программируемых программаторами ChipStar по разной методике:

Метод 1. Это метод с использованием описанных накруток кроме включения реально не поддерживаемых микросхем.

Метод 2. Подсчет реального количества микросхем учитывающих только микросхемы с различными обозначениями, корпусами и разными параметрами программирования.

Метод 3. Подсчет количества без учета аналогов разных брендов, корпусов с одинаковой разводкой выводов, микросхем с параметрами программирования, отличающимися несущественно, с разными напряжениями программирования и питания, с ранами объемами памяти. Так никто не считает, но этот метод хорошо позволяет оценить сложность программного обеспечения и реальную универсальность программатора. Будем называть этот параметр «возможности программатора».

Результаты сравнения представлены на рисунке 1.

Рисунок 1.

Параметр «возможности программатора» плохо виден на фоне накрученного количества, поэтому подробнее его можно рассмотреть на рисунке 2:

Рисунок 2.

На рисунке 3 представлено соотношение «возможностей» программатора к количеству заявленных микросхем, подсчитанным по разным методикам, фактически коэффициент накрутки:

Рисунок 3.

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

В последнюю диаграмму для примера добавлен специализированный программатор ChipStar-Diemos, этот программатор предназначен для программирования микросхем специального и двойного назначения советского периода. Все эти микросхемы обладают весьма ресурсоемкими алгоритмами программирования и скудным количеством клонов. Так вот этот программатор вообще не поддается накрутке.

Обзор Чипа Внешней I2C Памяти AT24Cхх

В разработке электронных плат часто надо подписывать электронные платы (изделия) каким-то серийным номером. Это нужно для идентификации платы при серийном производстве и при сопровождении товара при техподдержке.

Внешние чипы памяти особенно важны так как прошивку микроконтроллера могут полностью стереть, поэтому хранить серийный номер на микроконтроллере внутри on-chip NOR-Flash самого микроконтроллера ненадежно. Микроконтроллер могут и перепаять (перекинуть). Получается что надо где-то хранить Serial Number (SN) самой PCB.

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

Ещё в 2012 году у меня была задача на четырех микросхемах AT24C16 (2kByte) организовать энергонезависимый журнал для хранения наработок на отказ в холодильном оборудовании с резервированием. Надо было быстро читать и писать блоки по 16 байт каждый. Тогда я записывал блоки в циклический массив на 100kHz-I2C EEPROM. В каждом блоке был 4х байтный time stamp от RTC. Для чтения и поиска я применил метод бинарного поиска для извлечения нужной записи. У меня за 4-6 секунд находился любой блок в памяти общим размером 8kByte.

Что надо из доков?

Название дока

Количество страниц

Vendor

Two-wire Serial EEPROM

ASIC AT24C02M5/TR это китайский чип EEPROM на 256 байт с доступом по двухпроводному синхронному последовательному интерфейсу I2C от компании Huaguan Semiconductor. Чип является I2C slave устройством. Память поддерживает только 1 миллион записей. Это простой чип. Вся его спека — это всего 14 страниц.

Стоит чип AT24C02M5/TR всего 11 рублей.

В нем 256 байт. Получается, что 0.042 RUR/Byte= 44 RUR/kByte=45056 RUR/Mbyte=46.1 MRUR/GByte. Да уж. Жесткий диск на чипах EEPROM строить точно нет смысла. Иначе бы он стоил как 2 квартиры в Москве.

Вот так выглядит микросхема памяти AT24C02N EEPROM 2kBit, в корпусе DIP-8. Обратите внимание на маркировку 24С02.

Вот так выглядит микросхема памяти AT24C02N (EEPROM 2kBit, в корпусе DIP-8)

Что значит маркировка микросхемы AT24C02M5/TR?

Аппаратная часть

Это распиновка микросхемы

На I2C шину можно подцепить до 8ми таких чипов. Чтобы и них били разные I2C адреса придумали пины A[3]. Старший нимбл всегда 0b1010=0xA=10

Получается, что на одной I2C шине из этих микросхем можно собрать планку памяти максимум 8*2kByte=16kByte. А если учесть, что у среднего микроконтроллеров обычно три I2C интерфейса, то получается, что на этой элементной базе на одной электронной плате может быть максимум 48kByte EEPROM.

С точки зрения программиста, чип выглядит так.

Внутри чипа AT24Cxx можно увидеть поля засаженные транзисторами, генератор высокого напряжения для стирания Flash ячеек, аппаратный I2C трансивер, компаратор выбора I2C и компаратор совпадения адреса на шине. Еще в спеке упомянуто, что внутри есть триггер Шмитта.

Что надо из оборудования?
Для разработки и отладки драйвера I2C-EEPROM надо следующее оборудование

Оборудование

Назначение

Для записи электрического сигнала с I2C шины

для соединения отладочной платы и модуля

отладочный модуль с чипом AT24C02

для отладки драйвера

отладочная плата с микроконтроллером и I2C интерфейсом

Для исполнения кода Cи-драйвера

Зажимы WAGO 3pin

для соединения логического анализатора и проводов шины I2C

DMM, 2 щупа, батарейка 9V для DMM

Для измерения напряжения на электронной плате

Так как общение c памятью происходит по I2C, то вот небольшая подсказка по I2C.

Программная часть

Про то как написать нормальный драйвер для ASIC есть вот эта методичка. Архитектура Хорошо Поддерживаемого драйвера для I2C/SPI/MDIO Чипа https://habr.com/ru/articles/683762/

Обычно у драйвера чипа AT24Cxx вот такие зависимости (Рис. 6). Чтобы заработал драйвер AT24Cxx нужно чтобы у вас уже был реализован определенный MCAL. Это драйвер I2C, GPIO, аппаратные таймеры или SysTick. Функции установки миллисекундных пауз. И желательно программный компонент расчета контрольных сумм. Без этого джентельменского набора говорить о разработке драйвера AT24Cxx не приходится.

Рис. 6 Программные зависимости драйвера AT24Cxx

В интерфейсе I2C биты передаются старшим битом вперед. Чтение из памяти выглядит так.

чтение

На практике чтение выглядит так. Тут видно, что из чипа 0x50 по адресу 7 прочиталось число 0x78. Тут видно два старта и один стоп.

Из I2C чипа c адресом 0x50 по адресу 0x07 прочиталось число 0x78.

Запись в память выглядит так. В в спецификации чтение показано так.

Figure 6: Page Write

Вот работающая I2C осциллограмма записи в чип 0х50 по адресу 7 значения 0х78.

Write in I2C сhip 0x50, Addr 0x0007, Byte 0x78

Write in I2C сhip 0x50, Addr 0x0007, Byte 0x34Тут стоит заметить, что чипу AT24C02 надо минимум 5ms, чтобы завершить запись в ячейки EEPROM.

Записывать можно максимум количество байт в станице. Для чипа AT24C02 это 8 байт. Иначе внутренний приемный буфер переполнится и данные не будут записаны. Ну сами представьте, куда денутся данные, если вы по I2C решите отправить сразу поезд байтов длинной в гигабайт?

Самый простой вариант — это записывать байт за байтом. Один I2C пакет на один байт. Но только тогда придется ждать 5ms окончания записи каждого байта. Всю память можно будет прошить за 1.5 секунд. Либо прописать 32 страницы и это потребует всего 0.19 сек.

Вообще не всегда надо писать. Может статься, что в области памяти, что вы хотите прописать уже лежат абсолютно те же самые данные, которые вы хотите прописать. Тогда надо делать так называемый Lazy Write. Сначала прочитать область памяти и, если там уже то, что мы хотим, что сказать вызывающей функции, что мы записали, а самим не записывать. Таким программным образом вы сохраните ресурс чипа и он вам прослужит дольше.

Вот так может выглядеть API для драйвера чипа AT24CXX. Функции для чтения и функции для записи.

#ifndef AT24CXX_DRV_H #define AT24CXX_DRV_H #include #include #include #include "at24cxx_config.h" #include "at24cxx_types.h" uint8_t at24cxx_read_byte_short(uint8_t num, uint16_t address); bool at24cxx_read_byte(uint8_t num, uint16_t address, uint8_t* const data); bool at24cxx_read(uint8_t num, uint16_t address, void* const data, size_t size); bool at24cxx_read_address(uint8_t num, uint16_t* const address); bool at24cxx_is_connected(uint8_t num); bool at24cxx_init(void); bool at24cxx_write_ctrl(uint8_t num, bool on_off); bool at24cxx_write(uint8_t num, uint16_t address, const uint8_t* const data, size_t size); bool at24cxx_write_byte(uint8_t num, uint16_t address, uint8_t data); bool at24cxx_write_page(uint8_t num, uint16_t address, uint8_t* page); bool at24cxx_erase(uint8_t num, uint16_t address, size_t size); bool at24cxx_erase_chip(uint8_t num); #endif /* AT24CXX_DRV_H */ 

Отладка драйвера I2C-EEPROM

Подали питание и в UART логе загрузки микроконтроллер написал, что обнаружил чип AT24Cxx.

фрагмент лога загрузки микроконтроллера

В функцию инициализации имеет смысл добавить функцию вычисления CRC8. Один байт проще запомнить. Так можно будет, например, через день определить не санкционное изменение I2C-EEPROM, если в логе загрузки CRC8 вдруг окажется другим (в данном случае не 0x7F). CRC нужна для регистрации факта изменения/повреждения данных. Например, заряженными частицами из космоса. Плюс CRC это требование ISO26262 часть 6.

Вот результат сканирования I2C шины на которой сидит AT24C02N.

Вот кого мы тут обнаружили. Я взял в работу адрес 0x50, однако зачем оставшиеся совсем не ясно.

Ответивший на чтение адрес

Добавить комментарий

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