Порты передачи данных
USART микроконтроллера PIC
В качестве примера аппаратной реализации последовательного порта, которую, помимо других вариантов использования, можно применить и для реализации RS232, давайте рассмотрим устройство USART (Universal Synchronous Asynchronous Receiver Transmitter), включенное в состав ряда моделей микроконтроллеров PIC фирмы Microchip [www.microchip.com PICMicro].
USART может использоваться либо как полнодуплексный асинхронный порт с форматом кадра, совместимым с RS232, либо как полудуплексный синхронный стробируемый порт. Устройство состоит из приемника (receiver), передатчика (transmitter) и генератора тактовой частоты (baud rate generator) (рис. 9.10).
Рис. 9.10. Структура USART микроконтроллера PIC
Генератор тактовой частоты представляет собой двоичный счетчик, уменьшаемый на единицу на каждом такте центрального процессора. Когда счетчик доходит до нуля, генерируется один такт и счетчик инициализируется исходным значением. Фактически, генератор представляет собой делитель тактовой частоты процессора в заданном отношении. Документ [www.microchip.com PICMicro] содержит таблицу, по которой можно рассчитать коэффициент деления, чтобы из типичных тактовых частот процессора получить (иногда с определенной ошибкой) стандартные частоты RS232.
Счетчик генератора тактовой частоты программно недоступен, а начальное значение этого счетчика (оно же коэффициент деления) задается 8-разрядным регистром SPBRG. USART использует одну и ту же тактовую частоту и для приемника, и для передатчика. При синхронной работе в режиме ведомого встроенный генератор тактовой частоты не используется вообще.
Приемник и передатчик во многом аналогичны по структуре и имеют по два программно-доступных 8-разрядных регистра. Первый регистр называется регистром управления и статуса (status and control register), а второй – регистром данных. Значения битов управляющих регистров приемника и передатчика приведены в табл. 9.1 и 9.2. И приемник, и передатчик имеют также программно-недоступный сдвиговый регистр, называемый TSR (Transmit SHIFT Register) у передатчика и RSR (Receive SHIFT Register) у приемника.
Таблица 9.1. Описание битов управляющего регистра передатчика USART.
Бит | Описание |
---|---|
7 | CSRC: Clock SouRCe – выбор источника тактовой частоты при асинхронном режиме игнорируется, при синхронном режиме: 1 = режим ведущего (USART генерирует стробовый сигнал) 0 = режим ведомого (стробовый сигнал генерирует другое устройство) |
6 | ТХ9: передавать 9 бит 1 = передавать 9 бит 0 = передавать 8 бит |
5 | TXEN: Transmission ENabled – разрешить передачу: 1 = передача разрешена 0 = передача запрещена |
4 | SYNC: бит выбора режима USART 1 = синхронный режим 0 = асинхронный режим |
3 | Не используется. Читается как О |
2 | BRGH: Baud Rate Generator High – переключение режимов работы тактового генератора |
1 | TRMT: бит состояния сдвигового регистра передатчика: 1 = TSR пуст 0 = TSR содержит данные (идет передача) |
0 | TX9D: девятый бит передаваемых данных (может использоваться как бит четности) |