Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЦУ_конспект_12.docx
Скачиваний:
68
Добавлен:
14.11.2019
Размер:
5.57 Mб
Скачать

2.5.1 Модуль последовательного обмена uart

Для различных типов встроенных контроллеров последовательного обмена сложился стандарт "де-факто" – модуль UART (Universal Asynchronous Receiver and Transmitter). В переводе с английского UART – универсальный асинхронный приемопередатчик. Однако большинство модулей UART, кроме асинхронного режима обмена, способны также реализовать режим синхронной передачи данных. Поэтому более правильным с точки зрения терминологии было бы называть эти модули USART (Universal Synchronous/ Asynchronous Receiver and Transmitter) – универсальный синхронно-асинхронный приемопередатчик. Иногда этот модуль называют SCI (Serial Communication Interface). Следует отметить, что модуль типа SCI обычно реализует только режим асинхронного обмена, т.е. его функциональные возможности уже по сравнению с модулями типа UART. Однако бывают и исключения. Протоколы интерфейсов локальных сетей на основе МК (I2C и CAN) отличает более сложная логика работы. Поэтому контроллеры CAN интерфейса всегда выполняются в виде самостоятельного модуля.

Модуль UART в максимальной конфигурации обычно реализует два типа протокола обмена в асинхронном режиме (кадр длиною в 10 или 11 бит) и два типа протокола в синхронном режиме (трехпроводный полнодуплексный или двухпроводный полудуплексный обмен).

Упрощенная структура модуля uart.

Модуль состоит из двух независимых подсистем: передатчика (Transmitter) и приемника (Receiver), поэтому возможен режим одновременной передачи и приема информации. Основу каждой подсистемы составляет сдвиговый регистр и параллельный регистр буфера данных. Обращение к буферу данных приемника и передатчика осуществляется по одному и тому же адресу, но при выполнении операции записи данные будут помещены в буфер передатчика TDBUF, операции чтения – данные будут считаны из буфера приемника RDBUF.

Передача данных от МК к другому устройству инициируется записью байта данных в регистр TDBUF. Если работа передатчика разрешена (бит ТЕ в регистре управления модулем равен 1), то аппаратные средства модуля загружают содержимое TDBUF в сдвиговый регистр и под управлением генератора скорости обмена биты из сдвигового регистра, начиная с младшего D0, последовательно передаются на вывод TxD MK. По завершении передачи байта данных устанавливается бит TI, который информирует МК о том, что буфер передатчика пуст и в него могут быть загружены новые данные для передачи. Бит TI генерирует запрос на прерывание, если прерывания от передатчика в МК разрешены, и может быть считан программно.

Если работа приемника разрешена, то после распознавания стартового бита аппаратные средства приемника преобразуют данные, которые поступают на вход RxD в последовательном коде, в параллельный код. После завершения приема последнего бита в сдвиговом регистре приемника находится принятый байт данных, который автоматически переносится в регистр RDBUF. Одновременно устанавливается в 1 флаг завершения приема RI. Бит RI может быть считан под управлением программы, и, если прерывания от приемника разрешены, генерируется запрос на прерывание. Сразу после копирования байта данных из сдвигового регистра в RDBUF приемник может начать формирование следующего байта данных, отдельные биты которого продолжают поступать на вход RxD. Однако необходимо, чтобы центральный процессор МК успел считать данные из буферного регистра RDBUF до завершения формирования в сдвиговом регистре следующего принятого байта.

Для повышения достоверности приема каждого разряда аппаратные средства модуля UART считывают уровень сигнала на входе RxD три раза в течение интервала присутствия бита. Значение бита, которое будет занесено в младший разряд сдвигового регистра приемника, определяется мажоритарным способом: по принципу два из трех. Модули SCI сообщают пользователю о наличии шума на линии приема: если не все три значения при приеме любого из битов кадра совпали, то устанавливается флаг NE (Noise Error).

Скорость обмена и формат кадра приемопередачи назначаются в процессе инициализации модуля одинаковыми для приемника и для передатчика. Все модули типа UART предусматривают два типа кадров асинхронного обмена – 10 или 11 битными кадрами (8 и 9 бит данных).