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

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

На рисунках 16.2, 16.3 и 16.4 показаны типичные схемы включения для различных  режимов работы.

Следует иметь ввиду, что состояние бит NSSMD влияет на разводку выводов МК. В 3-х проводном ведомом или 3-х проводном ведущем режимах вывод NSS не будет разводиться матрицей. Во всех других режимах сигнал NSS будет выводиться на внешний вывод МК. Подробная информация о портах ввода/вывода общего назначения и матрице приведена в разделе «17. Порты ввода/вывода» на стр. 189.

16.2. Функционирование SPI0 в ведущем режиме

Все сеансы обмена данными по SPI шине инициируются ведущим устройством. Модуль SPI0 переводится в ведущий  режим работы установкой в 1 флага  включения ведущего режима (MSTEN, SPI0CN.6). Если модуль SPI0 работает в ведущем  режиме, то запись байта данных в регистр данных модуля SPI0 (SPI0DAT) вызовет загрузку буфера передатчика.

Если сдвиговый регистр модуля SPI0 пуст, то в него загружается байт из буфера передатчика и начинается передача данных. Ведущий SPI сразу же начинает последовательно сдвигать данные на линию MOSI, выдавая тактовые импульсы на линию SCK. По окончании передачи устанавливается в 1 флаг SPIF (SPI0CN.7). Если прерывания разрешены, то при установке флага SPIF генерируется запрос прерывания. В полнодуплексном режиме работы в то время, когда ведущий SPI0 передает данные ведомому по линии MOSI, адресуемый ведомый одновременно передает содержимое своего регистра сдвига ведущему SPI0 по линии MISO. Поэтому флаг SPIF является как флагом окончания передачи, так и флагом готовности принимаемых данных. Байт данных, принимаемый от ведомого устройства, передается старшими значащими разрядами вперед в сдвиговый регистр ведущего. После полной загрузки сдвигового регистра полученный байт данных переписывается в буфер приемника, откуда он может быть считан процессором путем чтения регистра SPI0DAT.

Когда модуль SPI0 настроен как ведущий, он может работать в одном из трех различных режимов:

- режим работы с несколькими  ведущими;

- 3-х проводный режим работы  с одним ведущим;

- 4-х проводный режим работы с одним ведущим.

Активным по умолчанию является режим работы с несколькими ведущими, когда NSSMD1 (SPI0CN.3) = 0 и NSSMD0 (SPI0CN.2) = 1. В этом режиме NSS функционирует как вход и используется для отключения ведущего SPI0 в то время, когда другой ведущий пытается получить доступ к шине. Если в этом режиме на вход NSS подается сигнал низкого логического уровня, то сбрасываются в 0 биты MSTEN (SPI0CN.6) и SPIEN (SPI0CN.0), выключая тем самым ведущий модуль SPI0, и устанавливается в 1 флаг ошибки режима MODF (SPI0CN.5). При установке флага ошибки режима будет сгенерировано прерывание, если оно разрешено. При данных обстоятельствах требуется программно вновь включить модуль SPI0. В системе с несколькими ведущими любое устройство обычно по умолчанию становится ведомым устройством и будет оставаться ведомым до тех пор, пока оно не будет активировано как ведущее устройство системы. В режиме с несколькими ведущими ведомые устройства можно адресовать индивидуально (при необходимости), используя порты ввода/вывода общего назначения. На рисунке 16.2 приведена схема соединений между двумя ведущими устройствами в режиме с несколькими ведущими.

3-х проводный режим работы  с одним ведущим активен тогда,  когда NSSMD1 (SPI0CN.3) = 0 и NSSMD0 (SPI0CN.2) = 0. В этом режиме NSS не используется и не разводится на внешний вывод порта с помощью матрицы. Все ведомые устройства, которые требуется адресовать в этом режиме работы, необходимо выбирать с помощью портов ввода/вывода общего назначения. На рисунке 16.3 приведена схема соединений между ведущим и ведомым устройствами в 3-х проводном режиме.

4-х проводный режим работы  с одним ведущим активен тогда,  когда NSSMD1 (SPI0CN.3) = 1. В этом режиме NSS функционирует как выход и  может использоваться как сигнал  выбора ведомого для одного устройства SPI. Логический уровень сигнала на выходе NSS определяется (программно) битом NSSMD0 (SPI0CN.2). Другие ведомые устройства можно адресовать с помощью портов ввода/вывода общего назначения. На рисунке 16.4 приведена схема соединений между одним ведущим и двумя ведомыми устройствами в 4-х проводном режиме.

