Otp память что это

Обновлено: 05.07.2024

На заре возникновения памяти, сохраняющей данные при отключении пита­ния (EPROM, Erasable Programmable ROM — «стираемая/программируемая ROM», или по-русски ППЗУ — «программируемое ПЗУ»), основным типом ее была память, стираемая ультрафиолетом: UV-EPROM (Ultra-Violet EPROM, УФ-ППЗУ). Причем часто приставку UV опускали, так как всем бы­ло понятно, что EPROM — это стираемая ультрафиолетом, а ROM (или ПЗУ) просто, без добавлений— это однократно программируемые кристаллы OTP-ROM. Микроконтроллеры с УФ-памятью программ были распростране­ны еще в середине 1990-х. В рабочих образцах устройств с УФ-памятью кварцевое окошечко, через которое осуществлялось стирание, заклеивали кусочком черной липкой ленты, так как информация в UV-EPROM медленно разрушается и на солнечном свету.

Рис. 18.7. Устройство элементарной ячейки EPROM

На рис. 18.7 показано устройство элементарной ячейки EPROM, которая ле­жит в основе всех современных типов flash-памяти. Если исключить из нее то, что обозначено надписью «плавающий затвор», мы получим самый обыч­ный полевой транзистор — точно такой же входит в ячейку DRAM. Если по­дать на управляющий затвор такого транзистора положительное напряжение, то он откроется, и через него потечет ток (это считается состоянием логиче­ской единицы). На рис. 18.7 вверху-и изображен такой случай, когда пла­вающий затвор не оказывает никакого влияния на работу ячейки — напри­мер, такое состояние характерно для чистой flash-памяти, в которую еще ни разу ничего не записывали.

Если же мы каким-то образом (каким— поговорим отдельно) ухитримся разместить на плавающем затворе некоторое количество зарядов — свобод­ных электронов, которые показаны на рис. 18.7 внизу в виде темных кружоч­ков со значком минуса, то они будуу экранировать действие управляющего электрода, и такой транзистор вообще перестанет проводить ток. Это состоя­ние логического нуля. Поскольку плавающий затвор потому так и называет­ся, что он «плавает» в толще изолятора (двуокиси кремния), то сообщенные ему однажды заряды в покое никуда деваться не могут. И записанная таким образом информация может храниться десятилетиями (до последнего време­ни производители обычно давали гарантию на 10 лет, но на практике в обыч­ных условиях время хранения значительно больше).

Заметки на полях

Строго говоря, в NAND-чипах (о которых далее) логика обязана быть обрат­ной. Если в обычной EPROM запрограммированную ячейку вы не можете от­крыть подачей считывающего напряжения, то там наоборот — ее нельзя запе­реть снятием напряжения. Поэтому, в частности, чистая NAND-память выдает все нули, а не единицы, как EPROM. Но это нюансы, которые не меняют суть дела.

Octajiocb всего ничего — придумать, как размещать заряды на изолирован­ном от всех внешних влияний плавающем затворе. И не только разме­щать — ведь иногда память и стирать приходится, потому должен сущест­вовать способ их извлекать оттуда. В UV-EPROM слой окисла между плавающим затвором и подложкой был достаточно толстым (если величину 50 нанометров можно охарактеризовать словом «толстый», конечно), и ра­ботало все это довольно грубо. При записи на управляющий затвор подава­ли достаточно высокое положительное напряжение — иногда до 36—40 В, а на сток транзистора — небольшое положительное. При этом электроны, которые двигались от истока к стоку, настолько ускорялись полем управ­ляющего электрода, что просто перепрыгивали барьер в виде изолятора между подложкой и плавающим затвором. Такой процесс называется еще «инжекцией горячих электронов».

