F18-19 (1041602), страница 26
Текст из файла (страница 26)
Модуль SPI работает в ведомом режиме.1: Ведущий режим включен. Модуль SPI работает в ведущем режиме.Бит 0: SPIEN: Включение модуля SPI.Это бит включает/отключает модуль SPI.0: Модуль SPI отключен.1: Модуль SPI включен.111Ред. 1.2C8051F018C8051F019Рисунок 15.7. SPI0CKR: Регистр установки тактовой частоты модуля SPIR/WSCR7R/WSCR6R/WSCR5R/WSCR4R/WSCR3R/WSCR2R/WSCR1R/WSCR0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес:0x9DБиты 7-0: SCR7-SCR0: Тактовая частота модуля SPIЭти биты определяют частоту выходного сигнала SCK, когда модуль SPI работает введущем режиме.
Частота тактового сигнала SCK представляет собой поделенную наопределенный коэффициент системную тактовую частоту и задается следующимуравнением:fSCK = 0.5 * fSYSCLK / (SPI0CKR + 1), для 0 ≤ SPI0CKR ≤ 255Рисунок 15.8. SPI0DAT: Регистр данных модуля SPIR/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0x9BБиты 7-0: SPI0DAT: Данные передатчика и приемника модуля SPI.Регистр SPI0DAT используется для передачи и приема данных.
В ведущем режиме записьданных в регистр SPI0DAT сразу же приводит к загрузке данных в регистр сдвига иинициирует сеанс передачи. Чтение регистра SPI0DAT возвратит содержимое приемногобуфера.Ред. 1.2112C8051F018C8051F01916. УАППУАПП (универсальный асинхронный приемопередатчик) представляет собой последовательный порт,обеспечивающий асинхронную передачу данных. УАПП может функционировать в полнодуплексном режиме.Во всех режимах принимаемые данные буферизуются в регистре временного хранения. Это позволяет УАППначать прием второго входящего байта данных до того, как программа прочитает предыдущий байт данных.С работой УАПП связаны следующие регистры специального назначения: регистр управления УАПП(SCON) и буфер данных УАПП (SBUF).
Одна и та же ячейка SBUF обеспечивает доступ и к региструпередатчика, и к регистру приемника. Операция чтения обращается к регистру приемника, а операция записиобращается к регистру передатчика автоматически.УАПП генерирует прерывания, если они разрешены. УАПП имеет два источника прерываний:- флаг прерываний от передатчика TI (SCON.1), устанавливается, когда передача байта данных завершена;- флаг прерываний от приемника RI (SCON.0), устанавливается, когда завершен прием байта данных.Флаги прерываний от УАПП не сбрасываются аппаратно при переходе к процедуре обслуживанияпрерывания.
Они должны сбрасываться программно. Это позволяет программе определить причину,вызвавшую прерывание от УАПП (завершение передачи или завершение приема).Рисунок 16.1. Структурная схема УАППSFR шинаPCONSCONSMODЗаписьв SBUFT2CONS S S R T R T RM M M E B B I I0 1 2 N 8 8RCLKTB8TCLKSETDSBUFQTXCLRМатрицаДетектор нуляЛогика генератора скорости обмена120016Тактирование TxSM0, SM1{РЕЖИМ}1RCLK321640SYSCLKПрерывание отпоследовательногопортаREN011011RB8RI0016ПереполнениеТаймера 2ПередачаПрерывание TxTITCLK0ДанныеУправление передатчиком (Tx)000110111SMODСдвигГенерациябита STOPСтартПереполнениеТаймера 1Тактирование RxПрерывание Rx Включение СЗРЗагрузкаSBUFУправление приемником (Rx)СдвигСтартПортввода/вывода0x1FFБитовый детекторВходной регистрсдвига (9 бит)SMOD12ShiftЗагрузка SBUFSBUFЧтениеSBUFSFR шинаRX113Ред.
1.2МатрицаC8051F018C8051F01916.1. Режимы работы УАППУАПП поддерживает четыре режима работы (один синхронный и три асинхронных), задаваемыебитами конфигурации в регистре SCON. Эти четыре режима различаются скоростью передачи данных ипротоколом обмена. В табл.16.1 приведены основные характеристики режимов работы УАПП.
В следующихразделах режимы работы УАПП описаны более подробно.Таблица 16.1. Режимы работы УАППРежимСинхронизацияСкорость передачи данных0123СинхронныйАсинхронныйАсинхронныйАсинхронныйSYSCLK/12Переполнение Таймера 1 или Таймера 2SYSCLK/32 или SYSCLK/64Переполнение Таймера 1 или Таймера 2Битыданных8899БитыСтарт/СтопНет1 Старт, 1 Стоп1 Старт, 1 Стоп1 Старт, 1 Стоп16.1.1. Режим 0: Синхронный режимРежим 0 обеспечивает синхронный, полудуплексный обмен данными. Последовательные данныепередаются и принимаются через внешний вывод RX. Через внешний вывод TX выдаются импульсы сдвига какдля передачи, так и для приема данных. МК должен быть ведущим, т.к.
он генерирует импульсы сдвига дляпередачи данных в обоих направлениях (см. рис.16.2).Передаются/принимаются восемь бит данных, МЗР вперед (см. временные диаграммы на рис.16.3).Передача данных начинается, когда происходит запись байта данных в регистр SBUF. Флаг прерывания отпередатчика TI (SCON.1) устанавливается в 1 в конце восьмого битового интервала. Прием данных начинается,когда устанавливается в 1 флаг включения приемника REN (SCON.4) и сбрасывается флаг прерывания отприемника RI (SCON.0). Спустя один цикл после приема восьмого бита устанавливается флаг RI и приемзавершается до программного сброса бита RI. При установке флагов TI или RI будет сгенерированопрерывание, если оно разрешено. Скорость передачи данных в режиме 0 равна 1/12 системной тактовойчастоты.
В режиме 0 вывод RX настраивается как выход с открытым стоком и обычно требуется внешнийподтягивающий резистор.Рисунок 16.2. Пример использования УАПП в режиме 0TXCLKRXDATAC8051FxxxРегистрсдвига8 дополнительных выходовРисунок 16.3. Временные диаграммы УАПП в режиме 0ПЕРЕДАЧА В РЕЖИМЕ 0RX (выход данных)D0D1D2D3D4D5D6D7TX (выход такт. имп-в)ПРИЕМ В РЕЖИМЕ 0RX (вход данных)D0D1D2D3D4D5D6D7TX (выход такт.
имп-в)Ред. 1.2114C8051F018C8051F01916.1.2. Режим 1: 8-разрядный УАПП, изменяемая скорость передачи данныхРежим 1 обеспечивает стандартный асинхронный полнодуплексный обмен данными с использованием(обычно) 10 бит для передачи одного байта: один стартовый бит, восемь бит данных (МЗР вперед) и одинстоповый бит (см. рис.16.4). Данные передаются через внешний вывод TX и принимаются через внешнийвывод RX (см.
рис.6.5). При приеме в регистре SBUF сохраняются восемь бит данных, а бит RB8 (SCON.2)принимает значение стопового бита.Передача данных начинается, когда происходит запись байта данных в регистр SBUF. Флагпрерывания от передатчика TI (SCON.1) устанавливается в 1 в конце передачи (в начале передачи стоповогобита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN(SCON.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF, еслисоблюдаются следующие условия: RI должен быть равен лог.0, и, если SM2 равен лог.1, то стоповый битдолжен быть равен лог.1.Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF, стоповый битсохраняется в бите RB8 и устанавливается в 1 флаг RI.
Если эти условия не соблюдаются, то SBUF и RB8 небудут загружаться и флаг RI не устанавливается. При установке флагов TI или RI будет сгенерированопрерывание, если оно разрешено.Рисунок 16.4. Временные диаграммы УАПП в режиме 1Лог.1Лог.0БитСТАРТD0D1D2D3D4D5D6D7БитСТОПБИТОВЫЕИНТЕРВАЛЫВЫБОРКА БИТАСкорость передачи данных в режиме 1 определяется функцией от переполнения таймера. Для заданияскорости передачи данных УАПП может использоваться либо Таймер 1, работающий в режиме 8-разрядноготаймера/счетчика с автоперезагрузкой, либо Таймер 2, работающий в режиме генератора скорости передачиданных (следует иметь ввиду, что источники тактовых импульсов для передатчика (ТХ) и приемника (RX)выбираются по отдельности). При каждом переполнении таймера (при переходе от всех единиц - 0xFF дляТаймера 1 и 0xFFFF для Таймера 2 – к нулю) тактовый импульс посылается схеме генератора скоростипередачи данных.
Для получения скорости передачи частота этих импульсов делится на 16.Когда Таймер 1 используется в качестве генератора скорости передачи данных, он должен бытьнастроен как 8-разрядный таймер/счетчик с автоматической перезагрузкой. Системная тактовая частота изначение перезагрузки, сохраняемое в регистре TH1, определяют скорость передачи данных следующимобразом:Mode 1 Baud Rate = (2SMOD / 32) * (SYSCLK)/(12(T1M – 1) * (256 – TH1)).Бит SMOD (PCON.7) определяет, делить или нет частоту переполнения Таймера 1 на 2. При сбросе битSMOD равен лог.0, таким образом по умолчанию выбирается обычная (не удвоенная) скорость передачиданных.
Выбирая временной интервал, используемый Таймером 1, можно изменять скорость передачи вшироком диапазоне. При использовании системной тактовой частоты, деленной на единицу (настраивая битT1M в регистре CKCON), в знаменателе приведенного выше уравнения следует заменить 12 на 1.Для использования Таймера 2 в качестве генератора скорости передачи данных необходимо выбратьрежим «генератор скорости передачи данных» таймера и установить в 1 бит RCLK и/или бит TCLK. Установкабит RCLK и/или TCLK автоматически запретит прерывания от Таймера 2 и настроит Таймер 2 наиспользование системной частоты, деленной на 2, в качестве источника тактового сигнала.
Если требуетсядругой тактовый сигнал, то установкой в 1 бита C/T2 можно настроить Таймер 2 на использование тактовогосигнала, поданного на внешний вывод Т2. Системная тактовая частота и значение перезагрузки, сохраненное врегистрах захвата, определяют скорость передачи данных следующим образом:Mode 1 Baud Rate = SYSCLK / [32 * (65536 – [RCAP2H:RCAP2L]) ],где [RCAP2H:RCAP2L] представляет собой 16-разрядное значение, сохраненное в регистрах захвата.115Ред. 1.2C8051F018C8051F019Рисунок 16.5.
Пример использования УАПП в режимах 1, 2 и 3RS-232LEVELXLTRRS-232TXRXC8051FxxxORTXTXRXRXMCUC8051FxxxРед. 1.2116C8051F018C8051F01916.1.3. Режим 2: 9-разрядный УАПП, фиксированная скорость передачи данныхРежим 2 обеспечивает асинхронный полнодуплексный обмен данными с использованием 11 бит дляпередачи одного байта: один стартовый бит, восемь бит данных (МЗР вперед), программируемый девятый битданных и один стоповый бит (см. рис.16.6). При передаче значение девятого бита данных определяетсязначением бита TB8 (SCON.3).