SPI-совместимые форматы посылок 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

SPI-совместимые форматы посылок



Посылка в режиме SPI состоит только из 8 бит данных. USART, работающий в режиме ведущего SPI, поддерживает два формата посылки:

· 8-бит данных с передачей первым старшего бита

· 8-бит данных с передачей первым младшего бита

По завершении передачи посылки из 8 бит, можно сразу передать новую посылку. В противном случае, линия передачи данных переходит в состояние IDLE (высокий уровень).

Инициализация USART

Инициализация USART выполняется по следующей последовательности:

· Установка высокого уровня на выводе TxD и опционально низкого уровня на выводе XCK.

· Настройка TxD и опционально XCK на вывод

· Настройка скорости и формата посылки.

· Задание режима работы (при выборе синхронного режима разрешается работа выхода XCK).

· Разрешение работы передатчика и/или приемника в зависимости от необходимости.

При управлении передачей по прерываниям перед инициализацией необходимо активизировать общий запрет прерываний.

Перед выполнением повторной инициализации, которая затрагивает настройки скорости или формата посылки, необходимо быть уверенным, что во время изменения регистров передача не выполняется. Убедится в том, завершил ли отправку всех данных передатчик и нет ли несчитанных данных в буфере приемника, можно с помощью флагов прерываний.

Отправка данных передатчиком USART

После разрешения работы передатчика, нормальная работа порта на выводе TxD перекрывается сигналом с выхода передатчика модуля USART. Дополнительно, в регистре направления вывод TxD должен быть настроен как выход. Подробности по управлению портом см. разделе 13 "Порты ввода-вывода".

Отправка посылок

Передача данных инициируется записью подлежащих отправке данных в буфер передачи (DATA). Данные из буфера передачи перемещаются в сдвиговый регистр, после освобождения которого возможна отправка новой посылки. Запись в сдвиговый регистр выполняется, когда он не занят передачей или сразу после передачи последнего стоп-бита предыдущей посылки. После записи данных в сдвиговый регистр, он передает одну полную посылку.

По завершении передачи посылки и при условии, что в буфере передачи нет новых данных, происходит установка флага прерывания по завершению передачи (TXCIF) и генерируется опциональное прерывание.

Запись в регистр передаваемых данных (DATA) возможна только, когда установлен флаг опустошения регистра данных (DREIF). Это сигнализирует о том, что регистр свободен и готов для записи новых данных.

При работе с посылками с числом бит меньшим восьми, старшие биты, записанные в регистр DATA, игнорируются. При передаче 9-битных данных, девятый бит данных необходимо записать в бит TXB8 перед записью младшего байта данных в DATA.

Отключение передатчика

Выполненное отключение передатчика вступит в силу только тогда, когда полностью завершится передача данных, в т.ч. выполняющаяся в данный момент и подготовленная, а точнее, когда окажутся свободными от данных сдвиговый регистр передатчика и буферный регистр передатчика. После отключения передатчика также отключается перекрытие вывода TxDn.

Получение данных приемником USART

После разрешения работы приемника, вывод RxD функционирует, как вход приемника USART. Данный вывод необходимо настроить как вход (настройка по умолчанию).

Прием посылок

Приемник начинает прием данных после обнаружения действительного старт-бита. Вслед за старт-битом происходит выборка каждого бита данных на частоте генератора скорости или частоте на выводе XCK и помещение их в сдвиговый регистр. Так происходит вплоть до приема первого стоп-бита посылки. Второй стоп-бит игнорируется приемником. После приема первого стоп-бита, когда в сдвиговый регистр приемника полностью принята посылка, содержимое этого сдвигового регистра перемещается в буфер приемника. Устанавливается флаг прерывания по завершению приема (RXCIF) и генерируется опциональное прерывание.

Опрос буфера приемника можно выполнить чтением регистра данных (DATA). Чтение регистра DATA нельзя выполнять, если флаг прерывания по завершению приема равен нулю. При работе с посылками с числом бит меньше 8, неиспользуемые старшие биты будут считываться с нулевыми значениями. При работе с 9-битными данных, девятый бит необходимо считать из бита RXB8 перед чтением принятых данных из регистра DATA.

Флаги ошибок приемника

Приемник USART имеет три флага ошибок. Флаги ошибки в посылке (FERR), переполнения буфера (BUFOVF) и ошибки паритета (PERR) доступны в регистре статуса. Флаги ошибок расположены в приемном буфере FIFO вместе с соответствующей им посылкой. Как следствие буферизации флагов ошибок, чтение регистра статуса необходимо выполнить перед чтением буфера (DATA), т.к. чтение регистра DATA приводит к изменению буфера FIFO.

Проверка паритета

После разрешения функции проверки паритета для каждой принятой посылки вычисляется паритет её бит данных, а результат вычислений сравнивается с принятым в соответствующей посылке битом паритета. Если обнаруживается несовпадение, устанавливается флаг ошибки паритета.

Отключение приемника

Отключение приемника происходит незамедлительно. Буфер приемника опустошается, а выполняющийся прием прерывается с потерей всех данных.

Очистка буфера приемника

При необходимости очистки буфера приемника в ходе нормальной работы приемника, необходимо выполнить чтение регистра DATA, когда флаг прерывания по завершению приема равен нулю.

Асинхронный прием данных

Модуль USART оснащен блоком восстановления синхронизации и данных, который используется во время асинхронного приема данных. Логика восстановления синхронизации используется для синхронизации принимаемых асинхронных посылок на выводе RxD с сигналом синхронизации, который сформирован генератором скорости. Логика восстановления данных выполняет выборку и фильтрацию низких частот каждого принятого бита и, как следствие, улучшает помехоустойчивость приемника. Рабочий диапазон асинхронного приемника зависит от точности внутреннего генератора скорости, скорости передачи принимаемых посылок и размера посылки в битах.



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 261; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.192.3 (0.006 с.)