Смекни!
smekni.com

AVR микроконтроллер AT90S2333 фирмы Atmel (стр. 11 из 22)

в бит EEWE должен быть установлен бит EEMWE, тогда происходит запись в

EEPROM. Для записи в EEPROM должна соблюдаться следующая последовательность (порядок шагов 2 и 3 необязателен):

1

Ждем обнуления EEWE

2

Записываем адрес в EEAR (не обязательно)

3

Записываем данные в EEDR (не обязательно)

4

Устанавливаем в 1 бит EEMWE

5

Не позже чем через 4 такта после установки EEMWE устанавливаем EEWE

После того как время записи истечет (типично 2.5 mS для Vcc=5V и 4mS для Vcc=2.7), бит EEWE очищается аппаратно. Пользователь может от­слеживать этот бит и ожидать его установки в ноль, перед тем как запи­сывать следующий байт. При установке EEWE, ЦПУ останавливается на два цикла перед исполнением следующей команды.

Бит 0 - EERE - разрешение чтения из EEPROM. Сигнал EERE является стробом чтения из EEPROM. После установки нужного адреса в регистре EEAR, необходимо установить бит EERE. После того как бит EERE будет аппаратно очищен, в регистре EEDR. Чтение EEPROM занимает одну команду и не требует отслеживания бита EERE. При установке бита EERE, ЦПУ ос­танавливается на два цикла перед тем как будет выполнена следующая команда. Перед чтением пользователь должен проверять состояние бита EEWE, если регистры данных или адреса изменяются во время операции записи, запись в ячейку прерывается и результат операции записи стано­вится неопределенным.

ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС SPI

Интерфейс SPI позволяет производить высокоскоростной синхронный обмен данными между AT90S2333/4433 и периферийными устройствами или несколькими процессорами. SPI-интерфейс предлагает следующие возможно­сти:

  1. Полностью дуплексная 3-проводная синхронная передача данных;
  2. Работа в режиме ведущего или ведомого;
  3. Передача начиная со старшего или младшего бита;
  4. Четыре программируемые скорости передачи;
  5. Флаг прерывания по окончанию передачи;
  6. Флаг защиты от коллизий при записи
  7. Выход из режима Idle.

Соединение между ведущим и ведомым контроллерами показана ниже. Вывод PB5(SCK) является выходом тактовых импульсов для ведущего кон­троллера и входом для ведомого. Запись в регистр данных SPI ведущего контроллера запускает тактовый генератор. Записанные данные сдвигаются через вывод PB3(MOSI) на вывод PB3(MOSI) ведомого контроллера. После того как байт будет выведен тактовый генератор останавливается и вы­ставляет флаг окончания передачи (SPIF). Если разрешены прерывания (установлен бит SPIE в регистре SPCR), вызывается соответствующее прерывание. Вывод PB2(SS) ведомого контроллера должен быть подключен на землю. Два сдвиговых регистра в ведущем и ведомом контроллерах мож­но рассматривать как один распределенный 16-разрядный регистр сдвига. Когда данные сдвигаются из ведущего контроллера в ведомый, то же самое происходит в обратном направлении. За один цикл сдвига ведущий и ведо­мый контроллеры обмениваются байтами данных.

Система имеет одиночный буфер в направлении передачи и двойной в направлении приема. Передаваемый символ не записывается в регистр дан­ных SPI до тех пор, пока передача не завершится. При приеме до завер­шения операции сдвига данные должны быть прочитаны из регистра данных. Иначе предыдущий символ теряется. При разрешении SPI выводы MOSI, MISO, SCK и SS устанавливаются на ввод/вывод в соответствии с таблицей.

Таблица 16. Установка выводов SPI

Вывод

Направление в режиме ведущего

Направление в режиме ведомого

MOSI

Определяется пользователем

Вход

MISO

Вход

Определяется пользователем

SCK

Определяется пользователем

Вход

SS

Определяется пользователем

Вход

РАБОТА ВЫВОДА SS

Если SPI сконфигурирован как ведущий (установлен бит MSTR в SPCR), пользователь может задавать направление ввода для ножки SS. Ес­ли SS сконфигурирован на вывод, ножка работает как бит ввода/вывода общего назначения не влияющий на работу SPI. Если ножка сконфигуриро­вана на ввод, на нее необходимо подать высокий уровень, чтобы SPI ра­ботал в режиме ведущего. Если в режиме ведущего ножка SS установлена на ввод и внешним устройством устанавливается в низкий уровень, систе­мой SPI это воспринимается как выбор шины другим ведущим устройством и попытка передать данные ведомому. Для избежания конфликтов на шине си­стема SPI делает следующее:

1. Сбрасывается бит MSTR в SPCR, система SPI становится ведомой. При этом ножки MOSI и SCK становятся входами.

2. Устанавливается флаг SPIF в SPSR, если разрешены прерывания, будет исполнена программа обслуживания прерывания.

