AVR микроконтроллер AT90S2333 фирмы Atmel

Методическое пособие - Радиоэлектроника

Другие методички по предмету Радиоэлектроника

пор, пока передача не завершится. При приеме до завершения операции сдвига данные должны быть прочитаны из регистра данных. Иначе предыдущий символ теряется. При разрешении 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)76543210SPIESPEDORDMSTRCPOLCPHASPR1SPRO0R\WR\WR\WR\WR\WR\WR\WR\WНачальное значение00000100

Бит 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 и тактовой частотой процессора

 

SPR1SPR0Частота SCKSPR1SPR0Частота SCK00Fck/410Fck/6401Fck/1611Fck/128

 

 

 

 

 

 

РЕГИСТР СОСТОЯНИЯ SPI SPSR

 

0Eh(2Eh)76543210SPIFWCOL------RRRRRRRRНачальное значение00000100

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