Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Stenin Lab / C8051F60-67-устройство МК.pdf
Скачиваний:
187
Добавлен:
10.02.2015
Размер:
5.19 Mб
Скачать

C8051F060/1/2/3/4/5/6/7

рис.18.7 и рис.18.8). Например, если бит UART0EN (XBR0.2) установлен в 1, то выводы TX0 и RX0 будут отображены на порты Р0.0 и Р0.1 соответственно. Т.к. УАПП0 имеет наивысший приоритет, то его выводы всегда будут отображаться на порты Р0.0 и Р0.1, когда бит UART0EN установлен в 1. Если биты подключения цифровых модулей не установлены в 1, то их порты не доступны на внешних выводах портов МК. Важно также иметь ввиду, что, если выбраны последовательные порты (т.е. SMBus, SPI, УАПП), то матрица распределяет все выводы, ассоциированные с ними. Нельзя, например, назначить вывод RX0 модуля УАПП0 и не назначить вывод TX0 этого же модуля. SPI может работать в 3-х или 4-х проводном режиме (с выводом NSS или без него). Назначение внешних выводов микроконтроллера для каждой комбинации подключенных периферийных модулей будет уникальным.

Все выводы портов Р0 – Р3, не распределенные при помощи матрицы, могут быть доступны как выводы ввода/вывода общего назначения путем чтения и записи соответствующих регистров данных портов (см. рис.18.9, рис.18.11, рис.18.14 и рис.18.17), которые доступны как в побитном, так и в побайтном режимах адресации. Состояния выходных драйверов выводов портов, которые распределены матрицей и управляются цифровыми периферийными модулями, определяются этими модулями. Запись регистров данных этих портов (или распределенных матрицей битов портов) не будет влиять на состояние этих выводов.

Чтение регистра данных порта (или бита порта) всегда возвратит в качестве результата логическое состояние на выводе порта независимо от того, распределен данный порт матрицей или нет. Исключением являются команды типа чтение-модификация-запись (ANL, ORL, XRL, JBC, CPL, INC, DEC, DJNZ, CLR, SETВ

и битовые команды MOV). В течение цикла чтения команд типа чтение-модификация-запись считывается содержимое регистра данных порта, а не логическое состояние самих выводов портов.

Т.к. регистры матрицы влияют на подключение внутренних периферийных модулей к внешним выводам МК, то они обычно настраиваются в процессе инициализации системы до настройки самих периферийных модулей. После первоначальной настройки регистры матрицы обычно не перенастраиваются.

После правильной настройки регистров матрицы она включается установкой в 1 бита XBARE (XBR2.4). Пока бит XBARE не установлен в 1, выходные драйверы портов Р0 – Р3 явным образом

отключаются, чтобы предотвратить возможные конфликты на выводах портов во время записи регистров матрицы и других регистров, которые могут влиять на внешние выводы МК.

Выходные драйверы выводов, распределенных матрицей для входных сигналов (например, RX0 и т.п.), явным образом отключаются; таким образом значения регистров данных портов и регистров PnMDOUT не влияют на состояние этих выводов.

18.1.2. Настройка выходных драйверов портов

Выходные драйверы портов Р0 – Р3 остаются отключенными до тех пор, пока матрица не будет включена установкой в 1 бита XBARE (XBR2.4).

Выходной драйвер каждого порта можно настроить либо как цифровой двухтактный выход, либо как выход с открытым стоком. При работе в режиме цифрового двухтактного выхода запись лог. ‘0’ в соответствующий бит регистра данных порта приведет к «притягиванию» данного вывода порта к земляной шине GND, а запись лог. ‘1’ приведет к «притягиванию» данного вывода порта к шине питания VDD. При работе в режиме выхода с открытым стоком запись лог. ‘0’ в соответствующий бит регистра данных порта приведет к «притягиванию» данного вывода порта к земляной шине GND, а при записи лог. ‘1’ данный вывод порта будет переведен в высокоимпедансное состояние. Режим выхода с открытым стоком полезен в том случае, если требуется предотвратить конфликты между различными устройствами в системе, когда вывод порта участвует в коллективном взаимодействии, при котором несколько выходов подключаются к одной и той же физической линии (например, сигнал SDA шины SMBus).

Режимы выходов портов Р0 – Р3 определяются битами соответствующих регистров PnMDOUT (см. рис.18.10, рис.18.13, рис.18.16, рис.18.18). Например, при установке в 1 бита P3MDOUT.7 выходной драйвер порта Р3.7 будет настроен как цифровой двухтактный выход, при сбросе в 0 бита P3MDOUT.7 выходной драйвер порта Р3.7 будет настроен как выход с открытым стоком. По умолчанию выходные драйверы всех портов настраиваются как выходы с открытым стоком.

Регистры PnMDOUT управляют режимами выхода выводов портов независимо от того, назначает ли их матрица цифровым ресурсам или нет. Исключением являются только выводы модуля SMBus (SDA, SCL), вывод приемника УАПП0 (RX0, в режиме 0) и вывод приемника УАПП1 (RX1, в режиме 0), которые всегда настроены как выходы с открытым стоком независимо от настроек соответствующих бит регистров PnMDOUT.

Ред. 1.2

206

C8051F060/1/2/3/4/5/6/7

18.1.3. Настройка выводов портов как цифровых входов

Вывод порта настраивается как цифровой вход переводом его выходного драйвера в режим выхода с открытым стоком и записью лог. ‘1’ в соответствующий бит регистра данных порта. Например, Р3.7 настраивается как цифровой вход сбросом в 0 бита P3MDOUT.7 и установкой в 1 бита Р3.7.

Если вывод порта назначен посредством матрицы цифровому периферийному модулю и этот вывод функционирует как вход (например, RX0, вывод приемника УАПП0), то выходной драйвер этого вывода автоматически отключается.

18.1.4. Слаботоковые подтяжки

Каждый вывод порта имеет внутреннюю слаботоковую подтяжку, которая по умолчанию включена. Она обеспечивает соединение данного вывода с шиной питания VDD через резистор с высоким сопротивлением (около 100кОм). Слаботоковые подтяжки можно глобально отключить, установив в 1 бит отключения слаботоковых подтяжек WEAKPUD (XBR2.7). Слаботоковые подтяжки автоматически отключаются у любого вывода, на который выдается лог. ‘0’, т.е. выход вывода не будет конфликтовать с собственной слаботоковой подтяжкой. Кроме этого, слаботоковые подтяжки выводов Порта 1 можно отключить, настроив эти выводы как аналоговые входы (см. описание ниже).

18.1.5. Настройка выводов Портов 1 и 2 как аналоговых входов.

Выводы Порта 1 могут функционировать в качестве аналоговых входов мультиплексора АЦП2 (только C8051F060/1/2/3), а выводы Порта 2 могут служить аналоговыми входами компараторов напряжения (все МК семейства C8051F06x). Вывод порта настраивается как аналоговый вход сбросом в 0 соответствующего бита в регистрах PnMDIN. По умолчанию все порты настраиваются как цифровые входы. Настройка вывода порта как аналогового входа:

1.Разрывает цепь тока цифрового входа от этого вывода. Это исключает увеличение тока потребления при напряжении на этом выводе, близком к значению VDD/2. Чтение бита данных порта возвратит лог. ‘0’ независимо от напряжения на выводе порта.

2.Отключает слаботоковую подтяжку от этого вывода.

3.Заставляет матрицу «пропускать» этот вывод при назначении выводов цифровым периферийным модулям.

Следует иметь ввиду, что выходные драйверы выводов, настроенных как аналоговые входы, не отключаются явным образом. Поэтому биты регистров PnMDOUT, соответствующие выводам, настроенным как аналоговые входы, следует явно сбросить в 0 (режим выхода с открытым стоком), а соответствующие биты данных портов следует установить в 1 (высокоимпедансное состояние). Также следует иметь ввиду, что не требуется настраивать вывод порта как аналоговый вход, чтобы использовать его в качестве входа АЦП2 или компараторов; однако, строго рекомендуется это делать. Подробная информация приведена в разделах данного технического описания, посвященным соответствующим периферийным модулям.

207

Ред. 1.2

C8051F060/1/2/3/4/5/6/7

18.1.6. Пример назначения выводов при помощи матрицы

В этом примере (см. рис.18.4) мы настроим матрицу таким образом, чтобы назначить выводы портов для УАПП0, SMBus, для всех 6 модулей ПМС, /INT0 и /INT1 (всего 12 выводов). Дополнительно мы настроим Р1.2, Р1.3 и Р1.4 как аналоговые входы, что позволит измерять напряжение на этих выводах с помощью АЦП2. Описание настройки (по «шагам») приведено ниже:

XBR0, XBR1 и XBR2 настраиваются так, чтобы UART0EN = 1, SMB0EN = 1, PCA0ME = ‘110’, INT0E = 1 и INT1E = 1. Таким образом: XBR0 = 0х3D, XBR1 = 0х14 и XBR2= 0х40.

1.Настраиваем выбранные выводы Порта 1 как аналоговые входы записью значения 0хE3 в регистр P1MDIN (Р1.2, Р1.3 и Р1.4 являются аналоговыми входами, т.е. соответствующие им биты регистра

P1MDIN сброшены в 0).