Ток заряда при этом достигал миллиампера — можете себе представить, ка­ково было потребление всей схемы, если в ней одновременно программиро­вать хотя бы несколько тысяч ячеек. И хотя такой ток требовался на доста­точно короткое время (впрочем, с точки зрения быстродействия схемы не такое уж и короткое — миллисекунды), но это было крупнейшим недостат­ком всех старых образцов EPROM-памяти. Еще хуже другое — и изолятор, и сам плавающий затвор такого издевательства долго не выдерживали и посте­пенно деградировали, отчего количество циклов стирания-записи было огра­ничено нескольким сотнями, максимум— тысячами. Во многих образцах flash-памяти более позднего времени даже была предусмотрена специальная схема для хранения карты «битых» ячеек — в точности так, как это делается для жестких дисков. В современных моделях с миллионами ячеек такая карта тоже имеется — однако число циклов стирания/записи теперь возросло до сотен тысяч. Как этого удалось добиться?

Рис. 18.8. Процесс стирания в элементарной ячейке EPROM

Сначала посмотрим, как осуществлялось в этой схеме стирание. В UV-EPROM при облучении ультрафиолетом фотоны высокой энергии сообщали электронам на плавающем затэоре достаточный импульс для того, чтобы они «прыгали» обратно на подложку самостоятельно, без каких-либо электриче­ских воздействий. Первые образцы электрически стираемой памяти (EEPROM, Electrically Erasable Programmable ROM — «электрически стирае­мое перепрограммируемое ПЗУ», ЭСППЗУ) были созданы в компании Intel в. конце 1970-х при непосредственном участии будущего основателя Atmel Джорджа Перлегоса. Он использовал «квантовый эффект туннелирования Фаулера-Нордхейма». За этим непонятным названием кроется довольно про­стое по сути (но очень сложное с физической точки зрения) явление: при достаточно тонкой пленке изолятора (ее толщину пришлось уменьшить с 50 до 10 нм) электроны, если их слегка подтолкнуть подачей не слишком высо­кого напряжения в нужном направлении, могут просачиваться через барьер, не перепрыгивая его. Сам процесс показан на рис. 18.8 вверху (обратите внимание на знак напряжения на управляющем электроде).

Старые образцы EEPROM именно так и работали: запись производилась «го­рячей инжекцией», а стирание — «квантовым туннелированием». Оттого они были довольно сложны в эксплуатации — разработчики со стажем помнят, что первые микросхемы EEPROM требовали два, а то и три питающих на­пряжения, причем подавать их при записи и стирании требовалось в опреде­ленной последовательности.

Превращение EEPROM во flash происходило по трем разным направлениям. В первую очередь — в направлении совершенствования конструкции самой ячейки. Для начала избавились от самой противной стадии — «горячей ин-жекции». Вместо нее при записи стали также использовать «квантовое тун-нелирование», как и при стирании. рис. 18.8 внизу показан этот про­цесс— если при открытом транзисторе подать на управляющий затвор достаточно высокое (но значительно меньшее, чем при «горячей инжекции») напряжение, то часть электронов, двигающихся через открытый транзистор от истока к стоку, «просочится» через изолятор и окажется на плавающем затворе. Потребление тока при записи снизилось на несколько порядков. Изолятор, правда, пришлось сделать еще тоньше, что обусловило довольно большие трудности с внедрением этой технологии в производство.

Второе направление — ячейку сделали несколько сложнее, пристроив к ней второй транзистор (обычный, не двухзатворный), который разделил вывод стока и считывающую шину всей микросхемы. Благодаря всему этому уда­лось добиться значительного повышения долговечности — до сотен тысяч циклов записи/стирания (миллионы циклов, характерные для флэш-карточек, получаются, если добавить схемы коррекции ошибок). Кроме того, схемы формирования высокого напряжения и соответствующие генераторы им­пульсов записи/стирания перенесли внутрь микросхемы, отчего пользоваться этими типами памяти стало несравненно удобнее — они стали питаться от одного напряжения (5, 3,3 или даже 1,8 В).

