Лекции по «Проектированию и программированию микропроцессорных систем управления»

Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 22:23, курс лекций

Краткое описание

К началу 70-х годов были созданы сложные системы. Возникла потребность в передаче части функций управления периферийным устройствам, расположенным рядом с объектом управления. К концу 60-х годов в технике стала проявляться тенденция к децентрализации управления. Для этого требовались недорогие, малогабаритные и надежные вычислители. С другой стороны электрическая промышленность к этому времени способна была производить интегральные микросхемы (ИМС) до 3-го уровня интеграции.

Содержание

1. Введение, цели и задачи курса ……………………………………………………………… 3
2. Историческая справка …………………………………………………………………………. 4
3. Структурная организация типового микроконтроллера МК51 …………………………….. 7
4. Методология проектирования систем на основе МП и МЭВМ ……………………………. 8
Описание микроконтроллера C8051F310/311 ……………………………………………… 12
1. Краткий обзор ……………………………………………………………………………… 12
2. Предельно допустимые параметры ……………………………………………………… 24
3. Основные электрические параметры …………………………………………………… . 25
4. Описание корпусов и выводов …………………………………………………………… 26
5. 10-разрядный АЦП ………………………………………………………………………… 30
6. Источник опорного напряжения ………………………………………………………… 44
7. Компараторы …………………….………………………………………………………… 46
8.4. Режимы управления электропитанием ……………………………………………… 53
9. Источники сброса ………………………….……………………………………………… 55
10. Flash-память ……………………………………………………………………………… 60
11. Встроенная память XRAM ……………………………………………………………… 70
12. Генераторы …………………………………………………………….………………… 72
13. Порты ввода/вывода ……………………..……………………………………………… 76
14. SMBus ……………………………………..……………………………………………… 87
15. UART0 ……………………………………..……………………………………………… 103
16. Модуль расширенного SPI (SPI0) ……..……………………………………………… 111
17. Таймеры ……………………………………………………………………………………… 122
18. Программируемый массив счетчиков ……………………………………………………… 137
Список использованных источников ……………………………………………………………

Прикрепленные файлы: 1 файл

Лекции по курсу МК.doc

— 4.57 Мб (Скачать документ)

000: Источником SYSCLK является внутренний  высокочастотный генератор. Частота SYSCLK равна частоте ВЧ-генератора, деленной на коэффициент, определяемый битами IFCN в регистре OSCICN.

001: Источником SYSCLK является внешний  генератор.

010: Источником SYSCLK является внутренний  низкочастотный генератор. Частота SYSCLK равна частоте НЧ-генератора, деленной на коэффициент, определяемый битами OSCLD в регистре OSCLCN.

011: Зарезервировано.

100: Источником SYSCLK является встроенная  система ФАПЧ.

101-111: Зарезервировано.

SFR-описание 12.5. OSCXCN: Регистр управления внешним генератором

SFR-адрес: 0xB6

 

 

13. Порты ввода/вывода

Для доступа к аналоговым и цифровым ресурсам МК используются до 39 внешних линий ввода/вывода. В МК C8051F310/1 внешние линии ввода/вывода организованы как четыре 8-разрядных  порта и один 7-разрядный порт. В остальных МК (C8051F310/1) внешние линии ввода/вывода организованы как три 8-разрядных порта и еще один неполный порт. Каждый из выводов портов можно определить как порт ввода/вывода общего назначения (GPIO) или аналоговый вход/выход; выводы портов P0.0 – P3.7 можно назначить одному из внутренних цифровых модулей, как показано на рисунке 13.3. Разработчик системы сам определяет, какие цифровые ресурсы будут назначены внешним выводам, ограничиваясь только количеством доступных выводов. Такая гибкость при распределении ресурсов достигается благодаря использованию приоритетного декодера матрицы. Следует иметь ввиду, что состояние на внешнем выводе порта всегда можно прочитать из соответствующего регистра-защелки порта независимо от настройки матрицы.

Матрица назначает внешние  порты ввода/вывода выбранным внутренним цифровым  

ресурсам, используя приоритетный декодер (см. рисунки 13.3 и 13.4). Для выбора внутренних цифровых ресурсов используются регистры XBR0 и XBR1 (см. SFR-описания 13.1 и 13.2).

Допустимое напряжение на внешних выводах портов составляет 5В (см. схему ячейки порта на рисунке 13.2). С помощью регистров настройки  выходов портов (PnMDOUT, где n = 0,1,2,3,4) можно  настроить  выходные драйверы портов ввода/вывода либо как обычные цифровые выходы, либо как выходы с открытым  стоком. Полные электрические характеристики портов ввода/вывода приведены в таблице 13.1 на стр. 207.

 

