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

Автор работы: Пользователь скрыл имя, 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 Мб (Скачать документ)

 

 

 

 

15.2. Режимы работы UART0

UART0 обеспечивает стандартный асинхронный полнодуплексный обмен данными. Режим работы UART0 (8-разрядный или 9-разрядный) выбирается при помощи бита S0MODE (SCON0.7). Типичные варианты использования UART приведены на рисунке ниже.

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

15.2.1. 8-разрядный UART

В режиме 8-разрядного UART для передачи одного байта данных используются 10 бит: один стартовый бит, восемь бит  данных (МЗР вперед) и один стоповый бит. Данные передаются МЗР вперед через  внешний вывод TX0 и принимаются  через внешний вывод RX0. При приеме в регистре SBUF0 сохраняются восемь бит данных, а бит RB80 (SCON0.2) принимает значение стопового бита.

Передача данных начинается, когда  происходит запись байта данных в  регистр SBUF0. Флаг прерывания от передатчика TI0 (SCON0.1) устанавливается в 1 в конце передачи (в начале передачи стопового бита).

Прием данных может быть начат в  любое время после установки  в 1 флага включения приемника REN0 (SCON0.4). После приема стопового бита байт данных будет загружен в регистр  приемника SBUF0, если соблюдаются следующие условия: RI0 должен быть равен лог.0, и, если MCE0 = 1, то стоповый бит должен быть равен лог.1. В случае переполнения данных при приеме первые принятые 8 бит «защелкиваются» в регистре приемника SBUF0, а следующие данные, вызвавшие переполнение, теряются.

Если эти условия соблюдаются, то восемь бит данных сохраняются  в регистре SBUF0, стоповый бит сохраняется  в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия не соблюдаются, то SBUF0 и RB80 не будут загружаться  и флаг RI0 не устанавливается. При установке флагов TI0 или RI0 будет сгенерировано прерывание, если оно разрешено.

Рисунок 15.4. Временные  диаграммы в режиме 8-разрядного UART

15.2.2. 9-разрядный UART

В режиме 9-разрядного UART для передачи одного байта данных используются 11 бит: один стартовый бит, восемь бит данных (МЗР вперед), программируемый девятый бит данных и один стоповый бит. При передаче значение девятого бита данных определяется значением бита TB80 (SCON0.3), который устанавливается/сбрасывается программой пользователя. Значение девятого бита может либо соответствовать значению флага четности «Р» регистра PSW (применяется для обнаружения ошибок), либо использоваться для организации связи с несколькими МК. При приеме значение девятого бита сохраняется в бите RB80 (SCON0.2), а стоповый бит игнорируется.

Передача данных начинается, когда  происходит запись байта данных в  регистр SBUF0. Флаг прерывания от передатчика TI0 (SCON0.1) устанавливается в 1 в конце  передачи (в начале передачи стопового  бита). Прием данных может быть начат в любое время после установки в 1 флага включения приемника REN0 (SCON0.4). После приема стопового бита байт данных будет загружен в регистр приемника SBUF0, если соблюдаются следующие условия: RI0 должен быть равен лог.0, и, если MCE0 = 1, то стоповый бит должен быть равен лог.1 (когда MCE0 = 0, состояние девятого бита данных не имеет значения). Если эти условия соблюдаются, то восемь бит данных сохраняются в регистре SBUF0, девятый бит данных сохраняется в бите RB80 и устанавливается в 1 флаг RI0. Если эти условия не соблюдаются, то SBUF0 и RB80 не будут загружаться и флаг RI0 не будет устанавливаться.

При установке флагов TI0 или RI0 будет  сгенерировано прерывание от модуля UART0, если оно разрешено.

Рисунок 15.5. Временные диаграммы в режиме 9-разрядного UART

15.3. Поддержка связи  с несколькими МК

9-разрядный режим UART поддерживает  мультимикроконтроллерный обмен  данными между ведущим МК и  одним или несколькими ведомыми  МК, для чего особым образом  используется девятый бит данных. Когда ведущий МК хочет передать данные одному или нескольким ведомым МК, он прежде всего посылает байт адреса, чтобы выбрать конкретное(-ые) устройство(-а). Адресный байт отличается от байта данных тем, что его девятый бит равен лог.1; в байте данных девятый бит всегда равен лог.0.

Установка в 1 бита MCE0 (SCON0.5) ведомого МК настраивает его модуль UART0 таким  образом, что при получении стопового  бита UART0 будет генерировать прерывание только в том случае, если принятый девятый бит равен лог.1 (RB80 = 1), уведомляя тем самым систему о том, что принят адресный байт. В процедуре обработки прерывания от UART0 необходимо сравнить принятый адрес с собственным 8-разрядным адресом ведомого.

Если эти адреса совпадают, ведомый  МК должен сбросить в 0 свой бит MCE0, чтобы разрешить генерацию прерываний при получении следующих байтов данных. Ведомые МК, которые не были адресованы, оставляют свои биты MCE0 равными 1 и не генерируют запросов прерываний при получении следующих байтов данных, т.е. игнорируют их. После того, как все сообщение получено, адресованный ведомый МК устанавливает в 1 бит MCE0, чтобы игнорировать все посылки до получения следующего адресного байта.