И, наконец, третье, едва ли не самое главное усовершенствование заключа­лось в изменении организации доступа к ячейкам на кристалле, вследствие чего этот тип памяти и заслужил наименование — flash (то есть «молния»), ныне известное каждому владельцу цифровой камеры или карманного МРЗ-плеера. Так в середине 1980-х назвали разновидность EEPROM, в ко­торой стирание и запись производились сразу целыми блоками — страни­цами. Процедура чтения из произвольной ячейки, впрочем, по понятным причинам замедлилась— для его ускорения приходится на кристаллах flash-памяти располагать промежуточную (буферную) SRAM. Для флэш-накопителей это не имеет особого значения, так как там все равно данные читаются и пишутся сразу большими массивами, но для использования в микроконтроллерах это может оказаться неудобным. Тем более, в МК не­удобно использовать самый быстродействующий вариант flash-техноло­гии — т. н. память типа NAND (от наименования логической функции «И-НЕ»), где читать и записывать память в принципе возможно только блока­ми по 512 байт (это обычная величина сектора на жестком диске, также чи­таемого и записываемого целиком за один раз — отсюда можно понять ос­новное назначение NAND).

В МК обычно используют традиционную (типа NOR) flash-память про­грамм, в которой страницы относительно невелики по размерам — порядка 64—256 байт. Впрочем, если пользователь сам не берется за создание про­грамматора для такой микросхемы, он может о страничном характере па­мяти и не догадываться. А для пользовательских данных применяют EEPROM либо с возможностью чтения произвольного байта, либо секцио­нированную, но на очень маленькие блоки — например, по 4 байта. При этом для пользователя все равно доступ остается побайтным. Характерной чертой такой памяти является довольно медленная (порядка миллисекунд) процедура записи, в то время как чтение протекает ничуть не медленнее любых других операций в МК.

Развитие технологий flash-памяти имело огромное значения для удешевления и доступности микроконтроллеров. В дальнейшем мы будем иметь дело с энергонезависимой памятью не только в виде встроенных в микроконтроллер памяти программ и данных, но и с отдельными микросхемами, позволяющи­ми записывать довольно большие объемы информации.

Эта статья содержит краткое описание популярных семейств микросхем энергонезависимой памяти, т.е. памяти, способной хранить информацию в отсутствие электропитания. Довольно часто, в качестве обобщенного названия этого класса микросхем используют аббревиатуру "ПЗУ" - Постоянное Запоминающее Устройство (по англ. ROM - Read Only Memory - память только для чтения). Следует заметить, что это не совсем корректно. Первые, наиболее старые представители энергонезависимой памяти, действительно использовались в аппаратуре только в режиме чтения, а их запись (программирование) осуществлялась либо в процессе изготовления кристалла, либо перед установкой в аппаратуру с помощью довольно сложного прибора - программатора. В дальнейшем, по мере совершенствования технологии производства и упрощения методов и алгоритмов записи, их современные модификации все чаще стали использовать в приборах и устройствах в режимах записи, стирания и перезаписи. Например, в модулях фискальной памяти кассовых аппаратов, в них заносится итоговая информация о дневной выручке и количестве покупок. В телевизорах ПЗУ используют для хранения различных настроек, а в телефонных аппаратах - для хранения и быстрого набора часто используемых телефонных номеров (записная книжка). Все эти применения противоречат самому смыслу понятия "память только для чтения". Попытки устранить это противоречие привели к обрастанию аббревиатуры "ПЗУ" уточняющими приставками: ППЗУ - программируемые ПЗУ, СППЗУ - стираемые ППЗУ, РПЗУ - репрограммируемые ПЗУ (PROM - Programmable ROM, EPROM - Erasable PROM, EEPROM - Electrically Erasable PROM) и т.д. Однако, наиболее точным обобщающим названием этого класса приборов является "энергонезависимая память". Этого понятия, применяя сокращение ЭП, мы и будем придерживаться в данной статье.

MaskROM - Масочные ПЗУ

Это наиболее старое семейство микросхем ЭП. Информация в такую память заноситься в процессе изготовления кристалла и в дальнейшем не может изменяться. Многолетняя популярность MaskROM обуславливалась низкой ценой при крупносерийном производстве. В настоящее время, в связи с резким снижением цен на программируемую и перепрограммируемую память, применяются редко. Наиболее распространенные микросхемы этого семейства - серия 23xxx.

