F40-43a (1041604), страница 48
Текст из файла (страница 48)
Если в буфере приемника имеются доступные для чтения новые данные, которые не былипрочитаны, то этот бит будет сброшен в 0.Примечание: RXBMT = 1 в ведущем режиме работы.249Ред. 1.3C8051F040/1/2/3Рисунок 20.7. SPI0CN: Регистр управления модуля SPI0R/WSPIFR/WWCOLR/WMODFR/WRXOVRNR/WNSSMD1R/WNSSMD0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2RTXBMTБит 1R/WSPIENЗначениепри сбросе:00000110Бит 0SFR Адрес: 0xF8(доступен в битовом SFR страница: 0режиме адресации)Бит 7: SPIF: Флаг прерывания от модуля SPI0.Этот бит аппаратно устанавливается в 1 по окончании передачи данных.
Если прерыванияразрешены, то установка этого бита приведет к переходу на процедуру обслуживания прерыванияот модуля SPI0. Этот бит не сбрасывается аппаратно, его необходимо сбросить программно.Бит 6: WCOL: Флаг конфликта записи.Этот бит аппаратно устанавливается в 1 (и генерирует прерывание от модуля SPI0) и тем самымпоказывает, что была произведена попытка записи в регистр данных модуля SPI0, когда текущийсеанс передачи данных еще не завершился. Этот бит необходимо сбросить программно.Бит 5: MODF: Флаг ошибки режима.Этот бит аппаратно устанавливается в 1 (и генерирует прерывание от модуля SPI0) приобнаружении конфликта ведущего режима (на линии NSS низкий уровень, MSTEN = 1 иNSSMD[1:0] = 01).
Этот бит не сбрасывается аппаратно, его необходимо сбросить программно.Бит 4: RXOVRN: Флаг переполнения приемника (только ведомый режим работы).Этот бит аппаратно устанавливается в 1 (и генерирует прерывание от модуля SPI0), еслиприемный буфер все еще содержит непрочитанные данные от предыдущей передачи, а последнийбит текущей передачи сдвигается в сдвиговый регистр модуля SPI0. Этот бит не сбрасываетсяаппаратно, его необходимо сбросить программно.Биты 3-2: NSSMD1-NSSMD0: Биты выбора режима ведомого.С помощью этих бит осуществляется выбор между следующими режимами функционирования выводаNSS (см. раздел 20.2 и раздел 20.3):00: 3-х проводный ведомый или 3-х проводный ведущий режим. Сигнал NSS не разводится с помощьюматрицы на внешний вывод МК.01: 4-х проводный ведомый режим или режим работы с несколькими ведущими (по умолчанию).
ВыводNSS всегда является входом.1х: 4-проводный режим работы с одним ведущим. Вывод NSS настроен как выход и состояние сигналана нем определяется значением бита NSSMD0.Бит 1: TXBMT: Флаг опустошения буфера передатчика.Этот бит будет сбрасываться в 0 при записи новых данных в буфер передатчика.
После передачиданных из буфера передатчика в сдвиговый регистр модуля SPI0 этот бит будет установлен в 1,показывая, что в буфер передатчика можно записывать новые данные.Бит 0: SPIEN: Включение модуля SPI0.Это бит включает/отключает модуль SPI0.0: Модуль SPI0 отключен.1: Модуль SPI0 включен.Ред. 1.3250C8051F040/1/2/3Рисунок 20.8. SPI0CKR: Регистр установки тактовой частоты модуля SPI0R/WSCR7R/WSCR6R/WSCR5R/WSCR4R/WSCR3R/WSCR2R/WSCR1R/WSCR0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес: 0x9DSFR страница: 0Биты 7-0: SCR7-SCR0: Тактовая частота модуля SPI0Эти биты определяют частоту выходного сигнала SCK, когда модуль SPI0 работает введущем режиме.
Частота тактового сигнала SCK представляет собой поделенную наопределенный коэффициент системную тактовую частоту и задается следующимуравнением:fSCK = 0.5 * SYSCLK / (SPI0CKR + 1), для 0 ≤ SPI0CKR ≤ 255,где: SYSCLK – частота системного тактового сигнала;SPI0CKR – 8-разрядное значение регистра SPI0CKR.Пример: Если SYSCLK = 2МГц и SPI0CKR = 0х04, то:fSCK = 0.5 * 2000000 / (4 + 1) = 200кГц.251Ред. 1.3C8051F040/1/2/3Рисунок 20.9. SPI0DAT: Регистр данных модуля SPI0R/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес: 0x9BSFR страница: 000000000Бит 7Биты 7-0: SPI0DAT: Данные передатчика и приемника модуля SPI0.Регистр SPI0DAT используется для передачи и приема данных.
В ведущем режиме записьданных в регистр SPI0DAT сразу же приводит к загрузке данных в буфер передатчика иинициирует сеанс передачи. Чтение регистра SPI0DAT возвратит содержимое приемногобуфера.Ред. 1.3252C8051F040/1/2/321. УАПП0УАПП0 (универсальный асинхронный приемопередатчик) представляет собой усовершенствованныйпоследовательный порт, обеспечивающий определение ошибок формата и аппаратное распознавание адреса.УАПП может функционировать в полнодуплексном асинхронном или полудуплексном синхронном режимах, атакже полностью поддерживает организацию связи с несколькими МК. Во всех режимах принимаемые данныебуферизуются в регистре временного хранения.
Это позволяет УАПП0 начать прием второго входящего байтаданных до того, как программа закончит чтение предыдущего байта данных. Флаг переполнения приемникаустанавливается в 1, если следующий принятый байт данных фиксируется в буфере приемника до окончаниячтения ранее принятого байта.С работой УАПП0 связаны следующие регистры специального назначения: регистр управленияУАПП0 (SCON0) и буфер данных УАПП0 (SBUF0). Одна и та же ячейка памяти, адресуемая как SBUF0,обеспечивает доступ и к регистру передатчика, и к регистру приемника.
Операция чтения обращается крегистру приемника, а операция записи обращается к регистру передатчика автоматически.С модулем УАПП0 можно работать как в режиме опроса, так и с использованием прерываний. УАПП0имеет два источника прерываний:- флаг прерываний от передатчика TI0 (SCON0.1), устанавливается, когда передача байта данных завершена;- флаг прерываний от приемника RI0 (SCON0.0), устанавливается, когда завершен прием байта данных.Флаги прерываний от УАПП0 не сбрасываются аппаратно при переходе к процедуре обслуживанияпрерывания. Они должны сбрасываться программно.
Это позволяет программе определить причину,вызвавшую прерывание от УАПП0 (завершение передачи или завершение приема).Рисунок 21.1. Структурная схема УАПП0SFR шинаЗаписьв SBUFTB80SETDF R T SE X X M0 O C OV O D0 L 00S0TCLK1S0TCLK1SBUF0QTX0CLRSSTA0S0RCLK1S0RCLK1МатрицаДетектор нуляГенерациябита STOPСтартСдвигДанныеУправление передатчиком (Tx)Тактирование TxСхемагенератораскоростиобменаУАПП0ПередачаПрерывание TxSCON0SM00SM10SM20REN0TB80ВключениеТактирование RxTI0R T RB I I8 0 00Прерывание отпоследовательногопорта (УАПП0)RI0Прерывание RxЗагрузкаSBUFУправление приемником (Rx)Портввода/выводаСовпадениеадресаСтарт0x1FFСдвигСхемаопределенияошибки форматаВходной регистрсдвига (9 бит)RB80ЗагрузкаSBUFДетекторсовпаденияSBUF0SADDR0SADEN0ЧтениеSBUFSFR шина253Ред.
1.3RX0МатрицаC8051F040/1/2/321.1. Режимы работы УАПП0УАПП0 поддерживает четыре режима работы (один синхронный и три асинхронных), задаваемыебитами конфигурации в регистре SCON0. Эти четыре режима различаются скоростью передачи данных ипротоколом обмена. В табл.21.1 приведены основные характеристики режимов работы УАПП0.Таблица 21.1. Режимы работы УАПП0РежимСинхронизацияСкорость передачи данных0123СинхронныйАсинхронныйАсинхронныйАсинхронныйSYSCLK / 12Переполнение Таймеров 1, 2, 3 или 4SYSCLK / 32 или SYSCLK / 64Переполнение Таймеров 1, 2, 3 или 4Битыданных8899БитыСтарт/СтопНет1 Старт, 1 Стоп1 Старт, 1 Стоп1 Старт, 1 Стоп21.1.1.
Режим 0: Синхронный режимРежим 0 обеспечивает синхронный, полудуплексный обмен данными. Последовательные данныепередаются и принимаются через внешний вывод RX0. Через внешний вывод TX0 выдаются импульсы сдвигакак для передачи, так и для приема данных.
МК должен быть ведущим, т.к. он генерирует импульсы сдвига дляпередачи данных в обоих направлениях (см. рис.21.3).Передача данных начинается, когда происходит запись байта данных в регистр SBUF0. Передаютсявосемь бит данных, МЗР вперед (см. временные диаграммы на рис.21.2).
Флаг прерывания от передатчика TI0(SCON0.1) устанавливается в 1 в конце восьмого битового интервала. Прием данных начинается, когдаустанавливается в 1 флаг включения приемника REN0 (SCON0.4) и сбрасывается в 0 флаг прерывания отприемника RI0 (SCON0.0). Спустя один цикл после приема восьмого бита устанавливается флаг RI0 и приемзавершается до программного сброса бита RI0. При установке флагов TI0 или RI0 будет сгенерированопрерывание, если оно разрешено.Скорость передачи данных в режиме 0 равна 1/12 системной тактовой частоты. В режиме 0 вывод RX0настраивается как выход с открытым стоком и обычно требуется подключить к этому выводу внешнийподтягивающий резистор.Рисунок 21.2. Временные диаграммы УАПП0 в режиме 0ПЕРЕДАЧА В РЕЖИМЕ 0RX (выход данных)D0D1D2D3D4D5D6D7TX (выход такт.