Одному ведомому устройству можно  назначить несколько адресов  и/или один адрес можно назначить нескольким ведомым устройствам, поэтому возможна “широковещательная” передача данных более чем одному ведомому устройству одновременно. Ведущий процессор можно настроить на прием всех сообщений или протокол обмена можно реализовать таким образом, чтобы временно менять местами ведущего и ведомого, обеспечив тем самым полудуплексный обмен данными между истинным ведущим и ведомым(-и).

Рисунок 15.6. Пример использования UART в многопроцессорном режиме

 

SFR-описание 15.1. SCON0: Регистр  управления UART0

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

Бит 7: S1MODE: Режим работы UART0. Этот бит  выбирает режим работы UART0.

0: Режим 0: 8-разрядный UART с изменяемой  скоростью передачи данных.

1: Режим 1: 9-разрядный UART с изменяемой  скоростью передачи данных.

Бит 6: Не используется. Читается как 1b. Запись не оказывает никакого влияния.

Бит 5: MCE0: Разрешение поддержки мультимикроконтроллерного  взаимодействия.

Функционирование этого бита зависит  от режима работы UART0.

Режим 0 (S0MODE = 0): Проверка корректности стопового бита.

0: Логический уровень стопового  бита игнорируется.

1: Флаг RI0 будет установлен только  в том случае, если стоповый  бит равен лог.1.

Режим 1 (S0MODE = 1): Разрешение поддержки  мультимикроконтроллерного 

взаимодействия.

0: Логический уровень девятого бита игнорируется.

1: Флаг RI0 устанавливается и прерывание  генерируется только в том  случае, если

девятый бит равен лог.1.

Бит 4: REN0: Разрешение приема. Этот бит  включает/отключает приемник UART0.

0: Прием данных модулем UART0 запрещен.

1: Прием данных модулем UART0 разрешен.

Бит 3: TB80: Девятый бит передаваемых данных. Значение этого бита будет  передано в качестве

девятого бита данных в 9-разрядном  режиме работы UART0. В 8-разрядном режиме

работы UART0 этот бит не используется. Бит TB80 устанавливается и сбрасывается

программно.

Бит 2: RB80: Девятый бит принимаемых  данных. Этот бит принимает значение полученного 

стопового бита в режиме 0. В режиме 1 бит RB80 принимает значение девятого бита

данных.

Бит 1: TI0: Флаг прерывания от передатчика UART0. Устанавливается в 1 аппаратно по

окончании передачи байта данных (после  передачи 8-го бита в режиме 0, или  в начале

передачи стопового бита в режиме 1). Если прерывание от UART0 разрешено, то установка 

этого бита вызовет переход на процедуру обслуживания прерывания от UART0. Этот бит

должен сбрасываться программно.

Бит 0: RI0: Флаг прерывания от приемника UART0. Устанавливается в 1 аппаратно  при приеме

байта данных (Устанавливается в  момент выборки стопового бита). Если прерывание от

UART0 разрешено, то установка этого  бита вызовет переход на процедуру  обслуживания 

прерывания от UART0. Этот бит должен сбрасываться программно.

 

SFR-описание 15.2. SBUF0: Регистр  буфера данных UART0

SFR-адрес: 0x99

Биты 7-0: SBUF0.[7:0]: Биты (7-0) буфера данных UART0 (СЗР - МЗР).

На самом деле именем SBUF0 обозначаются два регистра: сдвиговый  регистр передатчика и регистр-защелка  приемника. Когда данные записываются в регистр SBUF0, они загружаются  в сдвиговый регистр передатчика  и сохраняются для последовательной передачи. Запись данных в SBUF0 инициирует передачу. Когда данные читаются из регистра SBUF0, они считываются из регистра-защелки приемника.

 

Таблица 15.1. Параметры  настройки таймера для стандартных  скоростей передачи

данных при тактировании от внутреннего генератора (24.5 МГц)

Х – Не имеет значения

* Определения бит SCA1 – SCA0 и  Т1М приведены в разделе 21.1.

Таблица 15.2. Параметры  настройки таймера для стандартных  скоростей передачи

данных при тактировании от внешнего генератора (25 МГц)

Х – Не имеет значения

* Определения бит SCA1 – SCA0 и  Т1М приведены в разделе 22.1.

Таблица 15.3. Параметры  настройки таймера для стандартных  скоростей передачи

данных при тактировании от внешнего генератора (22.1184 МГц)

Х – Не имеет значения

* Определения бит SCA1 – SCA0 и Т1М приведены в разделе 17.1.

Таблица 15.4. Параметры  настройки таймера для стандартных  скоростей передачи

данных при тактировании от внешнего генератора (18.432 МГц)

Х – Не имеет значения

* Определения бит SCA1 – SCA0 и  Т1М приведены в разделе 17.1.

 

Таблица 15.5. Параметры  настройки таймера для стандартных  скоростей передачи