PROM - Программируемые ПЗУ

Первыми программируемыми ПЗУ, пришедшими на смену MaskROM, стали микросхемы памяти на базе плавких перемычек (например, распространенные десять лет назад отечественные серии К556 и К1556). Возможность самостоятельной записи информации в них делало их пригодными для штучного и мелкосерийного производства. Наиболее существенными недостатками были большой процент брака и необходимость специальной длительной термической тренировки, без которой надежность хранения данных была невысокой. В настоящее время, также почти не применяются.

Различные источники по разному расшифровывают аббревиатуру EPROM - Erasable Programmable ROM или Electrically Programmable ROM (стираемые программируемые ПЗУ или электрически программируемые ПЗУ). Обычно, так называют популярные микросхемы серии 27xxx (отечественный аналог - серия К573).
Основу этой серии составляют ПЗУ, стираемые ультрафиолетовым излучением. Корпуса таких микросхем имеют окно из кварцевого стекла. Данные хранятся в виде зарядов плавающих затворов МОП-транзисторов, упрощенно говоря, представляющих собой конденсаторы с очень низкой утечкой заряда.
Многие производители памяти выпускают серию 27xxx также в исполнении "OTP" - One Time Programmable - однократно программируемые (те же кристаллы, но в дешевом пластиковом корпусе без кварцевого окна).
В последнее время получили широкое распространение электрически стираемые модификации EPROM производства фирм Winbond и SST, также выпускаемые в пластиковых корпусах.

Non-volatile RAM (NVRAM), FRAM

Понятие "Энергонезависимое ОЗУ" (Non-volatile RAM или NVRAM) включает в себя несколько подсемейств памяти. Все они отличаются от других видов ЭП моментальной записью. Поэтому, вместо термина "программирование", по отношению к этим микросхемам обычно применяют термин "запись".
Первая разновидность NVRAM представляет собой обычные статические ОЗУ со встроенным элементом питания (чаще всего литиевым) и усиленной защитой от искажения информации в момент включения и выключения питания. Важным преимуществом этих микросхем является неограниченное количество циклов перезаписи (для EPROM, Flash и EEPROM оно обычно составляет от одной тысячи до 100 миллионов). Мировым лидером производства такой памяти является фирма Dallas Semiconductor.
Другой разновидностью NVRAM являются микросхемы, содержащие на одном кристалле энергозависимое ОЗУ (RAM) и резервную EEPROM-память, с возможностью сохранения (копирования) содержимого ОЗУ в EEPROM и обратного восстановления данных из EEPROM в ОЗУ. Многие из этих микросхем имеют функцию автоматического восстановления данных из EEPROM в ОЗУ при включении питания. Подразделяются на последовательные и параллельные.
Новое поколение NVRAM, при изготовлении которых используются самые современные технологии с применением материалов - ферроэлектриков (FRAM), не требуют для хранения информации никакого элемента питания, сохраняя все остальные свойства обычных ОЗУ. Часто выпускаются в виде микросхем, полностью совместимых по расположению выводов, алгоритмам и протоколам, и даже совпадающие по маркировке с последовательными и параллельными EEPROM. Примером может служить серия 24Cxx фирмы Ramtron. Количество циклов перезаписи для FRAM обычно составляет 10 миллиардов.

Внутренняя память микроконтроллеров

Большинство современных микроконтроллеров имеют встроенную энергонезависимую память программ (MaskROM, OTP EPROM, Flash или EEPROM), а многие - также дополнительную память данных (EEPROM или Flash). Все вышеописанные свойства этих видов ЭП относится и к встроенной памяти микроконтроллеров.
Фирма Atmel использует для своих программируемых в процессе производства и однократно программируемых пользователем микроконтроллеров термин QuickFlash. По своим свойствам такая память полностью соответствует MaskROM или OTP EPROM.
Понятие FlexROM используется фирмой Microchip для обозначения программируемых в процессе изготовления PIC-контроллеров. Аналогично MaskROM.

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

