ATMEL |
ÊÒÖ-ÌÊ |
• Bit 3 - CPOL: Clock Polarity - Полярность тактового сигнала
SCK в режиме ожидания находится на высоком уровне при устано вленном в состояние 1 бите CPOL и на низком уровне при сброшенном бите CPOL. См. рис. 40 и 41.
•Bit 2 - CPHA : Clock Phase - Фаза тактового сигнала
Работа этого бита отражена на рис. 40 и 41.
•Bits 1,0 - SPR1, SPR0: SPI Clock Rate Select 1 and 0 - Выбор частоты тактового сигнала, биты 1 и 0
Эти два бита управляют частотой тактового сигнала прибор а, работающего в ведущем режиме. В ведомом режиме состояния битов влияния не оказы вают. Состояния битов и устанавливаемый коэффициент деления частоты fCL показан ы в таблице:
Таблица 23. Соотношения между SCK и частотой генератора.
SPR1 |
SPR0 |
Тактовая частота SCK |
|
0 |
0 |
fCL |
/ 4 |
0 |
1 |
fCL |
/ 16 |
1 |
0 |
fCL / 64 |
|
1 |
1 |
fCL |
/ 128 |
РЕГИСТР СТАТУСА SPI - SPSR - (Status Register)
Áèò |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$0E ($2E) |
SPIF |
WCOL |
- |
- |
- |
- |
- |
- |
SPSR |
Чтение/Запись |
R |
R |
R |
R |
R |
R |
R |
R |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
• Bit 7 - SPIF: SPI Interrupt Flag - Флаг прерывания по SPI
По завершении обмена последовательными данными бит SPIF уст анавливается в состояние 1 и, если бит SPIE в регистре SPCR установлен и разрешен о глобальное прерывание, генерируется сигнал прерывания. Бит SPIF очищает ся аппаратно при выполнении подпрограммы обработки соответствующего век тора прерывания. Бит SPIF может быть очищен также при первом считывании состояния р егистра статуса SPI, с установленным битом SPIF, с последующим обращением к регистру данных SPI (SPDR).
• Bit 6 - WCOL: Write Collision flag - Флаг ошибки при записи
Бит WCOL устанавливается в состояние 1 если в процессе переда чи данных выполнялась запись в регистр данных (SPDR). Чтение содержимого регистра данных, как и запись в него, выполненные во время пересылки данных, могут привес ти к неверному результату. Бит WCOL (и бит SPIF) аппаратно очищаются (сбрасываются в состоян ие 0) при первом считывании регистра статуса SPI, с установленным WCOL, с послед ующим обращением к регистру данных SPI (SPDR).
• Bit 5..0 - Res: Reserved bits - Зарезервированные биты
Эти биты в микроконтроллерах ATmega603/103 зарезервированы и при с читывании всегда покажут состояние 0.
114
ÊÒÖ-ÌÊ
РЕГИСТР ДАННЫХ SPI - SPDR - (SPI Data Register) |
|
|
|
||||||
Áèò |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$0F ($2F) |
MSB |
|
|
|
|
|
|
LSB |
SPDR |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Регистр данных SPI представляет собой регистр с возможност ью чтения/записи и предназначен для пересылки данных между регистровым фа йлом и сдвиговым регистром SPI. Запись в регистр SPDR инициирует передачу данных , считывание регистра приводит к чтению сдвигового регистра приема.
UART - универсальный асинхронный
приемопередатчик
Микроконтроллеры ATmega603/103 оснащены полнодуплексными универсальными приемопередатчиками (UART). Их основные возм ожности следующие:
•Генератор обеспечивает любую скорость передачи информ ации в бодах
•Высокая скорость передачи при низкой частоте XTAL
•8-разрядный или 9-разрядный форматы данных
•Фильтрация шума
•Обнаружение переполнения
•Обнаружение ошибок формирования кадров
•Детектирование бита ложного старта
•Три отдельных прерывания: по завершению передачи (TX Complete), п о пустому регистру передаваемых данных (TX Data Register Empty) и по завершению приема (RX Complete).
Передача данных
Блок-схема передатчика UART показана на рис. 42.
Передача данных инициируется записью передаваемых данн ых в регистр данных I/O UART (UDR). Данные пересылаются из UDR в сдвиговый регистр передач и в следующих случаях:
•Новый символ записан в UDR после того как был выведен из рег истра стоповый бит предшествовавшего символа. Сдвиговый регистр загружает ся немедленно.
•Новый символ записан в UDR прежде, чем был выведен стоповый бит предшествовавшего символа. Сдвиговый регистр загружает ся после выхода стопового бита передаваемого символа, находившегося в сдвиговом ре гистре.
Если из 10(11)-разрядного сдвигового регистра передачи вывед ена вся информация (сдвиговый регистр передачи пуст) данные из UDR п ересылаются в сдвиговый регистр. В это время устанавливается бит UDRE (UART Data Register Empty) регист ра статуса UART (USR). При установленном в состояние 1 бите UDRE UART готов принять следующий символ. Запись в UDR очищает бит UDRE. В то самое время, когда данные пересылаются из UDR в 10(11)-разрядный сдвиговый регистр, бит 0 сдвигового регистра сбрасывается в состояние 0 (состояние 0 - стартовый бит) а би т 9 или 10 устанавливается в состояние 1 (состояние 1 - стоповый бит). Если в регистре упр авления UART (UCR) установлен бит CHR9 (т.е. выбран режим 9-разрядного слова данны х), то бит TXB8 регистра UCR пересылается в бит 9 сдвигового регистра переда чи.
Сразу после пересылки данных в сдвиговый регистр тактом б од-генератора стартовый бит сдвигается на вывод TXD. За ним следует LSB данны х. Когда будет
115
ATMEL |
ÊÒÖ-ÌÊ |
выдан стоповый бит сдвиговый регистр загружается новой п орцией данных, если она была записана в UDR во время передачи. В процессе загрузки би т UDRE находится в установленном состоянии. Если же новые данные не будут за гружены в UDR до выдачи стопового бита, флаг UDRE остается установленным. В этом случ ае, после того как стоповый бит будет присутствовать на выводе TXD в течение од ного такта, в регистре статуса UART (USR) устанавливается флаг завершения передачи TXC (T X Complete Flag).
Установленный в состояние 1 бит TXEN регистра UCR разрешает пер едачу UART. При очищенном бите TXEN (сброшенном в состояние 0) вывод PE1 мож ет быть использован в качестве вывода I/O общего назначения. При уст ановленном бите TXEN передатчик UART подключается к PE1 и использует его в качеств е вывода выхода, независимо от установки бита DDE1 в DDRE.
|
Шина данных |
|
|
|
|
XTAL |
Áîä- |
Áîä x 16 |
/16 |
Регистр данных |
|
генератор |
|
I/O UART (UDR) |
|
||
|
|
|
|
||
|
Сохранение UDR |
|
Логика |
||
|
Разрешение сдвига |
|
|||
|
|
управления |
|||
|
|
|
|
|
|
|
|
|
|
|
выводом |
|
Управляющая |
|
Áîä |
10(11)-разрядный сдвиговый |
1 |
|
логика |
|
|
регистр передачи |
TXD |
|
|
|
|
||
|
|
IDLE |
|
|
|
Шина данных
|
RXEN TXEN CHR9 RXB8 TXB8 |
RXC TXC UDRE FE OR |
||||||
|
|
|
|
|
|
|
|
|
Регистр управления |
|
Регистр статуса |
||||||
UART (UCR) |
|
|
UART (USR) |
|||||
|
|
|
|
|
|
|
|
|
RXCIE TXCIE |
UDRIE |
|
|
TXC UDRE |
|
|
||
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
TXC UDRE
IRQ IRQ
Рис. 42. Передатчик UART
116
ÊÒÖ-ÌÊ
Прием данных
Шина данных
XTAL |
|
|
Áîä- |
|
Áîä x 16 |
/16 |
Áîä |
|
|
|
Регистр данных |
|
|||||
|
|
генератор |
|
|
|
|
|
|
I/O UART (UDR) |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Логика |
|
|
|
Сохранение UDR |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
управления |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
выводом |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RXD |
|
|
|
|
|
Логика восстановления |
|
|
10(11)-разрядный сдвиговый |
||||||||
|
|
|
|
|
данных |
|
|
|
регистр приема |
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Шина данных
RXEN TXEN CHR9 RXB8 TXB8 |
RXC TXC UDRE FE OR |
Регистр управления |
Регистр статуса |
|||
|
UART (UCR) |
|
UART (USR) |
|
|
|
|
|
|
RXCIE |
TXCIE UDRIE |
|
RXC |
|
|
|
|
|
|
|
|
|
|
|
RXC
IRQ
Рис. 43 Приемник UART.
Логика восстановления данных производит выборку состоя ний вывода RXD с частотой в 16 раз большей, чем частота бодов. При нахождении линии в пассивном состоянии одиночная выборка нулевого логического уровн я будет интерпретироваться как падающий фронт стартового бита и будет запущена после довательность детектирования стартового бита. Считается, что первая выб орка обнаружила первый нулевой логический уровень вероятного стартового бита. Н а выборках 8, 9 и 10 приемник вновь тестирует вывод RXD на изменение логических состояни й. Если две или более из этих трех выборок обнаружат логические 1, то данный вероят ный стартовый бит отвергается как шумовой всплеск и приемник начнет выявля ть и анализировать следующие переходы из 1 в 0.
Если же был обнаружен действительный стартовый бит, то на чинает производиться выборка следующих за стартовым битом информационных бит ов. Эти биты также тестируются на выборках 8, 9 и 10. Логическое состояние бита принимается по двум и более (из трех) одинаковым состояниям выборок. Все биты вв одятся в сдвиговый регистр приемника с тем значением, которое было определено тестир ованием выборок. Тестирование выборок битов принимаемых символов показа но на Рис. 44.
117
ATMEL |
|
|
|
|
|
|
|
|
ÊÒÖ-ÌÊ |
|
RXD Стартовый |
|
|
|
|
|
|
|
|
|
|
áèò |
D0 |
D1 |
D2 |
D3 |
D4 |
D5 |
D6 |
D7 |
Стоповый |
|
Выборки |
áèò |
|||||||||
|
|
|
|
|
|
|
|
приемника 