2.Включаем матрицу установкой XBARE = 1: XBR2= 0х40.

-УАПП0 имеет наивысший приоритет, т.е. Р0.0 назначается сигналу TX0, а Р0.1 назначается сигналу

RX0.

-SMBus имеет следующий по порядку приоритет, т.е. Р0.2 назначается сигналу SDA, а Р0.3 назначается сигналу SCL.

-PCA0 (ПМС) имеет следующий по порядку приоритет, т.е. выводы портов Р0.4 – Р1.1 назначаются сигналам CEX0 – CEX5.

-Т.к. регистр P1MDIN содержит значение 0хЕ3, которое настраивает Р1.2, Р1.3 и Р1.4 как аналоговые входы, то матрица будет пропускать эти выводы при назначении выводов периферийным модулям.

-/INT0 имеет следующий по порядку приоритет, т.е. назначается следующему «не пропускаемому» выводу, которым является Р1.5.

-/INT1 имеет следующий по порядку приоритет, т.е. назначается выводу Р1.6.

3.Настраиваем выходные драйверы вывода TX УАПП0 (TX0, P0.0) и выводов CEX0 – CEX3 как цифровые двухтактные выходы, для чего записываем значение 0xF1 в регистр P0MDOUT.

4.Явным образом отключаем выходные драйверы трех выводов аналоговых входов, для чего соответствующие биты в регистре P1MDOUT сбрасываем в 0, а в регистре Р1 – устанавливаем в 1. Кроме этого, выходные драйверы выводов CEX5 и CEX4 настраиваем как цифровые двухтактные выходы. Т.е. в регистр P1MDOUT необходимо загрузить значение 0х03 (неиспользуемые выводы настраиваются как выходы с открытым стоком), а в регистрР1 необходимо загрузить значение 0xFF (лог. ‘1’ переводит выход в высокоимпедансное состояние).

Ред. 1.2

208

C8051F060/1/2/3/4/5/6/7

Рисунок 18.4. Пример использования матрицы

(P1MDIN = 0xЕ3, XBR0 = 0x3D, XBR1 = 0x14, XBR2 = 0x40)

Выв. I/O

 

 

 

P0

 

 

 

 

 

 

P1

 

 

 

 

 

 

P2

 

 

 

 

 

 

P3

 

 

 

Биты регистров

 

0

1

2

3

4

5

6

7

0

1

2

3

4

5

6

7

0

1

2

3

4

5

6

7

0

1

2

3

4

5

6

7

матрицы

TX0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

UART0EN: XBR0.2

RX0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SCK

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MISO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SPI0EN: XBR0.1

MOSI

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NSS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SDA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SMB0EN: XBR0.0

SCL

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TX1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

UART1EN: XBR2.2

RX1

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CEX0

 

● ●

● ● ● ●

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CEX1

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CEX2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PCA0ME: XBR0.[5:3]

CEX3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CEX4

 

 

 

 

 

 

 

 

● ● ●

● ●

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CEX5

 

 

 

 

 

 

 

 

 

● ● ●

● ● ●

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ECI

● ● ● ● ● ●

 

 

 

● ● ● ●

 

 

 

 

 

 

 

 

 

 

 

 

ECI0E: XBR0.6

CP0

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

 

 

 

CP0E: XBR0.7

CP1

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

 

 

CP1E: XBR1.0

CP2

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

 

CP2E: XBR3.3

T0

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

 

 

 

T0E: XBR1.1

/INT0

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

 

 

INT0E: XBR1.2

T1

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

 

T1E: XBR1.3

/INT1

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

 

INT1E: XBR1.4

T2

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

 

T2E: XBR1.5

T2EX

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

 

T2EXE: XBR1.6

T3

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

 

T3E: XBR3.0

T3EX

● ● ● ● ● ●

 

 

 

● ● ● ● ●

 

T3EXE: XBR3.1

T4

● ● ● ● ● ●

 

 

 

● ● ● ● ●

● ● ● ● ●

T4E: XBR2.3

T4EX

● ● ● ● ● ●

 

 

 

● ● ● ● ●

● ● ● ● ●

T4EXE: XBR2.4

/SYSCLK

● ● ● ● ● ●

 

 

 

● ● ● ● ●

● ● ● ● ●

SYSCKE: XBR1.7

CNVSTR2

● ●

 

 

 

● ● ● ●

CNVSTE2: XBR3.2

 

 

 

 

 

 

 

 

 

AIN2.0

AIN2.1

AIN2.2

AIN2.3

AIN2.4

AIN2.5

AIN2.6

AIN2.7

 

 

CP1+

CP1-

CP2+

CP2-

CP0+

CP0-

 

 

 

 

 

 

 

 

 

209

Ред. 1.2