Рисунок 13.1. Функциональная схема портов ввода/вывода (порты P0 – P3)

3.1 – 3.4 доступны в МК C8051F3

 

 

 

 

 

Рисунок 13.2. Структурная  схема ячейки порта ввода/вывода

 

13.1. Приоритетный декодер  матрицы

Приоритетный декодер матрицы (см. рисунок 13.3) назначает приоритет  каждой функции ввода/вывода, начиная  с выводов UART0. Если какой-либо цифровой ресурс выбран, то этому ресурсу назначается еще неназначенный внешний вывод с наименьшим приоритетом (кроме UART0, которому всегда назначаются выводы P0.1 и P0.2 в МК C8051F310/1 или Р0.4 и Р0.5 в МК C8051F310/1). Если вывод порта назначен, то матрица пропускает этот вывод при назначении выводов следующему выбранному ресурсу. Кроме того, матрица будет пропускать выводы портов, если соответствующие им биты в регистрах PnSKIP установлены в 1.

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

Важное замечание относительно конфигурации матрицы: Если вывод порта закреплен за периферийным модулем без использования матрицы, то соответствующий ему бит в регистрах PnSKIP должен быть установлен в 1. Это касается выводов портов, связанных с функционированием внешнего генератора (XTAL1 и/или XTAL2), VREF, внешнего сигнала CNVSTR, выхода ЦАП0, а также любых выбранных входов АЦП0 или компараторов. Матрица пропускает выбранные выводы, как если бы они были уже назначены, и переходит к следующему неназначенному выводу. На рисунке 13.3 показаны приоритеты декодера матрицы без пропуска каких-либо выводов портов (P0SKIP, P1SKIP, P2SKIP, P3SKIP = 0x00); на рисунке 134.4 показаны приоритеты декодера матрицы с пропуском выводов P1.0 и P1.1 (P1SKIP = 0x03).

 

 

Рисунок 13.3. Приоритетный декодер матрицы (нет пропускаемых выводов)

 

 

Рисунок 13.4. Приоритетный декодер матрицы

(пропускаются выводы  портов P1.0 и P1.1)

Регистры XBR0 и XBR1 используются для назначения цифровых ресурсов внешним  портам ввода/вывода. Следует иметь  ввиду, что если выбран SMBus, то матрица  назначает оба вывода, связанные  с модулем SMBus (SDA и SCL); если выбран UART0, то матрица назначает оба вывода, связанные с модулем UART0 (TX и RX). Назначение выводов UART0 фиксировано с целью обеспечения возможности самозагрузки: TX0 всегда назначается выводу Р0.1 (в МК C8051F310/1); RX0 всегда назначается выводу Р0.2 (в МК C8051F310/1). После распределения приоритетных функций и пропускаемых выводов следуют (последовательно, начиная с P0.0) стандартные порты ввода/вывода.

Важное замечание: Модуль SPI может функционировать в 3- или 4-хпроводном режимах, в зависимости от состояния битов NSSMD1-NSSMD0 в регистре SPI0CN. В соответствии с режимом работы SPI сигнал NSS либо разводится, либо не разводится на внешний порт.

 

13.2. Инициализация  портов ввода/вывода

Инициализация порта ввода/вывода осуществляется следующим образом:

1. Выбрать тип входа (аналоговый  или цифровой) для всех выводов  портов, используя регистры настройки  входов портов PnMDIN.

2. Выбрать тип выхода (с открытым  стоком или обычный цифровой) для всех выводов портов, используя регистры настройки выходов портов PnMDOUT.

3. Используя регистры выбора  пропускаемых выводов (PnSKIP), выбрать  все выводы, которые должны пропускаться  матрицей при назначении выводов.

4. Назначить выводы портов  требуемым периферийным модулям, используя регистры XBRn.

5. Включить матрицу (XBARE = ‘1’).

 