Основные понятия

Для лучшего понимания состояния рынка современных микросхем памяти следует ознакомиться с основной общепринятой терминологией в этой области:

RAM (Random Access Memory) — оперативная память с произвольным доступом;

ROM (Read Only Memory) — постоянная память;

NVM (Non-Volatile Memory) — обычно термин используется для обозначения семейства ROM, в которое входят ROM, OTP, EPROM, EEPROM, Flash, NV-RAM;

Flash (Flash RAM, FRAM) — особый тип памяти, допускающей операции чтения и записи при рабочих напряжениях (обычно 5 В, для более ранних микросхем запись при 12 В), которые сохраняют содержимое при отсутствии питания за счет оригинальной структуры запоминающей ячейки;

NV-RAM (Non-Voltage RAM) — особый вид RAM, которая может сохранять свое содержимое при отсутствии питания либо за счет особенностей изготовления запоминающей ячейки, либо за счет наличия встроенной в микросхему или модуль литиевой батарейки;

OTP (Once programmed memory) — память, однократно программируемая потребителем;

EPROM (Electrically Programmable ROM) — электрически программируемая постоянная память;

EEPROM (Electrically Erasable Programmable ROM) — электрически стираемая и программируемая постоянная память;

SRAM (Static RAM) — статическая память с произвольным доступом;

DRAM (Dynamic RAM) — динамическая память с произвольным доступом;

TK-RAM (Timekeeping RAM) — память с произвольным доступом, в которой часть ячеек заменена на регистры, в которые автоматически выводятся данные от встроенных часов реального времени (RTC), календаря и т. п. Обычно выпускается либо со встроенной литиевой батарейкой, либо со входом для подключения внешней батарейки, либо с конструктивно совмещенным (в корпусе микросхемы) держателем для внешней батарейки;

RTC (Real Time Clock) — таймер реального времени;

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

Названия наиболее известных производителей микросхем памяти, их Internet-адреса и выпускаемые типы микросхем памяти приведены в табл. 1.


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

Пожалуй, наибольшую известность и популярность в нашей стране имеет фирма Atmel, являющаяся несомненным мировым лидером по производству различных микросхем с применением Flash-технологий. Микросхемы памяти, выпускаемые этой фирмой, приведены в табл. 2.



Не менее известна на нашем рынке и фирма Dallas Semiconductor, которая совсем недавно стала частью фирмы MAXIM. Фирма Dallas Semiconductor является мировым лидером по производству NV Timekeeping RAM. Это модули, содержащие SRAM, в которой часть ячеек заменена на регистры. В эти регистры автоматически выводятся данные от встроенных часов реального времени (RTC), календаря и т. п. Обычно выпускается либо со встроенной литиевой батарейкой, либо со входом для подключения внешней батарейки, либо с конструктивно совмещенным (в корпусе микросхемы) держателем для внешней батарейки (PwrCAP). Микросхемы TK-SRAM фирмы Dallas приведены в табл. 3.


Кроме этого, фирма Dallas Semiconductor выпускает достаточно большой набор других типов NV-RAM (см. табл. 4).


Большой выбор статической (SRAM), динамической (DRAM) и Flash-памяти предлагает фирма Alliance Semiconductor. Перечень микросхем статической памяти представлен в табл. 5.


SRAM 3,3 V Fast Asynchronous — быстродействующая асинхронная статическая память.

Динамическая память, выпускаемая фирмой Alliance Semiconductor, представлена в табл. 6.


Кроме этого, фирмой Alliance Semiconductor выпускается несколько микросхем Flash-памяти (см. табл. 7).



Достаточно широкий набор асинхронной статической памяти SRAM предлагает фирма Brilliance Semiconductor (табл. 8).


Для существенной экономии места на печатной плате выпускается специальная колодка для установки нескольких микросхем памяти одна на одну, так называемый LP-Stacks™ (Leaded Plastic Stacks). Это изделие идеально подходит для широкого круга коммерческих и индустриальных применений. Колодки LP-Stacks™ выпускаются для микросхем SDRAM, DRAM, SRAM, EEPROM, Flash, DDR и FCRAM. Существуют LP-Stacks™ для коммерческого и расширенного температурного диапазона.

Другое оригинальное изделие High-Reliability Ceramic Modules — высоконадежные керамические модули. Это изделие не только экономит место на печатной плате (поскольку в него устанавливается несколько микросхем), но и защищает их от тяжелых условий эксплуатации и климатических воздействий.

Для ускорения разработки новых изделий выпускаются специальные отладочные платы. Они позволяют устанавливать кроме микросхем памяти несколько корпусов микросхем DSP, ASIC, PLD, а также пассивных элементов.

Разработанные фирмой DPAC Technologies устройства для установки микросхем памяти в «этажерки» получили название DDR-технологий. Они запатентованы и стали, фактически, промышленным стандартом. Фирма DPAC Technologies продолжает разрабатывать все новые системы для компактной установки различных типов памяти в «этажерки».

Кроме того, фирма выпускает микросхемы памяти и предлагает их в комплекте с вышеуказанными изделиями (см. табл. 9).

Программирование OTP происходит в три этапа. Для каждого необходим свой алгоритм FLM, соответственно, средой программирования будет выступать IDE Keil:

  1. Программирование. Используется - 1.flm;
  2. Допрограммирование. Используется - 2.flm;
  3. Верификация. Используется - 3dc.flm.
    Для процесса верификации алгоритм .flm был переработан, ранее применяемый 3.flm считается неактуальным. Алгоритм 3dc.flm считается доработанным по части выполнения двойного цикла верификации при разных настройках OTP-памяти (значения repl_tune и time_tune).

Для использования данных FLM-файлов необходимо обеспечить тактирование процессора от внешнего генератора HSE0 с частотой 48 МГц. Внутри эта частота делится на 2, что дает 24 МГц, то есть частоту, близкую к максимальной частоте работы ОТР - 25 МГц, период 40нс. Это частота, на которой необходимо проводить верификацию ОТР, хотя в рабочем режиме память на такой частоте работать не будет, благодаря задержкам WaitCycle.

На практике можно использовать внешний генератор с частотой 50 МГц, программирование OTP по всем этапам будет выполнено также корректно.

Процесс программирования OTP будет рассмотрен на отладочной плате компании Миландр для микроконтроллера 1986ВЕ8Т с так называемым адаптером (отдельная плата, содержащая контактное устройство для микроконтроллера и подключаемая к большой плате, которая имеет уже все необходимые выходы периферии). На плате адаптера на HSE0 подключен кварцевый резонатор. Его необходимо отключить, а на расположенное рядом посадочное место припаять генератор на 48 МГц. Вид с обратной стороны платы адаптера представлен на рисунке 1, генератор на рисунке уже установлен.


Рисунок 1 - Подключение источников тактирования HSE0 на плате адаптера микроконтроллера 1986ВЕ8Т

Из рисунка 1 следует, что для подключения генератора необходимо обеспечить подключение "зеленой" дорожки. Подключение можно осуществить резистором 0 Ом. Дополнительно следует обратить внимание на следующее: чтобы иметь возможность отследить работоспособность генератора или кварцевого резонатора, в зависимости от подключения, можно также соединить "желтую" дорожку. Это позволит отслеживать работу источника тактирования на выводе, представленном на рисунке 2, который находится на задней стороне большой платы, на которую устанавливается плата адаптера, в противном случае наглядно убедиться в работоспособности, например, при помощи осциллографа, не получится.


Рисунок 2 - Расположение вывода HSE0_IN на задней стороне отладочной платы

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


Рисунок 3 - Осциллограмма проверки работы генератора 48 МГц

/*Функция задержки*/
void Delay(__IO uint32_t nCount)
for (; nCount != 0; nCount--);
>

int main(void)
<
/* Выключение блока сброса предназначенного для выработки аппаратного сброса при включении основного питания */
POR_disable();

/* Функция установки CLKCTRL по умолчанию */
CLKCTRL_DeInit();

/* Функция конфигурирования HSE0 clock */
CLKCTRL_HSEconfig(CLKCTRL_HSE0_CLK_BYP);
while(CLKCTRL_HSEstatus(CLKCTRL_HSEn_STAT_HSE0_RDY) != SUCCESS)<>

/* Конфигурирование блока умножения тактовой частоты */
//CLKCTRL_CPU_PLLconfig(PLL0, CLKCTRL_PLLn_CLK_SELECT_HSE0div1, 0, 1);//PLLn, SRC, Q, N
// while(CLKCTRL_CPU_PLLstatus(0) != SUCCESS)<>
CLKCTRL_MAX_CLKSelection(CLKCTRL_MAX_CLK_HSE0div1);

/* Тактирование порта PORTC */
CLKCTRL_PER0_CLKcmd(CLKCTRL_PER0_CLK_MDR_PORTC_EN, ENABLE);

/* Ключи записи в регистры порта */
KEY_reg_accs();

/* Конфигурация PORTC пинов [16:18] */
PORT_InitStructure.PORT_Pin = (PORT_Pin_16|PORT_Pin_17|PORT_Pin_18);
PORT_InitStructure.PORT_SOE = PORT_SOE_OUT;
PORT_InitStructure.PORT_SANALOG = PORT_SANALOG_DIGITAL;
PORT_InitStructure.PORT_SPD = PORT_SPD_OFF;
PORT_InitStructure.PORT_SPWR = PORT_SPWR_10;

/*Применяем структуру*/
PORT_Init(PORTC, &PORT_InitStructure);

/*Основной цикл*/
while (1)
PORT_SetBits(PORTC, VD7);
Delay(200000);
PORT_ResetBits(PORTC, VD7); //гасим диод
Delay(200000);
>
> Фрагмент кода 1

После запуска режима отладки убеждаемся, что светодиоды моргают, это значит, что генератор установлен и работает корректно. Перед ответственным этапом программирования OTP рекомендуем выбрать область памяти, куда будет произведена запись, а заодно и проверить эту память в окне Memory режима отладки IDE Keil. Наличие знаков вопросов по адресам OTP будет означать, что эти ячейки памяти не запрограммированы. Наглядно эта ситуация показана на рисунке 4 для адресов, начиная с 0x01000000.

Диапазон адресов OTP имеет следующие значения:
Начало - 0x01000000;
Размер - 0x0001FFFF.


Рисунок 4 - Проверка доступности ячеек памяти OTP в IDE Keil с адреса 0x01000000
Важно сказать: для того, чтобы не забраковать сразу весь кристалл, отработать прошивку или версию программного обеспечения можно на базе старших адресов OTP-памяти. Например, выбрать небольшой диапазон где-нибудь в конце памяти OTP и осуществить туда запись. Запуск такой программы можно осуществить при помощи отладчика, для которого необходимо подключить файл Setup.ini, аналогично статье, связанной с запуском из ОЗУ, либо передать адрес Reset_Handler в режиме отладки для регистра ядра PC15.

Переходя к программированию OTP отметим, что для "прожигания" битов памяти требуется дополнительный источник напряжения на 7.2В. Для подключения этого источника напряжения на демонстрационной плате производства компании Миландр предусмотрены два разъема (на самой отладочной плате и на плате адаптера), согласно рисунку 5.


Рисунок 5 - Разъемы для подключения источника напряжения на 7.2В на отладочной плате микроконтроллера 1986ВЕ8Т