Рисунок 16.2. Схема включения  в режиме с несколькими ведущими

Рисунок 16.3. Схема соединения одного ведущего и одного ведомого с использованием

3-х проводной шины SPI

Рисунок 16.4. Схема соединения одного ведущего и нескольких ведомых с

использованием 4-х проводной  шины SPI

16.3. Функционирование SPI0 в ведомом режиме

Когда модуль SPI0 включен и не настроен как ведущий, он будет функционировать  как ведомый SPI. Байты данных принимаются  по линии MOSI от ведущего и передаются по линии MISO ведущему, при этом ведущее устройство управляет сигналом на линии SCK. Битовый счетчик модуля SPI0 подсчитывает фронты сигнала SCK. После того, как 8 бит данных приняты в сдвиговый регистр, устанавливается в 1 флаг SPIF и байт данных копируется в буфер приемника. Данные считываются из буфера приемника путем чтения регистра SPI0DAT. Ведомое устройство не может инициировать процесс обмена данными.

Данные, которые необходимо передать ведущему, предварительно загружаются в сдвиговый регистр путем записи регистра SPI0DAT. При записи регистра SPI0DAT используется двойная буферизация и данные сначала загружаются в буфер передатчика. Если сдвиговый регистр пуст, то содержимое буфера передатчика будет сразу же передано в сдвиговый регистр. В том случае, если сдвиговый регистр уже содержит данные, то SPI0 дождется последнего фронта сигнала SCK следующей (или текущей) передачи, и только после этого загрузит сдвиговый регистр содержимым буфера передатчика. Когда модуль SPI0 функционирует как ведомый, его можно настроить на работу в 3-х проводном или 4-проводном режимах. Активным по умолчанию является 4-проводный ведомый режим, когда NSSMD1 (SPI0CN.3) = 0 и NSSMD0 (SPI0CN.2) = 1.

В 4-проводном режиме сигнал NSS разведен на внешний вывод порта, который настроен как цифровой вход. SPI0 включен, когда NSS = 0, и отключен, когда NSS = 1. Битовый счетчик сбрасывается по заднему фронту сигнала NSS. Следует иметь ввиду, что сигнал NSS необходимо сбросить в 0 как минимум за 2 системных тактовых цикла до первого активного фронта сигнала SCK для каждого передаваемого байта. На рисунке 16.4 приведена схема соединений между одним ведущим и двумя ведомыми устройствами в 4-х проводном режиме. 3-проводный ведомый режим активен, когда NSSMD1 (SPI0CN.3) = 0 и NSSMD0 (SPI0CN.2) = 0. NSS не используется в этом режиме и не разводится на внешний вывод порта с помощью матрицы. Т.к. в этом режиме нет способа однозначной адресации устройства, то SPI0 должен быть единственным ведомым устройством, присутствующим на шине. Важно иметь ввиду, что в 3-х проводном ведомом режиме невозможно извне сбросить битовый счетчик, который определяет момент окончания приема байта. Этот битовый счетчик можно сбросить лишь путем выключения и повторного включения модуля SPI0 с помощью бита SPIEN. На рисунке 16.3 приведена схема соединений между ведущим и ведомым устройствами в 3-х проводном режиме.

16.4. Источники прерываний  модуля SPI0

Если прерывания от модуля SPI0 разрешены, то следующие 4 флага будут генерировать прерывания при установке их в 1:

Примечание: Все  описанные ниже флаги должны сбрасываться программно.

1. Флаг прерывания от модуля SPI0 SPIF (SPI0CN.7) устанавливается в 1 по  окончании передачи каждого байта.  Установка этого флага возможна  во всех режимах работы модуля SPI0.

2. Флаг конфликта записи WCOL (SPI0CN.6) устанавливается в 1, если запись  в регистр SPI0DAT происходит в  тот момент, когда данные из  буфера передатчика еще не  переписаны в сдвиговый регистр.  В этом случае запись в регистр  SPI0DAT игнорируется и буфер передатчика не переписывается. Установка этого флага возможна во всех режимах работы модуля SPI0.

3. Флаг ошибки режима MODF (SPI0CN.5) устанавливается  в 1, если модуль SPI0 функционирует  как ведущий в режиме работы  с несколькими ведущими и на входе NSS появляется сигнал с низким логическим уровнем. В этом случае будут сброшены в 0 биты MSTEN и SPIEN в регистре SPI0CN, в результате чего модуль SPI0 будет отключен. Это позволит другому ведущему устройству получить доступ к шине.

4. Флаг переполнения приемника RXOVRN (SPI0CN.4) устанавливается в 1, если при работе в режиме ведомого передача завершается, а буфер приемника все еще содержит непрочитанный байт от предыдущей передачи. Новый байт не переписывается в буфер приемника, что позволяет прочитать ранее принятый байт данных. Байт данных, который вызвал переполнение приемника, теряется.

16.5. Тактирование

Используя биты управления тактовой частотой регистра конфигурации модуля SPI0 (SPI0CFG), можно выбрать четыре комбинации фазы и полярности импульсов тактирования последовательного интерфейса. Бит CKPHA (SPI0CFG.5) выбирает одну из двух фаз тактового сигнала (фронт, используемый для «защелкивания» данных). Бит CKPOL (SPI0CFG.4) выбирает активный фронт (передний или задний) тактового сигнала. Как ведущий, так и ведомые устройства должны быть настроены на использование одинаковых фазы и полярности тактовых импульсов. При изменении фазы и полярности тактовых импульсов модуль SPI0 следует отключить сбросом в 0 бита SPIEN (SPI0CN.0). Временные диаграммы сигналов данных и тактирования для ведущего режима показаны на рисунке 16.5.

Для ведомого режима временные диаграммы  сигналов данных и тактирования показаны на рисунках 16.6 и 16.7. Следует иметь  ввиду, что бит CKPHA должен быть сброшен  в 0 как у ведущего, так и у ведомого SPI при организации взаимодействия между двумя следующими устройствами: C8051F04x, C8051F06x, C8051F12x, C8051F31x, C8051F32x, C8051F33x и C8051F31x.

Регистр установки тактовой частоты  модуля SPI0 SPI0CKR (см. SFR-описание 16.3) управляет частотой тактирования последовательного интерфейса при работе в ведущем режиме. При работе в ведомом режиме содержимое этого регистра игнорируется. Когда модуль SPI0 настроен как ведущий, максимальная скорость передачи данных (в бит/сек) равна половине системной тактовой частоты (но не более 12,5 МГц). Когда модуль SPI0 настроен как ведомый, максимальная скорость передачи данных (в бит/сек) для полнодуплексного режима работы равна 1/10 системной тактовой частоты, при условии, что сигналы от ведущего SCK, NSS (в 4-х проводном ведомом режиме) и последовательные входные данные синхронизированы с системной тактовой частотой ведомого.

Если сигналы от ведущего SCK, NSS и  последовательные входные данные асинхронны, то максимальная скорость передачи данных (в бит/сек) должна быть меньше 1/10 системной тактовой частоты. В особом случае, когда ведущему требуется только передавать данные ведомому и не требуется принимать от него данные (т.е. полудуплексный режим работы), ведомый модуль SPI может принимать данные с максимальной скоростью (в бит/сек), равной 1/4 системной тактовой частоты. Это справедливо при условии, что сигналы от ведущего SCK, NSS и последовательные входные данные синхронизированы с системной тактовой частотой ведомого.

 

Рисунок 16.5. Временные  диаграммы сигналов данных/тактирования в

режиме ведущего

 

Рисунок 16.6. Временные  диаграммы сигналов данных/тактирования в режиме

ведомого (CKPHA = 0)

Рисунок 16.7. Временные  диаграммы сигналов данных/тактирования в режиме

ведомого (CKPHA = 1)

 

16.6. Регистры специального назначения модуля SPI0

Для доступа к интерфейсу SPI и  управления им используются четыре регистра специального

назначения: регистр управления SPI0CN, регистр данных SPI0DAT, регистр конфигурации SPI0CFG и регистр

установки тактовой частоты SPI0CKR. Все эти регистры описаны ниже.

 

SFR-описание 16.1. SPI0CFG: Регистр  конфигурации модуля SPI0

SFR-адрес: 0xA1

Бит 7: SPIBSY: Флаг занятости модуля SPI0 (только для чтения). Этот бит устанавливается  в 1

тогда, когда SPI0 находится в процессе передачи данных  (ведущий или ведомый режим).

Бит 6: MSTEN: Включение ведущего режима.

0: Ведущий режим отключен. Модуль SPI0 работает в ведомом режиме.

1: Ведущий режим включен. Модуль SPI0 работает в ведущем режиме.

Бит 5: CKPHA: Выбор активной фазы тактового сигнала модуля SPI0. Этот бит управляет фазой

тактового сигнала модуля SPI0.

0: Данные фиксируются по первому  фронту периода сигнала SCK.*

1: Данные фиксируются по второму  фронту периода сигнала SCK.*

Бит 4: CKPOL: Выбор полярности тактового  сигнала модуля SPI0. Этот бит управляет

полярностью тактового сигнала  модуля SPI0.

0: В состоянии простоя на линии  SCK установлен сигнал низкого  уровня.

1: В состоянии простоя на линии  SCK установлен сигнал высокого  уровня.

Бит 3: SLVSEL: Флаг выбора ведомого (только для чтения). Этот бит аппаратно устанавливается

в 1 всякий раз, когда на линию NSS подан  сигнал низкого уровня, и показывает, что 

SPI0 является выбранным ведомым.  Этот бит сбрасывается в 0, если  на линию NSS

подан сигнал высокого уровня (ведомый  не выбран). Этот бит отражает не

мгновенное состояние сигнала  на выводе NSS, а скорее сглаженную (без 

паразитных выбросов) форму этого  сигнала.

Бит 2: NSSIN: Флаг мгновенного состояния  сигнала на входном выводе NSS (только для чтения).

Этот бит отражает мгновенное значение сигнала на входном выводе NSS в момент

чтения этого регистра. Этот вход не является сглаженным.

Бит 1: SRMT: Флаг опустошения сдвигового регистра (только для чтения, действителен в 

ведомом режиме). Этот бит будет  устанавливаться в 1 тогда, когда все данные

переданы в сдвиговый регистр  или из сдвигового регистра, и нет  новых данных для 

считывания из буфера передатчика  или записи в буфер приемника. Этот бит 

сбрасывается в 0, когда байт данных передается в сдвиговый регистр  из буфера

передатчика или при изменении сигнала SCK.

Примечание: SRMT = 1 в ведущем режиме работы.

Бит 0: RXBMT: Флаг опустошения буфера приемника (только для чтения, действителен в 

ведомом режиме). Этот бит будет  устанавливаться в 1 тогда, когда  буфер 

приемника прочитан и не содержит новых данных. Если в буфере приемника

имеются доступные для чтения новые  данные, которые не были прочитаны, то этот

бит будет сброшен в 0.

Примечание: RXBMT = 1 в ведущем режиме работы.

* Примечание: В ведомом режиме данные на линии MOSI выбираются в центре каждого битового интервала. В ведущем режиме данные на линии MISO выбираются за один цикл SYSCLK до окончания каждого битового интервала, что позволяет обеспечить максимальное время установления сигнала для ведомого устройства. Временные параметры приведены в

таблице 16.1.

 

SFR-описание 16.2. SPI0CN: Регистр  управления модуля SPI0

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

Бит 7: SPIF: Флаг прерывания от модуля SPI0. Этот бит аппаратно устанавливается  в 1 по

окончании передачи данных. Если прерывания разрешены, то установка этого бита

приведет к переходу на процедуру  обслуживания прерывания от модуля SPI0. Этот

бит не сбрасывается аппаратно, его  необходимо сбросить программно.

Бит 6: WCOL: Флаг конфликта записи. Этот бит аппаратно устанавливается в 1 (и генерирует

прерывание от модуля SPI0) и тем  самым показывает, что была произведена 

попытка записи в регистр данных модуля SPI0, когда текущий сеанс  передачи

данных еще не завершился. Этот бит необходимо сбросить программно.

Бит 5: MODF: Флаг ошибки режима. Этот бит  аппаратно устанавливается в 1 (и  генерирует

прерывание от модуля SPI0) при обнаружении  конфликта ведущего режима (на

линии NSS низкий уровень, MSTEN = 1 и NSSMD[1:0] = 01). Этот бит не

сбрасывается аппаратно, его необходимо сбросить программно.

Бит 4: RXOVRN: Флаг переполнения приемника (только ведомый режим работы). Этот бит 

аппаратно устанавливается в 1 (и  генерирует прерывание от модуля SPI0), если

приемный буфер все еще содержит непрочитанные данные от предыдущей

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