Лекция: Лекция 7. Программируемые линии (порты) ввода/вывода и коммутатор ресурсов CROSSBAR

Микроконтроллеры различных семейств имеют различное количество стандартных байтных портов ввода/вывода (от 1 до 8). Напомним, что стандартный микроконтроллер 8051 имеет четыре порта (Ports 0, 1, 2 и 3). Порты, не имеющие внешних выводов ввиду нехватки физических выводов корпусов, могут быть использованы как регистры общего назначения. Порты ввода/вывода ведут себя так же, как порты стандартного 8051, но имеют дополнительные функциональные возможности.

Каждая линия порта ввода/вывода может быть настроена как нормальная входная или выходная линия, как линия с «третьим» высокоимпедансным состоянием или как линия с «открытым истоком» через соответствующие регистры (Port Configuration Registers) PRTOCF, PRT1CF, PRT2CF, PRT3CF и т. д. Подтяжки уровней Pull-Up, обычно используемые в стандартных 8051 микроконтроллерах, могут быть программно запрещены с целью дополнительного энергосбережения.

Несомненным достижением архитектуры микроконтроллеров фирмы SiLabs является наличие функционального узла, называемого Crossbar, выполняющего роль программно-управляемого коммутационного узла, переключающего периферийные внутренние ресурсы на линии ввода/вывода портов 0, 1 и 2. Иными словами, узел Crossbar — это коммутатор внутренних ресурсов. Это новшество значительно повышает гибкость разработки микроконтроллерной системы. Внутренние периферийные узлы, такие как таймеры, последовательные интерфейсы, прерывания, входы запуска ADC, выходы компараторов и другие цифровые сигналы, а в некоторых семействах и аналоговые входы ADC, могут быть программно назначены на выводы вышеуказанных портов. Спецификация портов осуществляется путем программирования специальных регистров XBRO, XBR1 и XBR2 и так называемой таблицы приоритетной перекодировки (Priority Decode Table). Рис. 7.1 иллюстрирует функциональное назначение Crossbar (на примере первых двух семейств C8051F04x).

 

Рисунок 7.1. Функциональное назначение Crossbar

Приоритетный дешифратор коммутатора ресурсов (Priority CrossBar Decoder)

Главной задачей разработчиков коммутатора ресурсов CrossBar являлось создание гибкой и удобной архитектуры, позволяющей проектировщику контроллеров оперативно выбирать и перераспределять богатые внутренние аналоговые и цифровые ресурсы на ограниченное число внешних выводов корпуса. Таблица приоритетного дешифратора коммутатора ресурсов индивидуальна для каждого семейства микроконтроллеров ввиду различного состава внутренней периферии. Однако методика выбора периферии одинакова для всех семейств. На рис. 7.2 в качестве примера показана таблица приоритетов дешифратора коммутатора ресурсов C8051F04x семейства.

 

Рисунок 7.2. Пример приоритетного дешифратора коммутатора ресурсов

В таблице по вертикали перечислены выводы всех периферийных устройств, которые могут быть выведены на вводы/вывода портов P0 — P2. Выводы периферийных устройств перечислены в порядке убывания приоритета. Например, наивысшим приоритетом обладает интерфейс UART0 с сигналами ТХ0 и RX0, далее SMBus, имеющий сигналы SDA и SCL, затем следует интерфейс SPI, имеющий сигналы SCK, MISO, MOSI и NSS, последовательный порт UART1 с сигналами ТХ1 и RX1 и т. д.

Выбор периферийных устройств осуществляется путем программирования специальных регистров XBR0, XBR1 и XBR2. Эти регистры содержат бит (или биты), определяющие активность каждого из приведенных на рис. 7.2 периферийных устройств. Например, включение в состав или выключение из состава периферийных устройств интерфейсов UART0, SMBus, SPI и UART1 осуществляется установкой или стиранием одного бита (для каждого интерфейса).

Методика определения активной периферии и соотнесение ее к конкретным портам ввода/вывода приведены ниже:

1. Проектировщик в регистрах XBRO, XBR1 и XBR2 устанавливает в лог. 1 биты, отвечающие за активность тех или иных периферийных устройств. Биты неиспользуемых периферийных устройств устанавливаются в состояние лог. 0.

2. Назначение выводов активных периферийных устройств всегда начинается с младших битов порта Р0. Далее при полном заполнении порта Р0 начинается заполнение порта Р1, а если его не хватит, то и Р2. Заполнение происходит в соответствии с приоритетом со сдвигом в сторону свободных младших выводов. Например, если устройство SMBus активно, то его сигналы за-нимают младшие разряды порта Р0: SDA — Р0.0; SCL — Р0.1 Если же устройство SMBus пассивно (выключено), а активно следующее устройство — SPI, то его сигналы занимают младшие разряды: SCK — Р0.0; MISO – Р0.1; MOSI — Р0.2; NSS –Р0.З. Если и устройство SPI пассивно, а активно устройство UART1, то его сигналы займут младшие разряды: ТХ — Р0.0; RX — Р0.1.

3. Следующие активные устройства всегда занимают более младшие свободные выводы портов Р0—Р2. Например, если первым активным устройством был интерфейс SPI и его сигналы заняли младшие разряды: SCK — Р0.0; MISO — Р0.1; MOSI — Р0.2; NSS — Р0.З.

4. Выводы, оставшиеся свободными после назначения активных периферийных устройств могут быть использованы как программируемые вводы/выводы общего назначения.

5. После назначения активных периферийных устройств необходимо разрешить работу (установить активность) CrossBar путем установки бита XBARE в регистре XBR2. Пока CrossBar не активен, все линии портов остаются в режиме ввода вне зависимости от назначений регистров XBRn.

еще рефераты
Еще работы по информатике