Все выводы портов должны быть настроены  либо как аналоговые, либо как цифровые входы. Любые выводы, используемые в  качестве входов компараторов или АЦП, должны быть настроены как аналоговые входы. Если вывод настроен как аналоговый вход, то соответствующие ему слаботоковая подтяжка, драйвер цифрового выхода и цифровой приемник отключаются. Это позволяет снизить энергопотребление и уменьшить уровень шумов на аналоговом входе. Выводы, настроенные как цифровые входы, все равно могут использоваться аналоговыми периферийными модулями; однако это не рекомендуется.  Кроме этого, все аналоговые входы необходимо настроить таким образом, чтобы они пропускались матрицей при назначении выводов (для этого необходимо установить в 1 соответствующие биты в регистрах PnSKIP). Тип входа устанавливается с помощью соответствующих битов в регистрах PnMDIN (1 – цифровой вход, 0 – аналоговый вход). При сбросе все выводы настраиваются по умолчанию как цифровые входы.

Подробное описание регистров PnMDIN приведено  в SFR-описании 13.4. Параметры выходных драйверов портов задаются с помощью  регистров настройки выходов  портов PnMDOUT. Выходной драйвер каждого  порта можно настроить либо как  обычный цифровой выход, либо как выход с открытым стоком. Такая настройка не осуществляется автоматически; ее необходимо выполнить даже для цифровых ресурсов, выбранных в регистрах XBRn. Единственным исключением из этого правила являются выводы модуля SMBus (SDA, SCL), которые настраиваются как выходы с открытым стоком независимо от значений в регистрах PnMDOUT. Если бит WEAKPUD в регистре XBR1 сброшен в 0, то слаботоковая подтяжка включается у всех выводов портов, настроенных как выходы с открытым стоком. Бит WEAKPUD не влияет на выводы, настроенные как обычные цифровые выходы. Более того, с целью предотвращения нежелательного увеличения энергопотребления, слаботоковая подтяжка автоматически отключается у выхода, на который выдается лог.‘0’.

Для выбора цифровых ресурсов, требуемых для конкретного проекта, необходимо загрузить регистры XBR0 и XBR1 соответствующими значениями. Установка в 1 бита XBARE в регистре XBR1 включает матрицу. До момента включения матрицы внешние выводы остаются стандартными портами ввода/вывода (настроенными на вход), независимо от значений регистров XBRn. Если известно значение регистров XBRn, то, используя таблицу декодирования приоритетов, можно определить разводку внешних выводов МК на его внутренние ресурсы; есть и альтернативный метод – утилита Configuration Wizard (Мастер конфигурирования) программного пакета Silicon Labs IDE автоматически определит назначение выводов портов на основе значений регистров XBRn.

Чтобы использовать внешние выводы как стандартные порты ввода/вывода в режиме выходов, матрица должна быть включена. При отключении матрицы выходные драйверы портов отключаются.

 

SFR-описание 13.1. XBR0: Регистр 0 матрицы портов ввода/вывода

SFR-адрес: 0xE1

Бит 7: CP1AE: Бит подключения  асинхронного выхода Компаратора 1 (CP1A)

0: Асинхронный выход CP1A не соединен с внешним портом.

1: Асинхронный выход  CP1A соединен с внешним портом.

Бит 6: CP1E: Бит подключения  выхода Компаратора 1 (CP1)

0: CP1 не соединен с  внешним портом.

1: CP1 соединен с внешним  портом.

Бит 5: CP0AE: Бит подключения асинхронного выхода Компаратора 0 (CP0A)

0: Асинхронный выход  CP0A не соединен с внешним портом.

1: Асинхронный выход  CP0A соединен с внешним портом.

Бит 4: CP0E: Бит подключения  выхода Компаратора 0 (CP0)

0: CP0 не соединен с  внешним портом.

1: CP0 соединен с внешним портом.

Бит 3: SYSCKE: Бит подключения  выхода /SYSCLK

0: Выход /SYSCLK не соединен  с внешним портом.

1: Выход /SYSCLK (деленный  по частоте на 1, 2, 4 или 8) соединен  с внешним портом.

Коэффициент деления  определяется битами CLKDIV1-0 в регистре CLKSEL

(см. раздел «16. Генераторы»  на стр.135).

Бит 2: SMB0E: Бит подключения  входов/выходов модуля SMBus0

0: Входы/выходы модуля SMBus0 не соединены с внешними  портами.

1: Входы/выходы модуля SMBus0 соединены с внешними портами.

Бит 1: SPI0E: Бит подключения входов/выходов модуля SPI0

0: Входы/выходы модуля SPI0 не соединены с внешними  портами.

1: Входы/выходы модуля SPI0 соединены с внешними портами.  Следует иметь ввиду, 

что модулю  SPI0 могут  быть назначены либо 3, либо 4 внешних  вывода GPIO.

Бит 0: URT0E: Бит подключения  входов/выходов UART0

0: Входы/выходы UART0 не  соединены с внешними портами.

