Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





При тактовой частоте МК 4 МГц такая процедура обеспечит скорость передачи порядка 0,5 МГц. Пустые операции (пор) нужны, чтобы сформировать задержку (~250 не при 4 МГц) между формированием данных на линиях MISO и MOSI и моментом их чтения (перепадом на SCK). Если быстродействие ведомого позволяет, то эти операции можно убрать.

В качестве достаточно простого примера использования SPI рассмотрим обмен с flash-памятью серии AT45DB. Но сначала попробуем подробнее разобраться в различных типах памяти, которые имеются в продаже.

О разновидностях энергонезависимой памяти
Напомним, что существуют однократно программируемые кристаллы (OTP EPROM), и перепрограммируемая энергонезависимая, память — по-русски, ППЗУ. УФ-стираемая память давно не применяется, и все современные ППЗУ являются электрически перепрограммируемыми (ЭСППЗУ) или EEPROM. Модная ныне flash-память тоже, вообще говоря, относится к EEPROM, но чтобы подчеркнуть разницу в технологиях, чаще всего под EEPROM имеют разновидность с произвольным доступом к байтовым (обычно) ячейкам, в то время как flash-память может программироваться только блоками. В табл. 11.1 приведены некоторые наиболее распространенные типы микросхем памяти производства Atmel. Отметим, что номера, обозначающие серию (а также в большинстве случаев и цоколевка выводов), чаще всего сохраняются для тех же разновидностей памяти и у других производителей.

Таблица 11.1. Некоторые серии микросхем памяти производства Atmel
Номер серии Емкость, бит Тип и интерфейс
27 256К-8М Параллельная OTP EPROM
28 16К-4М Параллельная EEPROM
25 1К-512К Последовательная (SPI) EEPROM
25F 1К-4М Последовательная (SPI) Flash
25DF 4М-64М Последовательная (SPI) Flash
45DB 1М-64М Высокоскоростная последовательная (SPI) Flash со встроенным буфером
24 1К-1М Последовательная (l2C) EEPROM

Разницу между EEPROM и Flash легко понять, если внимательно рассмотреть технические характеристики той и другой: например, в серии АТ25 (EEPROM) запись одного байта занимает 5 мс, в то время, как в серии AT25F
(Flash) сама по себе запись займет всего 75 мкс, но предварительно придется стереть сразу целый сектор, например, размером 32 кбайта, что потребует более секунды. Но даже с учетом этой операции, среднее время на перепрограммирование одного байта во Flash окажется примерно в 100 раз меньше. Отсюда и различие в применении: при большой емкости последовательно заполняемой памяти целесообразнее Flash, если же требуется стохастическое выборочное заполнение памяти побайтно, без перепрограммирования других ячеек, то EEPROM оказывается удобнее. Заметим, что первый случай встречается на практике значительно чаще, потому Atmel рекомендует переходить на flash-память. Доступ к "чистой" EEPROM проще, и заключается по сути в двух очевидных операциях: послать команду— записать/прочесть байт. Зато такая память в целом медленнее, и к тому же, как видно из табл. 11.1, имеет меньшую емкость. Работу с EEPROM серии АТ24 мы разберем в следующей главе, когда будем говорить о функционировании интерфейса 12С. Использовать такую память со скоростным интерфейсом SPI (серию АТ25) попросту нецелесообразно, и сама Atmel "обычную" 25-ю уже не развивает, акцентируя внимание разработчиков на серии AT25F.

Серия AT25F неудобна тем, что не имеет буфера, и каждое обращение для записи занимает достаточно большое время (кроме того, микросхемы АТ25 и AT25F отличаются излишне усложненным и довольно запутанным протоколом защиты от записи). В некоторых разновидностях Flash (в т. ч. в разбираемой далее серии AT45DB) имеется встроенный SRAM-буфер, позволяющий временно хранить содержимое ячеек при перепрограммировании. До 2001 г. выпускалась "обычная" АТ45, которая работала значительно медленнее современных типов, в настоящее время ее производство полностью прекращено и взамен предложена серия 45DB.

Здесь мы опишем flash-память серии AT45DBxxxB, которая отличается встроенным SRAM-буфером и операциями записи, объединяющими стирание страницы в памяти с собственно записью. Серия работает при напряжении питания 2,7-3,6 В и может иметь емкость до 64 Мбит (8 Мбайт). Обратите внимание, что, как и любая flash-память, микросхемы серии AT45DB довольно много потребляют в режиме записи/стирания — до 20-25 мА. Это присуще всем микросхемам энергонезависимой памяти, причем в общем случае потребление с увеличением емкости кристалла растет.

В версии "В" значение емкости страницы (и, соответственно, емкости промежуточного буфера) — 264 байта. Модели емкостью более чем 8 Мбит, имеют больший размер буфера, но столь же "некруглое" его значение. Версия 45DB;txtD отличается от версии "В" внутренней организацией — в ней, в частности, можно переключать объем страницы (и буфера) на размер 256 байт. Принципиально это значения не имеет: заполнять буфер целиком, естественно, необязательно. Если величина порции данных критична, то можно просто проигнорировать "лишние" 8 байт в каждой странице или (как, очевидно, подразумевается) использовать их для каких-нибудь служебных целей — например, для хранения контрольной суммы.

Наличие буфера позволяет при необходимости модифицировать всего один или несколько байтов быстро переписать страницу из памяти в буфер, заменить в нем нужные ячейки, и записать обратно обновленную страницу целиком. Отметим, что микросхемы версии "В", начиная с емкости 2 Мбита (а микросхемы "D", начиная с емкости 4 Мбита), имеют по два таких буфера, что позволяет вести непрерывную запись, не останавливаясь на время долгих операций стирания и записи в основную память, которые тогда могут протекать в фоновом режиме.
Количество страниц в памяти зависит от емкости кристалла— так, в 1-мегабитовой версии таких страниц 512 (а общая емкость, стало быть, 135 168 байт или 1 081 344 бит, что несколько больше мегабита). На примере микросхемы 45DB011В*(емкостью 1 Мбит) мы и продемонстрируем базовые операции чтения и записи через интерфейс SPI.




     
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru