Сообщение от WannaBe1989
|
Пишу программу под AT89c51 для работы с внешней памятью серии AT25 про протоколу SPI
|
Могу привести пример работы с памятью по протоколу SРІ с коментариями на украиском языке для контролера АТМЕGA32.
А так на что следует обратить внимание:
1. Настроить SPI - у меня настройка идет по регистру SPCR у тебя другой регистр но суть таже
7бит SPIE = 0 , Запрет прерываний 1-Разрешено
SPE = 0 , SPI остановлено, 1- Работа
DORD = 0 , передача начинается со старшего бита, 1- С младшего
MSTR = 1 , SPI Мастер, 0- slave
CPOL = 0 , Полярность тактового сигнала 0-(+), 1-(-)
CPHA = 0, Захват по переднему фронту, 1- по заднему
SPR1, SPR0 = 0 ,деление частоты генератора контролера 0- на 4,1-на16,2-64,3-128
SPCR= 00010000
2. Запуск SPI
3. Выбор микросхемы памяти
4. Команда разрешения записи
5. Подождать когда закончится запись команды (устанавливается флаг преривания по окончании передачи)
6. Снять выборку памяти (СS)
7. Выбор микросхемы памяти
8. Команда записи
9. Подождать ...
10. Передача адреса назначения старший байт
11. Подождать ...
12. Передача младшего байта
13. Подождать ...
14. Передача блока размером от 1байта до размера страницы с ожиданием окончания передачи очередного байта.
15. Снять CS и задержка 5 милисекунд для окончания цикла записи.
Обратите внимание, что в одном цикле записи, можно записать только одну страницу и переход со страницы на страницу не происходит.