1: TX0 и RX0 соединены  с выводами Р0.1 и Р0.2 (C8051F310/1) соответственно.

 

SFR-описание 13.2. XBR1: Регистр 1 матрицы портов ввода/вывода

SFR-адрес: 0xE2

Бит 7: WEAKPUD: Бит  отключения слаботоковых подтяжек портов ввода/вывода.

0: Слаботоковые  подтяжки включены (кроме портов, чьи выводы настроены как аналоговые 

входы).

1: Слаботоковые  подтяжки отключены.

Бит 6: XBARE: Бит  включения матрицы.

0: Матрица отключена.

1: Матрица включена.

Бит 5: T1E: Бит  подключения T1.

0: T1 не соединен  с внешним портом.

1: T1 соединен  с внешним портом.

Бит 4: T0E: Бит  подключения T0.

0: T0 не соединен  с внешним портом.

1: T0 соединен  с внешним портом.

Бит 3: ECIE: Бит подключения внешнего входа (ECI) счетчика модуля ПМС (PCA0).

0: ECI не соединен  с внешним портом.

1: ECI соединен  с внешним портом.

Биты 2-0: PCA0ME: Биты подключения входов/выходов модуля ПМС (PCA0).

000: Все входы/выходы  модуля ПМС не соединены с  внешними портами.

001: CEX0 соединен  с внешним портом.

010: CEX0, CEX1 соединены  с внешними портами.

011: CEX0, CEX1, CEX2 соединены  с внешними портами.

100: CEX0, CEX1, CEX2, CEX3 соединены с внешними портами.

101: CEX0, CEX1, CEX2, CEX3, CEX4 соединены с внешними портами.

110: CEX0, CEX1, CEX2, CEX3, CEX4, CEX5 соединены с внешними портами.

111: Зарезервировано.

 

13.3. Порты ввода/вывода  общего назначения

Выводы портов, которые не назначены  матрицей и не используются аналоговыми  периферийными модулями, можно использовать в качестве портов ввода/вывода общего назначения. Порты Р0 – P3 доступны с помощью соответствующих SFR-регистров, к которым можно обращаться как в побайтном, так и в побитном режимах адресации.  При записи в порт значение, записываемое в SFR-регистр, «защелкивается»; это позволяет удерживать выходное значение на каждом выводе порта. При чтении логические уровни на внешних выводах портов возвращаются независимо от значений регистров XBRn (т.е. даже если вывод назначен матрицей другому сигналу, регистр порта все равно может прочитать логическое состояние на соответствующем входе). Исключением являются команды типа чтение-модификация-запись, которые обращаются к регистру-защелке порта. При работе с SFR-регистром порта командами типа чтение-модификация-запись являются следующие команды: ANL, ORL, XRL, JBC, CPL, INC, DEC, DJNZ, а также MOV, CLR или SETB, если они адресуют отдельный бит в SFR-регистре порта. В случае использования этих команд считывается, модифицируется и записывается обратно значение регистра-защелки (а не значение на внешнем выводе).

 

SFR-описание 13.3. P0: Регистр данных Порта 0

SFR-адрес: 0x80 (доступен в битовом режиме адресации)

Биты 7-0: P0.[7:0]

Запись – выходной сигнал появляется на внешних выводах в зависимости от состояния регистров

матрицы.

0: Выход в состоянии лог. 0.

1: Выход в состоянии лог. 1 (в  высокоимпедансном состоянии, если  соответствующий 

бит P0MDOUT.n = 0).

Чтение – Всегда читается как ‘0’, если в регистре P0MDIN выбран как аналоговый

вход. Читается непосредственно состояние вывода порта, если настроен как

цифровой вход.

0: На выводе P0.n низкий логический  уровень.

1: На выводе P0.n высокий логический  уровень.

 

SFR-описание 13.4. P0MDIN: Регистр настройки входов  Порта 0

SFR-адрес: 0xF1

Биты 7-0: Биты выбора аналогового режима работы для выводов P0.7 – P0.0 (соответственно).

Если вывод настроен как аналоговый вход, то его слаботоковая подтяжка, драйвер цифрового выхода и цифровой приемник отключаются.

0: Соответствующий вывод  P0.n настроен как аналоговый вход.

1: Соответствующий вывод  P0.n не настроен как аналоговый  вход.

 

SFR-описание 13.5. P0MDOUT: Регистр настройки выходов  Порта 0

Информация о работе Лекции по «Проектированию и программированию микропроцессорных систем управления»