Микросхемы EEPROM серии 24ХХХ имеют следующие характеристики:
• I2С-совместимый интерфейс с максимальной частотой 400 кГц (
• Возможность защиты содержимого микросхемы от записи (режим ПЗУ), используя вывод WP.
• Типичная длительность цикла записи — 2 мс.
• Долговечность — не менее 1 000 000 циклов записи на ячейку.
• Ток потребления — 3 мА в режиме записи, 1 мА в режиме чтения и 100 мкА в режиме ожидания.
• Встроенный генератор высокого напряжения для программирования.
На примере микросхемы 24LC01B покажем, какие операции необходимо выполнить для инкрементирования содержимого трех ячеек, расположенных в младших адресах, где хранится суммарный путь в милях или километрах (единица измерения меняется в зависимости от рынка, для которого предназначен автомобиль). Предположим, что каждый километр/милю генерируется прерывание для микроконтроллера и что наш код является частью процедуры обработки прерывания. Кроме того, в нашем распоряжении имеются ресурсы, используемые подпрограммами, коды которых приведены в Программах 12.9 и 12.18.
Решение
Прежде чем приступить к написанию собственно кода, необходимо познакомиться с протоколом обмена, поддерживаемым микросхемами серии 24ХХХ. Этот протокол в виде временных диаграмм сигналов на линии данных приведен на Рис. 12.27.
Рис. 12.27.
Инициирование обмена всегда осуществляется ведущим (микроконтроллером), который формирует на шине состояние СТАРТ, после чего передает управляющий байт. В этом байте содержится адрес ведомого 1010, адрес конкретной микросхемы А2А1А0, а также бит R/W¯:
Как правило, после управляющего байта передается значение адреса в памяти, куда будут записываться или откуда будут считываться данные. Если говорить конкретно о микросхеме 24LC01B, то в ней данные организованы в виде 128 однобайтных ячеек, каждая из которых может быть записана или считана независимо от других. То есть в ней используется 7-битный адрес, для передачи которого вполне достаточно одного байта. Эта схема годится также для микросхемы 24LC02B, однако для всех остальных микросхем требуется адрес, разрядность которого больше 8 бит. В микросхемах от 24LC04 до 24LC16 для передачи трех старших битов адреса используются биты А[2:0] управляющего байта, в результате чего разрядность адреса увеличивается до 11 бит. Микросхемы EEPROM, имеющие объем более 16 Кбит (24LC32 и далее), требуют уже двух байтов адреса, которые передаются вслед за управляющим байтом.
Байты адреса посылаются в EEPROM в пакетах записи, как показано на Рис. 12.27,
После обнаружения микросхемой состояния СТОП запускается процесс записи буферированных данных в заданные ячейки. Длительность процесса программирования в микросхемах семейства 24LCXXX составляет от 2 до 5 мс. Если в течение этого времени ведущий попытается обратиться к микросхеме, то она при получении первого (управляющего) байта отошлет NACK, что можно использовать в качестве индикатора занятости. В Программе 12.19 этот бит проверяется при посылке управляющего байта.