ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС 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
РАБОТА ВЫВОДА 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 Dh(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 |
2019-10-11 | 219 | Обсуждений (0) |
5.00
из
|
Обсуждение в статье: ПОСЛЕДОВАТЕЛЬНЫЙ ИНТЕРФЕЙС SPI |
Обсуждений еще не было, будьте первым... ↓↓↓ |
Почему 1285321 студент выбрали МегаОбучалку...
Система поиска информации
Мобильная версия сайта
Удобная навигация
Нет шокирующей рекламы