3. По допустимым способам программирования:
– Микросхемы, программируемые в специальном устройстве – программаторе. Для осуществления необходимой операции (запись, стирание, чтение, верификация и т.п.), подобные микросхемы вставляются в специальную колодку программатора, обеспечивающую электрический контакт со всеми выводами микросхемы. Для реализации выбранного режима, программатор формирует в соответствии со спецификацией производителя необходимые последовательности сигналов, которые через колодку подаются на определенные выводы микросхемы.
– Микросхемы, поддерживающие режим внутрисхемного программирования (“ISP mode”), и программируемые непосредственно в устройстве пользователя.
Подобные микросхемы допускают выполнение необходимой операции (запись, стирание, чтение, верификация и т.п.) непосредственно в устройстве пользователя. Все действия по программированию (стиранию, чтению, верификации и т.п.) производятся с помощью внешнего программатора, определенным образом подключенного к устройству пользователя. При этом устройство пользователя должно быть разработано с учетом специфических требований данного режима.
– Микросхемы, поддерживающие режим внутреннего самопрограммирования. Подобные микросхемы допускают выполнение необходимой операции (запись, стирание, чтение, верификация и т.п.) непосредственно в устройстве пользователя, без использования какого либо программатора. При этом устройство пользователя должно быть разработано с учетом специфических требований данного режима.
В общем случае, каждая программируемая микросхема обладает своим индивидуальным набором допустимых режимов: программирование (запись), чтение, стирание, защита от чтения, защита от программирования и т.п.
Так, например, некоторые перепрограммируемые микросхемы не имеют отдельного режима «стирание». Для них стирание прежней информации в памяти происходит в теневом режиме, при каждом новом цикле программирования (записи). Во многих микроконтроллерах поддерживаются различные режимы ограничения доступа. Выбор режима ограничения доступа производится при программировании. В зависимости от выбранного режима, либо все ПЗУ, либо его определенная часть могут быть:
- защищены от возможности записи/дозаписи;
- защищены от возможности считывания содержимого извне. При попытке считать информацию, защищенная микросхема будет выдавать либо «мусор», либо «все 0», либо «все 1».
Говоря о программируемых микросхемах, можно считать общепринятой следующую систему мнемонических обозначений:
PROM (ProgrammableRead-OnlyMemory) – программируемая пользователем энергонезависимая память (ПЗУ).
EPROM (Erasable Programmable Read-Only Memory) – перепрограммируемоеПЗУ. Стирание содержимого производится при помощи ультрафиолетовых лучей, после облучения подобное ПЗУ готово к новому циклу записи информации (программированию). Устаревший тип памяти.
EEPROM (ElectricallyErasableProgrammableRead-OnlyMemory) – электрически стираемое перепрограммируемое ПЗУ. Память такого типа может стираться и заполняться данными многократно, от несколько десятков тысяч раз до миллиона.
FLASH (FlashMemory) – одна из технологических разновидностей энергонезависимой перезаписываемой памяти.
NVRAM (Non-volatilememory) – «неразрушающаяся» память, представляющая собой ОЗУ со встроенным источником электропитания. По своей функциональности для пользователя аналогична традиционному ПЗУ.
PLD (ProgrammableLogicDevice) – Программируемая логическая интегральная схема. (ПЛИС).
MCU (Microcontroller Unit) – микроконтроллер. Микроконтроллер это микросхема, содержащая: процессор, память (как правило), и периферийные устройства.
1.5 Характеристика микросхемы 24c04, используемой в чипе картриджа
Микросхемы 24Cxx или Xerox90/01 представляют собой память EEPROM (electricaly erasable programable read only memory - электрически стираемая программируемая читаемая только память) которая использует I2C-протокол (или IIC bus - Inter Integrated Circuits bus).
Мы не будем останавливаться на общих правилах самого протокола, рассмотрим только его некоторые тонкости и особенности, не отраженные в описаниях производителей.
Вся изложенная ниже информация была получена тестированием чипов серии 24xx производителей Microchip, Atmel, Xicor, STMicroelectronics, а также чипов 8-DIP, на корпусе которых написано Xerox90 (...) или Xerox01(...) /записи во второй и третьей строках чипов Xerox по мнению автора не имеют отношения к их свойствам/. Максимально точное описание своей продукции дает Atmel, и больше всего несоответствий datasheet и чипа обнаружено у Microchip.
Зачастую несоответствием параметров чипов с их описанием можно пренебречь (таковы наиболее общие условия использования микросхем).
Чипы выполнены в 8-DIP, SOIC, TSSOP корпусах. Расположение и назначение выводов обозначено на рисунке 3.
Рисунок 3 – Расположение и назначение выводов микросхемы
Вывод 4 - GND (общий, земля). Вывод 8 - Vcc (положительное по отношению к GND напряжение питания чипа). Минимальное значение Vcc, при котором некоторые микросхемы начинали работать +1.3V. Все микросхемы заработали от +2.7V. Типичное напряжение питания при использовании в аппаратуре (магнитофоны, мониторы, принтеры, копировально-множительная техника и т.д.) +5V (-10%,+5%). Кратковременно (до 10 секунд) выдерживают переполюсовку напряжения питания и превышение его до +17V. При этом сильно греются (около 15-20W тепловой энергии). Горят от перегрева. Полевой ключ на выводе SDA слабо-чувствителен к электростатике. Остальные выводы на бытовые статические разряды не реагируют.
В целом, внешними электрофизическими факторами привести в негодность такие микросхемы трудно. Что касается программных факторов, то чипы 24Cxx устойчивы и надежны в работе, а микросхемы Xerox90 и Xerox01 при неумелом обращении очень легко выходят из строя.
Выводы 1, 2, 3 – адресные выводы A0, A1, A2. Для большинства микросхем они определяют адрес чипа на шине I2C. Для 24C01, 24C02, Xerox90, Xerox01 значащими являются все три вывода (до 8 корпусов на шине). Для 24C04 имеют значение только A1, A2 (выводы 2 и 3, до 4 корпусов); для 24C08 - только A2 (вывод 3, может быть две микросхемы на шине); в 24C16 эти выводы не используются. Кроме того, в линейке 24Cxx есть микросхемы, которые не поддерживают такую адресацию, хотя по описанию производителя должны это делать.
Поведение таких чипов объясню на примере 24С04 - чип в 512 байт. Независимо от потенциала на выводах 1,2,3 отвечает на обращение к I2C-EEPROM и при чтении ведет себя так, будто это чип 24С16, четыре области по 512 байт которого содержат одинаковую информацию. При записи по некоторому адресу в этом псевдо-24С16 число данных помещается во все четыре адреса, смежные через 512 байт. То есть, реальной памяти есть 512 байт, а добавить еще три чипа на шину с другими адресами нельзя. Хотя, к примеру, Microchip регламентирует, что выводы 1, 2, 3 чипа 24LC04B не подключены.
Вывод 7 - сигнал WP (защита от записи). Процедура чтения данных из произвольного чипа работает одинаково и независима от логического уровня на этом выводе. Что касается процедуры записи в микросхему, то при низком логическом уровне на выводе WP доступна для записи вся область чипа. Чип всегда выдает сигнал подтверждения (acknowledge), данные записываются по сигналу STOP протокола I2C.
Запись является внутренне-синхронизованной. Во время цикла записи чип не отвечает на обращение к нему. Наименьшая длительность записи 1.6мс у чипов Atmel, наибольшая - 4.3мс у Xicor. Запись одного байта в побайтном режиме и N байт в режиме PageMode (страничная запись) происходит за одинаковый промежуток времени. Если количество байт N превосходит длину страницы, то сохраняются последние K байт, где K - длина страницы. В процессе тестов было получено, что K=1 для 24C01; K=4 или K=8 или K=16 для 24C02;K=8 или K=16 для 24C04; K=16 для 24C08 и 24C16 . Величины длины страницы для чипов 24C02 и 24C04 невозможно определить по внешним признакам (есть две микросхемы 24C02 одного производителя с длиной страницы 4 и 8 байт). Информация о страничной записи в чипы Xerox90 и Xerox01 есть в их описании.
При высоком логическом уровне WP микросхемы 24C01, 24C02 защищены от записи. Для чипов 24C04 возможны два варианта: защищен весь чип, или защищена только верхняя половина памяти. Для 24C08 и 24C16 возможным есть защита всей области памяти, либо верхней ее половины, либо им вообще безразлично, что есть на выводе WP.
Кроме того, все микросхемы имеют различную реакцию на попытку записи в защищенную выводом 7 область. Одни микросхемы не подтверждают обращение на запись (не выдают сигнал acknowledge), тем самым показывая невозможность записи. Другие микросхемы дают подтверждение, но запись не происходит. При этом часть этих чипов готова к обмену сразу после сигнала STOP в конце «записи», а часть микросхем будет недоступна на время, равное времени, требуемому для записи (хотя при этом данные в чипе не изменятся).
Вывод 6 - SCL (serial clock) - тактовый сигнал, синхронизирующий обмен по шине I2C. Не могу сказать, есть ли какое-то ограничение на минимальную частоту обмена по шине. Во всяком случае автор проверил работу чипа на частоте 0.1Hz и получил положительные результаты, правда чтение одного байта при этом занимает около шести минут. Относительно максимальной частоты, то микросхемы памяти с I2C-протоколом можно поделить на две категории: с частотой обмена 100kHz – StandardMode (реально работают до 180-200kHz, возможная форма импульса - меандр) и с частотой обмена 400kHz -FastMode (реально работают на частоте не менее 480 kHz, не исключено, что может быть и выше. Есть аппаратные сложности для проверки более высоких частот. Начиная от 300 kHz требуют иной скважности импульса. На 400 kHz соотношение периода импульсов clock к их длительности должно равняться трем).
Вывод 5 - SDA (serial clock)- последовательные данные. Это двунаправленный вывод, по которому чип принимает команды и данные для записи, и выдает информацию при чтении.
Есть два способа внутренней организации буфера этого вывода. Их можно увидеть на рисунке 4