F60-67 (1041605), страница 51
Текст из файла (страница 51)
раздел 23.1). Буферизация принимаемых данных позволяетУАПП1 начать прием второго входящего байта данных до того, как программа закончит чтение предыдущегобайта данных.С работой УАПП1 связаны следующие регистры специального назначения: регистр управленияУАПП1 (SCON1) и буфер данных УАПП1 (SBUF1). Одна и та же ячейка памяти, адресуемая как SBUF1,обеспечивает доступ и к регистру передатчика, и к регистру приемника. При чтении регистра SBUF1осуществляется доступ к регистру приемника, а при записи регистра SBUF1 - к регистру передатчика.Если прерывания от модуля УАПП1 разрешены, то запрос прерывания генерируется при завершениипередачи байта данных (установка в 1 флага TI1 в регистре SCON1) или при получении байта данных(установка в 1 флага RI1 в регистре SCON1). Флаги прерываний от УАПП1 не сбрасываются аппаратно припереходе к процедуре обслуживания прерывания. Они должны сбрасываться программно.
Это позволяетпрограмме определить причину, вызвавшую прерывание от УАПП1 (завершение передачи или завершениеприема).Рисунок 23.1. Структурная схема УАПП1SFR шинаЗаписьв SBUF1TB81SBUF1SETD(регистр сдвига ТХ)QTX1CLRМатрицаДетектор нуляГенерациябита STOPСдвигДанныеУправление передатчиком (Tx)СтартТактирование TxПередачаПрерывание TxSCON1TI1Портввода/выводаПрерывание отпоследовательногопортаMCE1REN1TB81RB81TI1RI1S1MODEСхемагенератораскоростиобменаУАПП1RI1Прерывание RxТактирование RxУправление приемником (Rx)СтартСдвиг0x1FFRB81ЗагрузкаSBUF1Входной регистрсдвига (9 бит)ЗагрузкаSBUF1SBUF1(защелка RX)ЧтениеSBUF1SFR шина277Ред. 1.2RX1МатрицаC8051F060/1/2/3/4/5/6/723.1.
Усовершенствованный режим генерации скорости передачи данных.Скорость передачи данных УАПП1 генерируется Таймером 1, работающим в 8-разрядном режиме савтоперезагрузкой. Частота передатчика (ТХ) определяется переполнением регистра TL1; частота приемникаопределяется переполнением регистра-копии регистра TL1 (обозначенного как «RX-Таймер» на рис.23.2),который недоступен из программы пользователя.
Скорость передачи данных передатчика и приемника равнаделенной на два частоте переполнения регистров TL1 и RX-Таймер соответственно. RX-Таймер работает тогда,когда включен Таймер 1 и использует то же самое значение перезагрузки (TH1). Однако перезагрузка регистраRX-Таймер происходит в тот момент, когда на выводе RX обнаруживается событие START.
Это позволяетначать прием данных в любой момент при обнаружении события START, независимо от состояния ТаймераТХ.Рисунок 23.2. Логика генератора скорости передачи данных УАПП1УАПП1Таймер 1TL1Переполнение2Тактирование TX2Тактирование RXTH1Сигнал запускаТаймер RXПереполнениеТаймер 1 следует настроить для работы в режиме 2, т.е. как 8-разрядный таймер с автоперезагрузкой(см.
раздел 24.1.3). Значение перезагрузки Таймера 1 следует установить таким образом, чтобы частотапереполнений таймера была в два раза больше необходимой скорости передачи данных. Частота тактовогосигнала Таймера 1 может быть одной из следующих:1) SYSCLK;2) SYSCLK/4;3) SYSCLK/12;4) SYSCLK/48;5) Частота внешнего генератора / 8.Для любой из этих частот скорость передачи данных УАПП1 определяется из уравнения 23.1.Уравнение 23.1. Скорость передачи данных УАПП1Скорость передачи данных УАПП1 = T1CLK / ((256 – T1H) x 2),гдеT1CLK – частота тактирования Таймера 1;T1H – старший байт Таймера 1 (значение перезагрузки).Выбор частоты тактирования Таймера 1 описан в разделе 24.1. В таблицах 23.1 – 23.6 приведенысистемные параметры для стандартных скоростей обмена при различных частотах системного тактовогосигнала.
Следует отметить, что внутренний генератор может генерировать системный тактовый сигнал, в товремя как сигнал от внешнего генератора подается на Таймер 1 (подробнее см. раздел 24.1).Ред. 1.2278C8051F060/1/2/3/4/5/6/723.2. Режимы работы УАПП1УАПП1 обеспечивает стандартный асинхронный полнодуплексный обмен данными. Режим работыУАПП1 (8-разрядный или 9-разрядный) выбирается при помощи бита S1MODE (SCON1.7). Типичныеварианты использования УАПП приведены на рисунке ниже.Рисунок 23.3. Примеры использования УАПП1RS-232LEVELXLTRRS-232TXC8051FxxxRXORTXTXRXRXC8051FxxxMCU23.2.1. 8-разрядный УАПП.В режиме 8-разрядного УАПП для передачи одного байта данных используются 10 бит: одинстартовый бит, восемь бит данных (МЗР вперед) и один стоповый бит. Данные передаются МЗР вперед черезвнешний вывод TX1 и принимаются через внешний вывод RX1.
При приеме в регистре SBUF1 сохраняютсявосемь бит данных, а бит RB81 (SCON1.2) принимает значение стопового бита.Передача данных начинается, когда происходит запись байта данных в регистр SBUF1. Флагпрерывания от передатчика TI1 (SCON1.1) устанавливается в 1 в конце передачи (в начале передачи стоповогобита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN1(SCON1.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF1, еслисоблюдаются следующие условия: RI1 должен быть равен лог.0, и, если MCE1 = 1, то стоповый бит долженбыть равен лог.1. В случае переполнения буфера приемника первые принятые 8 бит данных загружаются врегистр приемника SBUF1, а биты данных, вызвавшие переполнение, теряются.Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF1, стоповый битсохраняется в бите RB81 и устанавливается в 1 флаг RI1.
Если эти условия не соблюдаются, то SBUF1 и RB81не будут загружаться и флаг RI1 не устанавливается. При установке флагов TI1 или RI1 будет сгенерированопрерывание, если оно разрешено.Рисунок 23.4. Временные диаграммы в режиме 8-разрядного УАППЛог.1Лог.0БитСТАРТD0D1D2D3БИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТА279Ред. 1.2D4D5D6D7БитСТОПC8051F060/1/2/3/4/5/6/723.2.2.
9-разрядный УАПП.В режиме 9-разрядного УАПП для передачи одного байта данных используются 11 бит: одинстартовый бит, восемь бит данных (МЗР вперед), программируемый девятый бит данных и один стоповый бит.При передаче значение девятого бита данных определяется значением бита TB81 (SCON1.3), которыйустанавливается/сбрасывается программой пользователя.
Значение девятого бита может соответствоватьзначению флага четности Р регистра PSW или использоваться для организации связи с несколькими МК. Приприеме значение девятого бита сохраняется в бите RB81 (SCON1.2), а стоповый бит игнорируется.Передача данных начинается, когда происходит запись байта данных в регистр SBUF1. Флагпрерывания от передатчика TI1 (SCON1.1) устанавливается в 1 в конце передачи (в начале передачи стоповогобита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN1(SCON1.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF1, еслисоблюдаются следующие условия: RI1 должен быть равен лог.0, и, если MCE1 = 1, то стоповый бит долженбыть равен лог.1 (когда MCE = 0 состояние девятого бита данных не имеет значения).
Если эти условиясоблюдаются, то восемь бит данных сохраняются в регистре SBUF1, девятый бит данных сохраняется в битеRB81 и устанавливается в 1 флаг RI1. Если эти условия не соблюдаются, то SBUF1 и RB81 не будутзагружаться и флаг RI1 не будет устанавливаться. При установке флагов TI1 или RI1 будет сгенерированопрерывание от модуля УАПП1, если оно разрешено.Рисунок 23.5.
Временные диаграммы в режиме 9-разрядного УАППЛог.1Лог.0БитСТАРТD0D1D2D3D4D5D6D7D8БитСТОПБИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТАРед. 1.2280C8051F060/1/2/3/4/5/6/723.3. Поддержка связи с несколькими МК9-разрядный режим УАПП поддерживает мультимикроконтроллерный обмен данными между ведущимМК и одним или несколькими ведомыми МК, для чего особым образом используется девятый бит данных.Когда ведущий МК хочет передать данные одному или нескольким ведомым МК, он прежде всего посылаетбайт адреса, чтобы выбрать конкретное(-ые) устройство(-а). Адресный байт отличается от байта данных тем,что его девятый бит равен лог.1; в байте данных девятый бит всегда равен лог.0.Установка в 1 бита MCE1 (SCON1.5) ведомого МК настраивает его модуль УАПП1 таким образом, чтопри получении стопового бита УАПП1 будет генерировать прерывание только в том случае, если принятыйдевятый бит равен лог.1 (RB81 = 1), уведомляя тем самым систему о том, что принят адресный байт.
Впроцедуре обработки прерывания от УАПП1 необходимо сравнить принятый адрес с собственным 8-разряднымадресом ведомого. Если эти адреса совпадают, ведомый МК должен сбросить в 0 свой бит MCE, чтобыразрешить генерацию прерываний при получении следующих байтов данных. Ведомые МК, которые не былиадресованы, оставляют свои биты MCE равными 1 и не генерируют запросов прерываний при полученииследующих байтов данных, т.е.
игнорируют их. После того, как все сообщение получено, адресованныйведомый МК устанавливает в 1 бит MCE, чтобы игнорировать все посылки до получения следующегоадресного байта.Одному ведомому устройству можно назначить несколько адресов и/или один адрес можно назначитьнескольким ведомым устройствам, поэтому возможна “широковещательная ” передача данных более чемодному ведомому устройству одновременно. Ведущий процессор можно настроить на прием всех сообщенийили протокол обмена можно реализовать таким образом, чтобы временно менять местами ведущего и ведомого,обеспечив тем самым полудуплексный обмен данными между истинным ведущим и ведомым(-и).Рисунок 23.6.
Пример использования УАПП в многопроцессорном режимеВедущееустройствоВедомоеустройствоВедомоеустройствоВедомоеустройствоVDDRX281TXRXTXRXРед. 1.2TXRXTXC8051F060/1/2/3/4/5/6/7Рисунок 23.7. SCON1: Регистр управления УАПП1R/WS1MODER/W-R/WMCE1R/WREN1R/WTB81R/WRB81R/WTI1R/WRI1Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:01000000SFR Адрес: 0x98(доступен в битовом SFR страница: 1режиме адресации)Бит 7: S1MODE: Режим работы УАПП1.Этот бит выбирает режим работы УАПП1.0: Режим 0: 8-разрядный УАПП с изменяемой скоростью передачи данных.1: Режим 1: 9-разрядный УАПП с изменяемой скоростью передачи данных.Бит 6: Не используется. Читается как 1b. Запись не имеет значения.Бит 5:MCE1: Разрешение поддержки мультимикроконтроллерного взаимодействия.Функционирование этого бита зависит от режима работы УАПП1.S1MODE = 0: Проверка корректности стопового бита.0: Логический уровень стопового бита игнорируется.1: Флаг RI1 будет установлен только в том случае, если стоповый бит равен лог.1.S1MODE = 1: Разрешение поддержки мультипроцессорного взаимодействия.0: Логический уровень девятого бита игнорируется.1: Флаг RI1 устанавливается и прерывание генерируется только в том случае, еслидевятый бит равен лог.1.Бит 4:REN1: Разрешение приема.Этот бит включает/отключает приемник УАПП1.0: Прием данных модулем УАПП1 запрещен.1: Прием данных модулем УАПП1 разрешен.Бит 3:TB81: Девятый бит передаваемых данных.Значение этого бита будет передано в качестве девятого бита данных в 9-разрядном режиме работыУАПП1.