Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

330 Часть 111. Практическое программирование микроконтроллеров АVR В версии «В» значение емкости страницы (и соответственно, емкости промежуточ­ ного буфера) - 264 байта. Модели емкостью более чем 8 Мбит имеют больший размер буфера, но столь же «некруглое» его значение . Версия 45DBxxxD отличает­ ся от версии «В» внутренней организацией - в ней, в частности, можно переклю­ чать объем страницы (и буфера) на размер 256 байтов. Принципиально это значе­ ния не имеет - заполнять буфер целиком, естественно, необязательно. Если вели­ чина порции данных критична, то можно просто проигнорировать «лишние» 8 байтов в каждой странице или (как, очевидно, подразумевается) использовать их для каких-нибудь служебных целей - например, для хранения контрольной суммы. Наличие буфера позволяет при необходимости модифицировать всего один или несколько байтов, быстро переписать страницу из памяти в буфер, заменить в нем нужные ячейки и записать обратно обновленную страницу целиком. Отметим, что микросхемы версии «В», начиная с емкости 2 Мбит (а микросхемы «D», начиная с емкости 4 Мбит), имеют по два таких буфера, что позволяет вести непрерывную запись, не останавливаясь на время долгих операций стирания и записи в основную память, которые тогда могут протекать в фоновом режиме. Количество страниц в памяти зависит от емкости кристалла - так, в 1 -мегабитовой версии таких страниц 5 1 2 (а общая емкость, стало быть, 1 3 5 1 68 байтов или 1 08 1 344 битов). На примере микросхемы 45DB0 1 1 B (емкостью 1 Мбит) мы далее и продемонстрируем базовые операции чтения и записи через интерфейс SPI . Запись и чтение fl аsh -памяти через SPI Мы используем для AT45DB раздельный режим записи и чтения, когда сначала данные пишутся в SRАМ-буфер, а затем он целиком переносится в страницу ос­ новной памяти (возможен и объединенный режим, когда запись и чтение произво­ дятся прямо в основной памяти «сквозным» методом, но он более громоздкий). На­ помним, что tlаsh-память перед записью требуется стирать отдельной операцией, но в ·серии AT45DB, как и в большинстве других разновидностей, эти операции мо­ гут быть объединены, причем суммарного времени на объединенную операцию уходит даже меньше. О перации с микросхемо й памяти 45DB01 1 В Сама по себе память 45DBO 1 1 В допускает тактовые частоты обмена до 20 МГц (а 45DB0 1 1 D, кстати, даже до 66 МГц), но мы, конечно, себе такое позволить не можем и скромно обойдемся величиной 1 МГц- максимально допустимой для аппаратного SPI в обычном режиме (без удвоения частоты) при частоте тактового генератора 4 МГц. Отметим, что после включения питания сразу начинать опера­ ции с микросхемой 45DB0 1 1 B нельзя - необходимо выждать не менее 20 мс (в программе далее это не отражено, т. к. запуск процедур будет осуществляться вручную) .

RkJQdWJsaXNoZXIy MTExODQxMg==