F18-19 (1041602), страница 20
Текст из файла (страница 20)
Каждый из выводов Портов 0, 1 и 2 может быть определен либо каксоответствующий цифровой порт ввода/вывода, либо как вывод, назначенный внутренним цифровым ресурсам(см. рис.13.1). Разработчик имеет полный контроль над всеми встроенными функциями, ограничиваясь толькоколичеством физически реализованных выводов, имеющихся в выбранном корпусе (в МК C8051F018 всечетыре порта имеют внешние выводы, в МК C8051F019 только порты Р0 и Р1 имеют внешние выводы).Гибкость при распределении ресурсов достигается благодаря использованию приоритетного декодера матрицы.(Следует иметь ввиду, что состояние вывода порта ввода/вывода всегда можно прочитать в соответствующейзащелке порта независимо от настроек матрицы).Матрица распределяет выбранные внутренние цифровые ресурсы между внешними выводами портовна основе таблицы декодирования приоритетов (см.
табл.13.1). Для подключения внутренних цифровыхмодулей и портов к внешним выводам на корпусе МК используются регистры XBR0, XBR1 и XBR2 (см.рис.13.3, рис.13.4 и рис.13.5). Матрица функционирует одинаково для каждого МК, необходимо лишь помнить,что внешний порт Р2 отсутствует в МК C8051F019. Цифровые модули, подключенные к отсутствующимпортам, будут недоступны.Допустимое напряжение на всех портах ввода/вывода составляет 5В (схема ячейки порта ввода/выводаприведена на рис.13.2). В регистрах конфигурации портов (PRT0CF, PRT1CF, PRT2CF, PRT3CF) каждая ячейкапорта ввода/вывода настраивается либо как цифровой вход/выход, либо как выход с открытым стоком.Электрические характеристики портов ввода/вывода приведены в табл. 13.2.13.1.
Приоритетный декодер матрицыОдним из достоинств МК данного семейства является то, что разработчику доступен весь спектрцифровых ресурсов МК даже при использовании корпусов с сокращенным количеством выводов.Приоритетный декодер матрицы обеспечивает превосходное решение проблемы подключения внутреннихцифровых модулей к внешним выводам портов МК.Приоритетный декодер матрицы (см.табл.13.1) назначает приоритет входным/выходным сигналамкаждого цифрового модуля, начиная с модуля SMBus.
В соответствии с таблицей 13.1, когда выбран модульSMBus, два его сигнала будут назначены выводам 0 и 1 порта Р0. Декодер всегда заполняет биты ввода/выводаот МЗР до СЗР, начиная с Р0, затем Р1, и заканчивая, если необходимо, портом Р2. Если ресурс не выбран дляиспользования, то функция, следующая ниже по таблице, заполнит ячейку приоритета. Таким способом можновыбрать лишь те функции, которые необходимы в проекте, полностью используя доступные выводы портов.Кроме этого, любые дополнительные порты ввода/вывода собираются в группы для более удобногоиспользования в коде приложения.Регистры XBR0, XBR1 и XBR2 используются для распределения цифровых ресурсов между внешнимивыводами.
Важно понять, что когда выбраны модули SMBus, SPI и УАПП, матрица распределяет все выводы,ассоциированные с этими модулями. Нельзя, например, назначить вывод RX модуля УАПП и не назначитьвывод TX этого же модуля. После назначения функций с приоритетами стандартные порты появляютсясмежно. Например, если выбрать функции, которые занимают первые 14 портов ввода/вывода (P0.[7:0],P1.[5:0]), то останется 18 неиспользуемых матрицей портов ввода/вывода (P1.[7:6], P2 и P3).13.2. Инициализация портов ввода/выводаИнициализация портов ввода/вывода осуществляется непосредственно.
Регистры XBR0, XBR1 и XBR2должны быть загружены соответствующими значениями для выбора требуемых в проекте цифровых функций.Установка в 1 бита XBARE в регистре XBR2 включает матрицу. Пока матрица не включена, внешниевыводы остаются стандартными портами, настроенными на вход, независимо от состояния регистровXBRn., Для заданного состояния регистров XBRn можно определить разводку внешних выводов, используятаблицу декодирования приоритетов. Кроме этого функция мастера настройки кода (Code Configuration Wizardfunction) из состава программного пакета IDE сама определит разводку внешних выводов на основе состояниярегистров XBRn.Характеристики выходного драйвера портов ввода/вывода определяются в регистрах конфигурации портовPRT0CF, PRT1CF, PRT2CF и PRT3CF (см.
рис.13.7, рис. 13.9, рис.13.12, рис.13.14). Выходной драйвер каждогопорта можно настроить либо как цифровой вход/выход, либо как выход с открытым стоком. Это необходимодаже для цифровых ресурсов, выбранных в регистрах XBRn, и не осуществляется автоматически. Исключениемиз этого являются только выводы модуля SMBus (SDA, SCL) и вывод приемника УАПП (RX, в режиме 0),которые являются выходами с открытым стоком независимо от настроек в регистрах PRTnCF.
Если битWEAKPUD в регистре XBR2 сброшен в 0, то ко всем портам ввода/вывода, настроенным как выходы соткрытым стоком, подключается слаботоковая подтяжка. Бит WEAKPUD не влияет на порты ввода/вывода,85Ред. 1.2C8051F018C8051F019настроенные как цифровые входы/выходы. Кроме этого, во избежание ненужного энергопотребленияслаботоковые подтяжки отключаются у выходов с открытым стоком, на которые выводится сигнал с низкимлогическим уровнем.Третьим и последним шагом является инициализация выбранных индивидуальных ресурсов сиспользованием соответствующих регистров управления. Процедуры инициализации различных цифровыхресурсов можно найти в подробном описании каждой имеющейся функции.
Состояние при сбросе каждогорегистра показано на рисунках, описывающих эти регистры.Рисунок 13.1. Функциональная схема портов ввода/выводаНаибольшийприоритет2SMBus(внутренние цифровые сигналы)SPIНаименьшийприоритетРегистры PRT0CF,PRT1CF, PRT2CFРегистры XBR0,XBR1, XBR24Внешниевыводы2УАПППриоритетныйдекодер6ПМС2Выходыкомп-вЦифроваяматрицаT0, T1, T2,T2EX,/INT0,/INT18P0.0Ячейкиввода/выводапорта 1P1.0Ячейкиввода/выводапорта 2P2.0НаибольшийприоритетP0.768/SYSCLKCNVSTR8P0Ячейкиввода/выводапорта 08(P0.0-P0.7)P1.7P2.7Наименьшийприоритет8P1Защелкипортов(P1.0-P1.7)РегистрPRT3CF8P2(P2.0-P2.7)Ячейкиввода/выводапорта 38P3(P3.0-P3.7)Ред.
1.2P3.0P3.786C8051F018C8051F019Рисунок 13.2. Структурная схема ячейки порта ввода/выводаWEAKPUDVDDPUSH-PULL/PORT-OUTENABLE(ПОДТЯЖКА)ВНЕШНИЙВЫВОДПОРТАPORT-OUTPUTVDDPORT-INPUT87VDDРед. 1.2DGNDC8051F018C8051F019Таблица 13.1. Декодирование приоритетов матрицыP0PIN I/O 0SDASCLSCKMISO●●MOSI1●●NSSTXRXCEX0CEX1CEX2CEX3CEX4ECICP0CP1T0/INT0T1/INT1T2T2EX/SYSCLKCNVSTR●●●●2●●●●●3●●●●●P14●●●●5●●●●6●●●7●●●0●●1●●2●3P2456701234567●● ● ● ● ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●В таблице декодирования приоритетов точка (●) показывает, какому внешнему выводу порта (столбец)какой сигнал (строка) может быть назначен программой пользователя путем программирования регистровXBR2, XBR1 и XBR0.Ред.
1.288C8051F018C8051F019Рисунок 13.3. XBR0: Регистр 0 матрицы портов ввода/выводаR/WCP0OENR/WECIER/WR/WPCA0MEБит 7Бит 6Бит 5Бит 4R/WБит 3R/WUARTENБит 2R/WR/WSPI0OEN SMB0OENБит 1Бит 0Значениепри сбросе:00000000SFR Адрес:0xE1Бит 7:CP0OEN: Бит подключения выхода Компаратора 00: CP0 не соединен с выводом порта.1: CP0 соединен с выводом порта.Бит 6:ECIE: Бит подключения входа ECI ПМС00: ECI не соединен с выводом порта.1: ECI соединен с выводом порта.Биты 3-5: PCA0ME: Биты подключения входов/выходов модуля ПМС0000: Все входы/выходы модуля ПМС не соединены с выводами порта.001: CEX0 соединен с выводом порта.010: CEX0, CEX1 соединены с двумя выводами порта.011: CEX0, CEX1, CEX2 соединены с тремя выводами порта.100: CEX0, CEX1, CEX2, CEX3 соединены с четырьмя выводами порта.101: CEX0, CEX1, CEX2, CEX3, CEX4 соединены с пятью выводами порта.110: Зарезервировано111: ЗарезервированоБит 2:UARTEN: Бит подключения входов/выходов УАПП0: Входы/выходы УАПП не соединены с выводами порта.1: RX, TX соединены с двумя выводами порта.Бит 1:SPI0OEN: Бит подключения входов/выходов модуля SPI0: Входы/выходы модуля SPI не соединены с выводами порта.1: MISO, MOSI, SCK и NSS соединены с четырьмя выводами порта.Бит 0:SMB0OEN: Бит подключения входов/выходов модуля SMBus0: Входы/выходы модуля SMBus не соединены с выводами P0.0, P0.1.1: SDA соединен с выводом P0.0, SCL соединен с выводом P0.1.89Ред.