F18-19 (1041602), страница 22
Текст из файла (страница 22)
1.2Мин.VDD –0.1VDD –0.7Тип.Макс.Ед. изм.В0.10.6ВVDD –0.81.0В0.7 xVDD0.3 xVDDВмкА±1305пФC8051F018C8051F01914. Модуль SMBus / I2CИнтерфейс последовательного ввода/вывода SMBus соответствует System Management Bus Specification(версия 1.1). Это двух проводная двунаправленная последовательная шина, которая также поддерживает обменданными по протоколу I2C. Системный контроллер считывает данные с последовательной шины и записываетих в последовательную шину побайтно с помощью модуля SMBus, который автоматически управляетпоследовательной передачей данных. Максимальная скорость передачи данных составляет 1/8-ю системнойтактовой частоты (эта скорость может превышать скорость, определенную в спецификации SMBus, взависимости от используемой тактовой частоты). Для обеспечения возможности работы устройств с различнойскоростью передачи данных на одной шине используется метод растягивания синхросигнала за счет удержаниянизкого уровня.Возможны два режима передачи данных: передача данных от ведущего передатчика к адресуемомуведомому приемнику и передача данных от адресуемого ведомого передатчика к ведущему приемнику.Ведущее устройство инициирует процесс передачи данных в обоих режимах и генерирует тактовый сигнал.Модуль SMBus может функционировать как ведущий или как ведомый.
Допускается также работа несколькихведущих устройств на одной шине. Если два или более ведущих пытаются инициировать процесс передачиданных одновременно, то применяемая схема арбитража всегда определит одного ведущего, который выиграетарбитраж и захватит управление шиной.Рисунок 14.1. Структурная схема модуля SMBusSFR шинаSMB0CNBUSYSMB0STAE S S S A F TN T T I A T OS A OE EMBSTA7STA6STA5STA4STA3STA2SMB0CRSTA1STA0C C C C C C C CR R R R R R R R7 6 5 4 3 2 1 0Логика делителятактовой частотыSYSCLKУправляющая логика модуля SMBUSАрбитражУправлениеСинхронизация по сигналу SCLГенерирование сигналов состоянияSCLГенерирование тактового сигнала SCL (в режиме ведущего)Генерирование прерыванийУправлениеУправлениетрактом данныхSDABNA=BA=BЗапроспрерыванияМАТРИЦАПрерываниеот модуляSMBUSSCLФИЛЬТРABПортввода/выводаA0000000b7 MSBs87SMB0DAT7 6 5 4 3 2 1 08SLV6SLV5SLV4SLV3SLV2SLV18SDAФИЛЬТР1SLV G0 CN0ЧтениеSMB0DATSMB0ADRЗапись вSMB0DATSFR шинаРед.
1.296C8051F018C8051F019На рис.14.2 приведена типичная схема подключения к шине SMBus. SMBus интерфейс способенработать при любом напряжении от 3.0 до 5.0В, а различные устройства на шине могут иметь различныенапряжения питания. Линии SCL (тактовые импульсы) и SDA (последовательные данные) являютсядвунаправленными.
Необходимо подать на них положительное напряжение питания через подтягивающийрезистор или подобную схему. Когда шина свободна, обе линии «подтянуты» к напряжению высокогологического уровня. Каждое устройство, подключенное к шине, должно иметь выход с открытым стоком или соткрытым коллектором как для линии SCL, так и для линии SDA. Максимальное количество устройств на шинеограничивается только следующим требованием: время нарастания и спада сигнала на линиях шины не должнопревышать 300нс и 1000нс соответственно.Рисунок 14.2. Подключение к шине SMBusVDD = 5ВVDD = 3ВVDD = 5ВVDD = 3ВВедущееустройствоВедомоеустройство 1Ведомоеустройство 2SDASCL14.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.97Ред. 1.2C8051F018C8051F01914.2. Режимы работыТипичное сообщение SMBus состоит из бита START, байта адреса, одного или нескольких байт данныхи бита STOP. За байтом адреса, а также за каждым байтом данных следует бит подтверждения (ACK) отприемника. Байт адреса состоит из 7-разрядного адреса и бита направления передачи (R/W).
Бит направлениязанимает самый младший значащий разряд адреса. Бит направления устанавливается в 1 для выполненияоперации чтения и сбрасывается в 0 для выполнения операции записи. Адрес общего вызова (0x00 +R/W)распознается всеми ведомыми устройствами, разрешая ведущему адресовать несколько ведомых устройстводновременно.Все сеансы обмена данными инициируются ведущим, который адресует одно или несколько ведомыхустройств. Ведущий генерирует бит START и затем передает адрес и бит направления.
Если инициируетсяоперация записи от ведущего к ведомому, то ведущий передает по одному байту данных за раз, ожидая битаподтверждения (ACK) от ведомого в конце каждого байта. Если осуществляется операция чтения, то ведомыйпередает данные, ожидая бита подтверждения (ACK) от ведущего в конце каждого байта. В конце сеансапередачи данных ведущий генерирует бит STOP, чтобы завершить сеанс и освободить шину. На рис.14.3показан формат типичного сообщения SMBus.Рисунок 14.3. Формат сообщения SMBusSTARTSLAVE ADDRR/WACKDATAACKDATANACKSTOPВремяМодуль SMBus может быть настроен для работы как в режиме ведущего, так и в режиме ведомого. В любойконкретный момент времени он может работать в одном из четырех режимов:14.2.1.
Режим ведущего передатчикаПоследовательные данные выдаются на линию SDA, а тактовые импульсы выдаются на линию SCL.Первый передаваемый байт содержит адрес целевого ведомого устройства и бит направления. В этом случаебит направления (R/W) должен быть сброшен в 0, инициируя операцию записи. Затем ведущий передает одинили несколько байт последовательных данных. После передачи каждого байта ведомое устройство генерируетбит подтверждения. Для обозначения начала и конца сеанса передачи данных ведущее устройство генерируетбиты START и STOP.14.2.2.
Режим ведущего приемникаПоследовательные данные принимаются с линии SDA, а тактовые импульсы выдаются на линию SCL.Первый байт передается ведущим и содержит адрес целевого ведомого и бит направления. В этом случае битнаправления (R/W) должен быть установлен в 1, инициируя операцию чтения. Затем последовательные данныепринимаются от ведомого по линии SDA, при этом ведущий генерирует тактовые импульсы. Ведомый передаетодин или несколько байт последовательных данных.
После приема каждого байта ведущий генерирует битподтверждения. Для обозначения начала и конца сеанса передачи данных ведущий генерирует биты START иSTOP.14.2.3. Режим ведомого передатчикаПоследовательные данные выдаются на линию SDA, а тактовые импульсы принимаются с линии SCL.Сначала принимается байт, который содержит адрес и бит направления. В этом случае бит направления (R/W)должен быть установлен в 1, инициируя операцию чтения.
Если принятый адрес соответствует адресу ведомого(или принят адрес общего вызова), ведомый передает ведущему один или несколько байт последовательныхданных. После приема каждого байта ведущий генерирует бит подтверждения. Для обозначения начала и концасеанса передачи данных ведущий генерирует биты START и STOP.Ред. 1.298C8051F018C8051F01914.2.4. Режим ведомого приемника.Последовательные данные принимаются с линии SDA, а тактовые импульсы принимаются с линииSCL. Сначала принимается байт, который содержит адрес и бит направления. В этом случае бит направления(R/W) должен быть сброшен в 0, инициируя операцию записи.
Если принятый адрес соответствует адресуведомого (или принят адрес общего вызова), один или несколько байт последовательных данных принимаютсяведомым от ведущего. После приема каждого байта ведомый генерирует бит подтверждения. Для обозначенияначала и конца сеанса передачи данных ведущий генерирует биты START и STOP.14.3. АрбитражВедущий может начать сеанс передачи, только если шина свободна.
Шина является свободной послебита STOP или после того, как на линиях SCL и SDA в течение определенного времени удерживается высокийуровень сигнала. Два или более ведущих устройства могут попытаться сгенерировать бит STARTодновременно. Т.к. устройства, генерирующие бит START, не могут быть уверены в том, что другие ведущиене пытаются в это время захватить управление шиной, используется схема арбитража. Ведущие устройствапродолжают передавать до тех пор, пока один из ведущих не передаст на линию SDA сигнал высокого уровня,в то время как другой ведущий выдает на эту линию сигнал низкого уровня.
Первый ведущий, передающий налинию SDA сигнал высокого уровня, теряет арбитраж и должен освободить шину.14.4. Растягивание тактового сигналаМодуль SMBus обеспечивает механизм тактовой синхронизации, аналогичный I2C, который позволяетустройствам с различной скоростью передачи данных сосуществовать на одной шине. Чтобы позволитьмедленным ведомым устройствам обмениваться данными с быстрыми ведущими, применяется растягиваниетактовых импульсов на участке с низким уровнем сигнала.
Ведомый может удерживать линию SCL на низкомуровне, тем самым удлиняя период тактового сигнала (за счет удлинения участка с низким уровнем) иуменьшая таким образом частоту тактирования шины.14.5. Таймауты14.5.1. Таймаут низкого уровня на линии SCLЕсли линия SCL удерживается на низком уровне ведомым устройством, то дальнейший обмен даннымипо шине невозможен. Кроме того, ведущий не может установить на линии SCL высокий уровень, чтобыисправить бит ошибки. Чтобы решить эту проблему, протокол SMBus определяет, что устройства,участвующие в обмене, должны распознавать как условие «таймаута» любой тактовый цикл, в котором сигналудерживается на низком уровне более 25мс.
Устройства, которые обнаружили такое условие таймаута, должныв течение 10мс после этого сбросить модули обмена.Один из таймеров общего назначения микроконтроллера, работающий в 16-разрядном режиме сперезагрузкой, может использоваться для отслеживания таймаута низкого уровня на линии SCL. Таймер 3спроектирован специально для этой цели. (Подробная информация о функционировании Таймера 3 приведена вразделе 17.3).14.5.2. Таймаут высокого уровня на линии SCL (шина SMBus свободна)Спецификация SMBus оговаривает, что если устройство удерживает линии SCL и SDA на высокомуровне более 50 мкс, то шина считается свободной. Для обнаружения этого условия используется регистрSMB0CR (когда бит FTE в регистре SMB0CN установлен в 1).14.6.