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

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

 

 

 

14.3.3. Таймаут низкого  уровня на линии SCL

Если линия SCL удерживается на низком уровне ведомым устройством, то дальнейший обмен данными по шине невозможен. Кроме этого, ведущий не может установить на линии SCL высокий уровень, чтобы исправить ошибочное состояние. Чтобы решить эту проблему, протокол SMBus определяет, что устройства, участвующие в обмене, должны распознавать как условие «таймаута» любой тактовый цикл, в котором сигнал удерживается на низком уровне более 25 мс. Устройства, которые обнаружили такое условие таймаута, должны в течение 10 мс после этого сбросить свои модули обмена.

Если бит SMBTOE в регистре SMB0CF установлен в 1, то для обнаружения таймаута низкого уровня на линии SCL используется Таймер 3. Таймер 3 будет перезагружаться, если на линии SCL высокий уровень, и будет считать, если на линии SCL низкий уровень.

Если Таймер 3 включен и настроен на переполнение через 25 мс (и SMBTOE = 1), то процедуру обслуживания прерывания от Таймера 3 можно использовать для сброса (отключение и повторное включение) модуля SMBus в случае таймаута низкого уровня на линии SCL. (отключение и повторное включение) модуля SMBus в случае таймаута низкого уровня на линии SCL.

 

14.3.4. Таймаут высокого  уровня на линии SCL (таймаут  освобождения шины)

Спецификация SMBus оговаривает, что  если линии SCL и SDA удерживаются на высоком  уровне более 50 мкс, то шина считается  свободной. Если бит SMBFTE в регистре SMB0CF установлен в 1, то шина будет считаться свободной, если линии SCL и SDA удерживаются на высоком уровне более 10 периодов сигнала тактирования SMBus. Если устройство на шине SMBus ожидает освобождения шины, чтобы сгенерировать бит START (в ведущем режиме), то он будет сгенерирован сразу же после истечения таймаута освобождения шины.

Следует иметь ввиду, что для  обнаружения истечения таймаута освобождения шины требуется источник тактирования, даже если реализован только ведомый режим работы.

 

14.4. Использование модуля SMBus

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

• Побайтная последовательная передача данных.

• Выдача тактового сигнала на линию SCL (только в ведущем режиме) и синхронизация данных на линии SDA.

• Обнаружение таймаутов и ошибочных  состояний шины, как определено регистром конфигурации SMB0CF.

• Генерирование и обнаружение  битов START/STOP, а также управление их временными параметрами.

• Арбитраж шины.

• Генерирование прерываний.

• Информация о состоянии.

Прерывания от модуля SMBus генерируются для каждого переданного байта данных или адреса ведомого. При передаче это прерывание генерируется после цикла ACK, что позволяет программе прочитать принятое значение ACK; при приеме данных это прерывание генерируется до цикла ACK, что позволяет программе определить значение исходящего ACK. Подробная информация о работе модуля SMBus в различных режимах передачи данных приведена в разделе «14.5. Режимы работы модуля SMBus» на стр. 220.

 Прерывания также генерируются  для обозначения начала передачи  данных в ведущем режиме («передан START») или для обозначения конца передачи данных в ведомом режиме («обнаружен STOP»). Программа должна прочитать регистр SMB0CN (регистр управления модулем SMBus), чтобы определить причину прерывания. Регистр SMB0CN описан в разделе «14.4.2. Регистр управления SMB0CN» на стр. 216; таблицу 14.4 можно использовать в качестве руководства для быстрого декодирования состояний SMB0CN.

Опции настройки модуля SMBus включают:

• Обнаружение таймаута (таймаут  низкого уровня на линии SCL и/или  таймаут освобождения шины).

• Растягивание времени установления и времени удержания данных на линии SDA.

• Разрешение/запрещение ведомого режима.

• Выбор источника тактирования.

Эти опции выбираются в регистре SMB0CF, как описано в разделе  «14.4.1. Регистр конфигурации SMBus» на стр. 213.

 

14.4.1. Регистр конфигурации SMBus

Регистр конфигурации модуля SMBus (SMB0CF) используется для разрешения ведущего и/или ведомого режимов работы, для  выбора источника тактирования SMBus, а также для выбора временных  параметров и значений таймаутов SMBus.

Если бит ENSMB установлен в 1, то модуль SMBus включен и может обработать все события ведущего и ведомого режимов. Ведомый режим можно  запретить, установив в 1 бит INH.

Если ведомый режим запрещен, то модуль SMBus все равно будет отслеживать сигналы на выводах SCL и SDA; однако модуль SMBus будет выдавать NACK в ответ на все принятые адреса и не будет генерировать никакие прерывания ведомого режима.

Если бит INH устанавливается в 1, то ведомый режим будет запрещен после следующего бита START (во время текущего сеанса передачи данных прерывания ведомого режима будут генерироваться).

Таблица 14.1. Выбор источника  тактирования SMBus

Биты SMBCS1-0 выбирают источник тактирования SMBus, который используется только в  том случае, если модуль SMBus функционирует в ведущем режиме или если разрешено обнаружение таймаута освобождения шины. Если модуль SMBus работает в ведущем режиме, то переполнение выбранного источника тактирования определяет абсолютные минимальные длительности низкого и высокого уровней на линии SCL (см. уравнение 14.1). Следует иметь ввиду, что выбранный источник тактирования может использоваться и другими периферийными модулями при условии, что таймер работает постоянно. Например, переполнения Таймера 1 могут генерировать скорость передачи данных SMBus и UART одновременно. Настройка таймеров описана в разделе «21. Таймеры» на стр. 251.

 

Уравнение 14.1. Минимальная  длиельность высокого и низкого  уровней на линии SCL

THighMin = TLowMin = 1 / fClockSourceOverflow

где:

THighMin – длительность высокого уровня на линии SCL

TLowMin – длительность низкого уровня на линии SCL

fClockSourceOverflow – частота переполнения выбранного источника тактирования

Используя уравнение 14.1, следует настроить  выбранный источник тактирования таким образом, чтобы установить требуемые минимальные значения длительности высокого и низкого уровней на линии SCL.

Если модуль SMBus работает в ведущем  режиме (и никакие другие устройства на шине не изменяют и не удлиняют сигнал SCL), то типичную скорость передачи данных по шине SMBus можно приближенно определить из уравнения 14.2.

 

Уравнение 14.2. Типичная скорость передачи данных по шине SMBus

Скорость передачи данных = fClockSourceOverflow /3

На рисунке 14.4 показано типичное формирование сигнала SCL, описываемое уравнением 14.2. Следует обратить внимание на то, что обычно THIGH в два раза больше, чем TLOW. Реальный сигнал SCL может отличаться от приведенного на рисунке 14.4, т.к. другие устройства на шине могут влиять на него (более медленные устройства могут удлинять низкий уровень сигнала SCL, конкурирующие ведущие устройства могут устанавливать низкий уровень на линии SCL). При работе в ведущем режиме битовая скорость никогда не превысит значения, определяемого уравнением 14.1.

Рисунок 14.4. Формирование сигнала SCL

 

Таблица 14.2. Минимальные  значения времени установления и

времени удержания сигнала SDA

Если бит SMBTOE установлен в 1, то Таймер 3 должен быть настроен на переполнение через 25 мс для обнаружения таймаута низкого уровня на линии SCL (см. раздел «14.3.3. Таймаут низкого уровня на линии SCL» на стр. 211). Таймер 3 будет перезагружаться, когда SCL = 1, и будет считать, когда SCL = 0. Процедуру обслуживания прерывания от Таймера 3 следует использовать для сброса модуля SMBus путем его отключения и повторного включения.

Обнаружение таймаута освобождения шины SMBus можно разрешить, установив в 1 бит SMBFTE. Если SMBFTE = 1, то шина будет  считаться свободной, если линии SCL и SDA удерживаются на высоком уровне более 10 периодов сигнала тактирования SMBus (см. рисунок 14.4).

Если таймаут освобождения шины обнаружен, то модуль SMBus будет реагировать  таким же образом, как будто обнаружен  бит STOP (будет сгенерировано прерывание и будет установлен в 1 бит STO).

 

SFR-описание 14.1. SMB0CF: Регистр конфигурации модуля SMBus

SFR-адрес: 0xC1

Бит 7: ENSMB: Включение модуля SMBus.

Этот бит включает/отключает  модуль SMBus. Во включенном состоянии  модуль SMBus постоянно отслеживает  сигналы на выводах SDA и SCL.

0: Модуль SMBus отключен.

1: Модуль SMBus включен.

Бит 6: INH: Запрет ведомого режима модуля SMBus.

Если этот бит установлен в 1, то модуль SMBus не генерирует прерываний ведомого режима. Это позволяет эффективно удалить ведомый модуль SMBus с шины. Это бит не влияет на прерывания ведущего режима.

0: Ведомый режим модуля SMBus разрешен.

1: Ведомый режим модуля SMBus запрещен.

Бит 5: BUSY: Флаг занятости шины SMBus.

Этот бит аппаратно устанавливается  в 1, если идет передача данных. Этот бит  сбрасывается в 0, если обнаружен бит STOP или таймаут освобождения шины.

Бит 4: EXTHOLD: Разрешение удлинения времени  установления и времени удержания 

сигнала SDA. Этот бит управляет удлинением времени установления и времени 

удержания сигнала SDA (см. таблицу 14.2).

0: Удлиненные время установления  и время удержания сигнала SDA запрещены.

1: Удлиненные время установления  и время удержания сигнала  SDA разрешены.

Бит 3: SMBTOE: Бит разрешения функции  обнаружения таймаута низкого уровня на линии 

SCL. Этот бит разрешает обнаружение  таймаута низкого уровня на  линии SCL.

Если  этот бит установлен в 1, то Таймер 3 будет перезагружаться, когда SCL = 1, и 

будет считать, когда SCL = 0.

Если для таймера 3 выбран раздельный режим работы (T3SPLIT = 1), то только

старший байт Таймера 3 будет перезагружаться, когда SCL = 1. Таймер 3 следует

настроить таким образом, чтобы  он генерировал прерывание через 25 мс. Процедура обслуживания прерывания от Таймера 3 должна сбрасывать модуль SMBus.

Бит 2: SMBFTE: Бит разрешения функции  обнаружения таймаута освобождения шины

SMBus.

Если этот бит установлен в 1, то шина будет считаться свободной, если линии SCL и 

SDA удерживаются на высоком уровне  более 10 периодов сигнала тактирования 

SMBus.

Биты 1-0: SMBCS1-SMBCS0: Выбор источника  тактирования SMBus.

Эти два бита выбирают источник тактирования SMBus, который определяет скорость передачи данных SMBus. Выбранный источник тактирования должен быть настроен в соответствии с уравнением 14.1.

 

14.4.2. Регистр управления SMB0CN

Регистр управления SMB0CN используется для управления модулем SMBus и для предоставления информации о его состоянии (см. SFR-описание 14.2). Старшие четыре бита регистра SMB0CN (MASTER, TXMODE, STA и STO) образуют вектор состояния, который может использоваться для перехода на процедуру обслуживания прерывания. Биты MASTER и TXMODE показывают состояние (ведущий/ведомый) и режим (передача/прием) соответственно. Биты STA и STO показывают, что с момента последнего прерывания от модуля SMBus обнаружен или сгенерирован бит START и/или STOP. Кроме этого, при работе в ведущем режиме биты STA и STO используются для генерации битов START и STOP. Установка бита STA в 1 заставит модуль SMBus перейти в ведущий режим и сгенерировать бит START, когда шина освободится (бит STA не сбрасывается аппаратно после генерации бита START). Установка бита STO в 1 в ведущем режиме заставит модуль SMBus0 сгенерировать бит STOP и завершить текущий сеанс передачи данных после следующего цикла ACK.

Если оба бита STA и STO установлены  в 1 (в ведущем режиме), то будут  сгенерированы сначала бит STOP, а затем бит START. В режиме приемника запись в бит ACK определяет значение исходящего ACK; в режиме передатчика чтение бита ACK показывает значение, полученное в последнем цикле ACK. Бит ACKRQ устанавливается в 1 каждый раз при получении байта и показывает, что требуется значение исходящего ACK.

Если ACKRQ = 1, то программа должна записать требуемое исходящее значение в  бит ACK до сброса бита SI. NACK будет сгенерирован в том случае, если программа не запишет бит ACK до сброса бита SI. Сигнал SDA отразит заданное значение ACK сразу же после записи бита ACK; однако SCL будет оставаться на низком уровне до тех пор, пока не будет сброшен бит SI.

Если полученный адрес ведомого не подтверждается, то дальнейшие обращения  к ведомому со стороны шины будут  игнорироваться до обнаружения следующего бита START. Бит ARBLOST показывает, что модуль SMBus потерял арбитраж. Это может произойти в любое время, когда модуль SMBus (ведущий или ведомый) передает данные. Потеря арбитража при работе в режиме ведомого означает ошибку состояния шины. Бит ARBLOST сбрасывается аппаратно каждый раз при сбросе бита SI.

Бит SI (флаг прерывания от модуля SMBus) устанавливается в 1 в начале и  в конце каждой передачи, после  каждого сообщения (байта), или при  потере арбитража; подробная информация приведена в таблице 14.3.

Важное примечание относительно бита SI: Модуль SMBus останавливается, когда SI = 1; поэтому SCL удерживается на низком уровне и обмен по шине останавливается до программного сброса бита SI.

В таблице 14.3 перечислены все источники, вызывающие аппаратное изменение битов регистра SMB0CN. Таблица 14.4 позволяет декодировать состояние модуля SMBus, используя регистр SMB0CN.

 

SFR-описание 14.2. SMB0CN: Регистр  управления модуля SMBus

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

Бит 7: MASTER: Флаг состояния ведущий/ведомый  модуля SMBus. Этот доступный только

для чтения бит показывает, работает ли модуль SMBus в ведущем режиме.

0: Модуль SMBus работает в ведомом  режиме.

1: Модуль SMBus работает в ведущем  режиме.

Бит 6: TXMODE: Флаг режима передачи модуля SMBus. Этот доступный только для чтения

бит показывает, работает ли модуль SMBus в режиме передатчика.

0: Модуль SMBus работает в режиме  приемника

1: Модуль SMBus работает в режиме  передатчика.

Бит 5: STA: Флаг запуска модуля SMBus.

Запись:

0: START не генерируется.

1: При работе в режиме ведущего  передается бит START, если шина  свободна (если 

шина не свободна, то бит START будет  передан после приема бита STOP или 

после обнаружения таймаута освобождения шины). Если бит STA устанавливается в тот момент, когда модуль SMBus передает/принимает данные (т.е. активен) в ведущем режиме, то после следующего цикла ACK будет сгенерирован бит «повторный START».

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