данных при тактировании от внешнего генератора (11.0592 МГц)

Х – Не имеет значения

* Определения бит SCA1 – SCA0 и  Т1М приведены в разделе 17.1.

 

Таблица 15.6. Параметры настройки таймера для стандартных скоростей передачи

данных при тактировании от внешнего генератора (3.6864 МГц)

Х – Не имеет значения

* Определения бит SCA1 – SCA0 и  Т1М приведены в разделе 17.1.

 

16. Модуль расширенного  SPI (SPI0)

Модуль SPI (SPI0) обеспечивает доступ к гибкой полнодуплексной синхронной последовательной шине. SPI0 может выполнять функции ведущего или ведомого устройства в 3-х проводном или 4-х проводном режимах, а также поддерживает работу нескольких ведомых и ведущих устройств на одной шине. Сигнал выбора ведомого (NSS) можно настроить как вход выбора SPI0 в ведомом режиме или как вход отключения функций ведущего при работе на шине с несколькими ведущими, что позволяет предотвратить конфликты на шине в том случае, если два или более ведущих попытаются передать данные одновременно. Кроме этого, NSS можно настроить как выход выбора кристалла в ведущем режиме или отключить при работе в 3-х проводном режиме. В ведущем режиме можно также использовать порты ввода/вывода общего назначения для выбора нескольких ведомых устройств.

 

Рисунок 16.1. Структурная  схема модуля SPI

 

16.1. Описание сигналов

Ниже описаны четыре сигнала, используемые интерфейсом SPI0 (MOSI, MISO, SCK, NSS).

16.1.1. Выход ведущего, вход  ведомого (MOSI)

Сигнал MOSI (master-out, slave-in - «выход ведущего, вход ведомого») является выходом данных ведущего устройства и входом данных ведомых устройств. Он используется для последовательной передачи данных от ведущего к ведомому. Этот сигнал является выходом, если SPI0 работает в ведущем режиме, и входом, если SPI0 работает в ведомом режиме. Данные передаются старшими значащими разрядами вперед.

При работе в ведущем режиме значение сигнала MOSI определяется старшим значащим разрядом сдвигового регистра как в 3-х проводном, так и в 4-х проводном режимах.

16.1.2. Вход ведущего, выход  ведомого (MISO)

Сигнал MISO (master-in, slave-out - «вход ведущего, выход ведомого») является выходом  данных ведомого устройства и входом данных ведущего устройства. Он используется для последовательной передачи данных от ведомого к ведущему. Этот сигнал является входом, если SPI0 работает в ведущем режиме, и выходом, если SPI0 работает в ведомом режиме. Данные передаются старшими значащими разрядами вперед. Вывод MISO переводится в высокоимпедансное состояние, когда модуль SPI0 отключен, а также тогда, когда модуль SPI0 работает в 4-х проводном режиме как ведомый, который не выбран. Когда модуль SPI0 работает в 3-х проводном режиме как ведомый, сигнал MISO всегда определяется старшим значащим разрядом сдвигового регистра.

16.1.3. Тактовые импульсы (SCK)

Сигнал SCK (serial clock – «импульсы тактирования последовательного интерфейса») является выходом ведущего устройства и входом ведомых устройств. Он используется для синхронизации обмена данными между ведущим и ведомым устройствами по линиям MOSI и MISO. SPI0 генерирует этот сигнал, когда работает в ведущем режиме. В 4-х проводном ведомом режиме сигнал SCK игнорируется ведомым SPI, когда ведомый не выбран (NSS = 1).

16.1.4. Выбор ведомого (NSS)

Функционирование сигнала выбора ведомого (NSS) зависит от состояния  бит NSSMD1 и NSSMD0 регистра SPI0CN. С помощью  этих бит можно выбрать три  возможных режима:

1. NSSMD[1:0] = 00: 3-х проводный ведущий  или 3-х проводный ведомый режим: SPI0 работает в 3-х проводном режиме и NSS отключен. В 3-х проводном ведомом режиме SPI0 выбран всегда. Т.к. сигнал выбора отсутствует, то в 3-х проводном режиме SPI0 должен быть единственным ведомым на шине. Этот режим предназначен для организации взаимодействия типа “точка - точка” между ведущим устройством и одним ведомым устройством.

2. NSSMD[1:0] = 01: 4-х проводный ведомый  режим или режим с несколькими  ведущими:

SPI0 работает в 4-х проводном  режиме и NSS является входом. При  работе в ведомом режиме сигнал NSS является сигналом выбора данного ведомого. При работе в ведущем режиме срез (переход из состояния 1 в состояние 0) сигнала NSS отключает функции ведущего SPI0, что позволяет работать на одной SPI шине нескольким ведущим устройствам.

3. NSSMD[1:0] = 1х: 4-х проводный ведущий режим: SPI0 работает в 4-х проводном режиме и NSS является выходом. Значение бита NSSMD0 определяет, сигнал какого логического уровня будет выведен на вывод NSS. Эту конфигурацию следует использовать только тогда, когда SPI0 работает в ведущем режиме.

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