Рис. 44. Тестирование выборок принимаемых данных
При поступлении стопового бита необходимо чтобы не менее двух выборок из трех подтвердили прием стопового бита (показали высокий уровень). Если же две или более выборок покажут состояния 0, то, при пересылке принят ого байта в UDR, в регистре статуса UART (USR) устанавливается бит ошибки кадра FE (Framing Error). Для о бнаружения ошибки кадра пользователь перед чтением регистра UDR долже н проверять состояние бита FE. Флаг FE очищается при считывании содержимого регист ра данных UART (UDR). Вне зависимости от того принят правильный стоповый бит ил и нет, данные пересылаются в регистр UDR и устанавливается флаг RXC в регистре статуса UART (US R). Регистр UDR фактически является двумя физически отдельными регист рами, один из которых служит для передачи данных и другой для приема. При считыв ании UDR обращение ведется к регистру приема данных, при записи обращение ве дется к регистру передачи. Если выбран режим обмена 9-разрядными словами данных (уста новлен бит CHR9 регистра UCR), при пересылке данных в UDR бит RXB8 регистра UCR загруж ается в бит 9 сдвигового регистра передачи. Если после получения с имвола к регистру UDR не было обращения, начиная с последнего приема, в регистре UCR устанавливается флаг переполнения (OR). Это означает, что новые данные, перес ылаемые в сдвиговый регистр не могут быть переданы в UDR и потеряны. Бит OR буферир ован и доступен тогда, когда в UDR читается байт достоверных данных. Пользов ателю, для обнаружения переполнения, необходимо всегда проверять флаг OR после сч итывания содержимого регистра UDR.
При очищенном (сброшенном в логическое состояние 0) бите RXEN регистра UCR приемник запрещен. Это означает, что вывод PE0 может исполь зоваться в качестве вывода I/O общего назначения. При установленном бите RXEN, прие мник UART подключается к выводу PE0, который работает как вывод входа, вне зависимости от установки бита DDE0 в DDRE.
При установке UART вывода PE0 на работу в качестве входа, бит PORTE0 может использоваться для управления нагрузочным резист ором вывода.
Управление UART
РЕГИСТР ДАННЫХ UART - UDR - (UART I/O Data Register)
Áèò |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$0C ($2C) |
MSB |
|
|
|
|
|
|
LSB |
UDR |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
Начальное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
В действительности регистр UDR является двумя физически ра зделенными регистрами - регистром передачи данных и регистром приема данных, использующими одни и те же адреса I/O. При записи в регистр запись производи тся в регистр передачи данных UART, при чтении происходит чтение содержимого регист ра приема данных UART.
118