В результате последовательность действий для корректного запуска платы и программирования OTP следующая:

  1. Убеждаемся, что выставлен соответствующий режим работы (в качестве примера это режим MODE[7:0] = 00000000 (WAIT BOOT JTAG A)) либо на большой отладочной плате, либо на адаптере в составе неё;
  2. Убеждаемся, что выставлены все перемычки на адаптере с микроконтроллером, за исключением перемычки SHDN и JTAG_EN;
  3. Подаём основное питание 3.3В;
  4. Подаём напряжения программирования 7.2В;
  5. Производим настройку IDE Keil в соответствии с адресами памяти OTP, куда будет записана программа, а также с отладчиком, который будет применяться для программирования;
  6. В IDE Keil выбираем алгоритм 1.flm и нажимаем Download. Начнётся процесс "Программирование";
  7. Снимаем все напряжения питания, сначала 7.2В, потом 3.3В. Далее запускаем микроконтроллер для дальнейшего допрограммирования, выполняя последовательно пункты 3-4.
  8. В IDE Keil выбираем алгоритм 2.flm и нажимаем Download. Начнется процесс "Допрограммирование";
  9. Снимаем все напряжения питания, сначала 7.2В, потом 3.3В. Далее запускаем микроконтроллер для дальнейшей верификации OTP-памяти, выполняя последовательно пункты 3-4.
  10. В IDE Keil выбираем алгоритм 3dc.flm и нажимаем Download. Начнется процесс "Верификация";
  11. Если процесс "Верификация" прошел неудачно, то повторяем процессы "Программирование" и "Допрограммирование" один раз с учётом снятия всех напряжений после каждой выполненной операции. Если после повторного выполнения операций процесс "Верификация" проходит неудачно, то микросхема бракуется;
  12. Снимаем напряжение программирования 7.2В;
  13. Снимаем основное питание 3.3В;
  14. После успешного выполнения всех операций, запись памяти OTP произведена.


Рисунок 6 - Настройка вкладки "Target" в IDE Keil

Далее, во вкладке "Debug", необходимо выбрать программатор-отладчик, который будет использоваться для программирования. Для корректного запуска процесса записи OTP требуются специфичные настройки в "Settings > вкладка Debug", которые представлены на рисунке 7 для программаторов J-Link и ULINK:


Рисунок 7 - Настройки отладчиков J-Link и ULINK в IDE Keil

Настройки программатора важно отметить отдельно по тексту:

  • Для программатора J-Link допускается работа только в режиме SW. Во вкладке "Debug", настройки "Connect & Reset Options" имеют следующие значения: Connect - Normal; Reset - Core
  • Для программаторов ULINK допускается работа как в режиме SW, так и в режиме JTAG. Во вкладке "Debug", настройки "Connect & Reset Options" имеют следующие значения: Connect - Normal; Reset - VECTRESET


Рисунок 8 - Настройки вкладок "Linker" и "Utilities" в IDE Keil

Теперь подробно разберем пункты шесть, восемь и десять из последовательности действий для корректного запуска платы и программирования OTP. Раздел выбора FLM доступен по пути "Options for Target" > Debug > Settings > Flash Download. Все важные настройки представлены на рисунке 9. Обратите на них особое внимание, в частности на то, что галочка "Program" должна устанавливаться для процессов "Программирование" и "Допрограммирование", при этом галочки "Verify" и "Reset and Run" должны быть неактивны. Для процесса "Верификация" должна стоять только галочка "Verify".


Рисунок 9 - Настройки вкладки "Flash Download" в IDE Keil

Отладочная плата, как и сама среда программирования Keil, готовы к тому, чтобы произвести программирование OTP-памяти. Перед запуском, в качестве еще одного проверочного пункта, можно выполнить следующее действие:

Не подавая питания 7.2В с источника напряжения, при этом выставив все необходимые настройки для программирования, попробовать начать записывать память OTP. Полоска записи в IDE Keil будет двигаться, но как таковой записи происходить не будет. После этого можно производить запись с использованием внешнего источника.

После успешной записи (подразумевается запись в старшие области OTP-памяти) для проверки проще всего запустить тот же проект в памяти ОЗУ. В режиме отладки, во вкладке Memory, с адреса 0x0101C000 уже будет находиться записанная программа (см. настройку пятого пункта). Для запуска программы из OTP проще всего скопировать адрес Reset_Handler, откуда и начинает исполняться программа, и вставить его в регистр ядра R15(PC). После успешного выполнения будет виден результат работы программы в памяти OTP. Вся последовательность действий продемонстрирована на рисунке 10.

Читайте также: