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

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

На рис.20.2 приведена типичная схема подключения к шине SMBus. Интерфейс SMBus0 способен работать при любом напряжении от 3.0 до 5.0В, а различные устройства на шине могут иметь различные напряжения питания. Линии SCL (тактовые импульсы) и SDA (последовательные данные) являются двунаправленными. Необходимо подать на них положительное напряжение питания через подтягивающий резистор или подобную схему. Каждое устройство, подключенное к шине, должно иметь выход с открытым стоком или с открытым коллектором как для линии SCL, так и для линии SDA; тогда при свободной шине обе линии будут «подтянуты» к напряжению высокого логического уровня. Максимальное количество устройств на шине ограничивается только следующим требованием: время нарастания и спада сигнала на линиях шины не должно превышать 300нс и 1000нс соответственно.

Рисунок 20.2. Подключение к шине SMBus

VDD = 5В

VDD = 3В

 

VDD = 5В

 

VDD = 3В

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ведущее

 

Ведомое

 

Ведомое

 

 

устройство

 

устройство 1

 

устройство 2

 

 

 

 

 

 

 

 

 

 

SDA

SCL

20.1. Техническая документация

Предполагается, что читатель знаком со следующими техническими документами или имеет доступ к ним:

1.The I2C-bus and how to use it (including specifications), Philips Semiconductor.

2.The I2C-Bus Specification -- Version 2.0, Philips Semiconductor.

3.System Management Bus Specification -- Version 1.1, SBS Implementers Forum.

20.2. Протокол SMBus

Возможны два режима передачи данных: передача данных от ведущего передатчика к адресуемому ведомому приемнику (ЗАПИСЬ) и передача данных от адресуемого ведомого передатчика к ведущему приемнику (ЧТЕНИЕ). Ведущее устройство инициирует процесс передачи данных в обоих режимах и генерирует тактовый сигнал на линии SCL. Допускается также работа нескольких ведущих устройств на одной шине. Если два или более ведущих пытаются инициировать процесс передачи данных одновременно, то применяемая схема арбитража всегда определит одного ведущего, который выиграет арбитраж и захватит управление шиной. Следует иметь ввиду, что нет необходимости определять какое-либо устройство как ведущее в системе; любое устройство, которое передает бит START и адрес ведомого, становится ведущим для этого сеанса связи.

Типичное сообщение SMBus состоит из бита START, следующего за ним байта адреса (биты 7-1: 7- разрядный адрес ведомого; бит 0: бит направления передачи R/W), одного или нескольких байт данных и бита STOP. Каждый принятый (ведущим или ведомым) байт должен быть подтвержден (ACK) низким уровнем сигнала на линии SDA во время высокого уровня сигнала на линии SCL (см. рис.20.3). Если принимающее устройство не подтверждает прием, то передающее устройство воспримет этот факт как бит «нет подтверждения» (NACK), который представляет собой высокий уровень сигнала на линии SDA во время высокого уровня сигнала на линии SCL.

Бит направления занимает самый младший значащий разряд адреса. Бит направления устанавливается в 1 для выполнения операции чтения и сбрасывается в 0 для выполнения операции записи.

Ред. 1.2

236

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

Все сеансы обмена данными инициируются ведущим, который адресует одно или несколько ведомых устройств. Ведущий генерирует бит START и затем передает адрес ведомого и бит направления. Если инициируется операция записи от ведущего к ведомому, то ведущий передает по одному байту данных за раз, ожидая бита подтверждения (ACK) от ведомого в конце каждого байта. Если осуществляется операция чтения, то ведомый передает данные, ожидая бита подтверждения (ACK) от ведущего в конце каждого байта. В конце сеанса передачи данных ведущий генерирует бит STOP, чтобы завершить сеанс и освободить шину. На рис.20.3 показан формат типичного сообщения SMBus.

Рисунок 20.3. Формат сообщения SMBus

SCL

SDA

SLA6

SLA5-0

R/W

 

D7

D6-0

 

 

START

Адрес ведомого + R/W

 

ACK

Байт данных

NACK

STOP

20.2.1. Арбитраж

Ведущий может начать сеанс передачи, только если шина свободна. Шина является свободной после бита STOP или после того, как на линиях SCL и SDA в течение определенного времени удерживается высокий уровень сигнала (см. раздел 20.2.4). В случае, когда два или более ведущих устройства пытаются начать передачу данных одновременно, используется схема арбитража, которая заставит какое-либо ведущее устройство освободить шину. Ведущие устройства продолжают передавать до тех пор, пока один из ведущих не попытается передать на линию SDA сигнал высокого уровня, в то время как другие ведущие выдают на эту линию сигнал низкого уровня. Ведущее устройство, пытающееся передать на линию SDA сигнал высокого уровня, определит, что вместо сигнала высокого уровня на линии SDA присутствует сигнал низкого уровня, и освободит шину. Выигравший арбитраж ведущий продолжает передавать свои данные без какого-либо перерыва; потерявший арбитраж ведущий становится ведомым и принимает остаток передаваемых данных. Данная схема арбитража является не разрушающей: какое-нибудь одно устройство всегда выигрывает и никакие данные не теряются.

20.2.2. Растягивание тактового сигнала

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

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

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

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

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

237

Ред. 1.2