Таким образом если передача по SPI производится в режиме ведущего и существует возможность установки вывода SS в низкий уровень, преры­вание должно отслеживать установлен ли бит MSTR. Если бит MSTR будет сброшен при переходе в режим ведомого контроллера, обратно он должен быть установлен пользователем.

Если система SPI сконфигурирована как ведомая, вывод SS всегда является входом. Когда SS переводится в низкий уровень, система SPI активируется и ножка MISO, если это задано пользователем, становится выходом. Другие выводы являются входами. Если внешним устройством на вывод SS подан высокий уровень, все выводы становятся входами, а сис­тема SPI становится пассивной, т.е. не будет принимать данные.

Режимы обмена данными

Биты CPHA и CPOL определяют четыре комбинации фазы и полярности SCK относительно битов данных. Битом CPOL задается полярность импульсов на выводе SCK, при CPOL=0 полярность импульсов положительная, при от­сутствии импульсов на выводе удерживается низкий уровень. При CPOL=1 полярность импульсов отрицательная, при отсутствии импульсов на выходе высокий уровень. Битом CPHA задается фронт по которому обрабатываются биты данных. При CPHA=0 обработка происходит по переднему фронту им­пульсов SCK (для CPOL=0 переход из низкого уровня в высокий, для CPOL=1 - из высокого в низкий). При CPHA=1 обработка происходит по за­днему фронту импульсов SCK.

РЕГИСТР УПРАВЛЕНИЯ SPI – SPCR

0Dh(2Dh)

7

6

5

4

3

2

1

0

SPIE

SPE

DORD

MSTR

CPOL

CPHA

SPR1

SPRO0

R\W R\W R\W R\W R\W R\W R\W R\W

Начальное значение

0 0 0 0 0 1 0 0

Бит 7 - SPIE - Разрешение прерываний от SPI - если этот бит установ­лен, при установке бита SPIF в регистре SPSR выполняется прерывание от SPI, если разрешены общие прерывания.

Бит 6 - SPE - Разрешение SPI - Этот бит должен быть установлен для осуществления любых операций по шине SPI.

Бит 5 - DORD - Порядок бит данных - Если этот бит установлен, при об­мене первым передается младший бит данных. Если бит сброшен – первым передается старший бит.

Бит 4 - MSTR - Выбор ведущего/ведомого - При установке этого бита ши­на SPI работает в режиме ведущего, при сбросе - в режиме ведомого. Ес­ли вывод SS сконфигурирован как вход и устанавливается в низкий уро­вень когда установлен бит MSTR, бит MSTR сбрасывается и устанавливает­ся бит SPIF в регистре SPSR. Для возобновления работы в режиме ведуще­го пользователь должен установить этот бит.

Бит 3 - CPOL - Полярность тактовых сигналов - Этим битом задается по­лярность импульсов на выводе SCK, при CPOL=0 полярность импульсов по­ложительная, при отсутствии импульсов на выводе удерживается низкий уровень. При CPOL=1 полярность импульсов отрицательная, при отсутствии импульсов на выходе высокий уровень.

Бит 2 - CPHA - Фазировка тактовых импульсов. - Этим битом задается фронт по которому обрабатываются биты данных. При CPHA=0 обработка происходит по переднему фронту импульсов SCK (для CPOL=0 переход из низкого уровня в высокий, для CPOL=1 - из высокого в низкий). При CPHA=1 обработка происходит по заднему фронту импульсов SCK.

Биты 1,0 - SPR1,SPR0 - Выбор тактовой частоты SPI. - Этими битами за­дается скорость работы SPI шины для ведущего устройства. Для ведомого контролерра установка этих бит не имеет значения. Соотношение тактовой частоты процессора и частоты SCK приведено в таблице:

Таблица 17. Соотношение между SCK и тактовой частотой процессора

SPR1

SPR0

Частота SCK

SPR1

SPR0

Частота SCK

0

0

Fck/4

1

0

Fck/64

0

1

Fck/16

1

1

Fck/128

РЕГИСТР СОСТОЯНИЯ SPISPSR

0Eh(2Eh)

7

6

5

4

3

2

1

0

SPIF

WCOL

-

-

-

-

-

-

R R R R R R R R

Начальное значение

0 0 0 0 0 1 0 0

Бит 7 - SPIF - флаг прерывания SPI. После завершения обмена устанав­ливается бит SPIF и генерируется прерывание, если установлен бит SPIE в SPCR и разрешены глобальные прерывания. Этот флаг устанавливается и в том случае, если на вывод SS, сконфигурированный как вход, подается низкий уровень, когда SPI работает в режиме ведущего. Флаг SPIF сбра­сывается аппаратно при выполнении соответствующего вектора прерывания. Кроме того бит SPIF, если он был установлен, сбрасывается при первом же чтении регистра SPSR и последующем доступе к регистру данных SPI.