F20-23 (1041603), страница 37
Текст из файла (страница 37)
1 (выход с открытым стоком, если соответствующийбит регистра P74OUT сброшен в 0). См. рис.17.20.(Чтение – возвращает состояние внешних выводов).0: На выводе P7.n низкий логический уровень.1: На выводе P7.n высокий логический уровень.Примечание: P7.[7:0] могут управляться интерфейсом внешней памяти данных(как AD[7:0] вмультиплексированном режиме, или как D[7:0] в немультиплексированном режиме).Подробная информация относительно интерфейса внешней памяти приведена в разделе 16.181Ред. 1.4C8051F020/1/2/3ПРИМЕЧАНИЯРед. 1.4182C8051F020/1/2/318.
Модуль SMBus / I2C (SMBUS0)Интерфейс ввода/вывода SMBus0 представляет собой двухпроводную двунаправленнуюпоследовательную шину. SMBus0 соответствует System Management Bus Specification (версия 1.1) иподдерживает обмен данными по протоколу I2C. Системный контроллер считывает данные с последовательнойшины и записывает их в последовательную шину побайтно с помощью модуля SMBus, который автоматическиуправляет последовательной передачей данных. Максимальная скорость передачи данных составляет 1/8-юсистемной тактовой частоты (эта скорость может превышать скорость, определенную в спецификации SMBus,в зависимости от используемой тактовой частоты).
Для обеспечения возможности работы устройств сразличной скоростью передачи данных на одной шине используется метод растягивания синхросигнала за счетудержания низкого уровня.SMBus0 может работать как ведущий и/или ведомый, а также может функционировать на шине снесколькими ведущими. SMBus0 обеспечивает управление линией SDA (последовательные данные), генерациютактовых импульсов SCL и синхронизацию, арбитраж, управление битами START/STOP и их генерацию.Управление SMBus0 осуществляется с помощью SFR регистров, описанных в разделе 18.4.Рисунок 18.1. Структурная схема модуля SMBus0SFR шина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ФИЛЬТРABA0000000b7 MSBs87SMB0DAT7 6 5 4 3 2 1 08SLV6SLV5SLV4SLV3SLV2SLV181SLV G0 CN0ЧтениеSMB0DATSMB0ADRЗапись вSMB0DATSFR шина183SDAФИЛЬТРРед.
1.4Портввода/выводаC8051F020/1/2/3На рис.18.2 приведена типичная схема подключения к шине SMBus. Интерфейс SMBus0 способенработать при любом напряжении от 3.0 до 5.0В, а различные устройства на шине могут иметь различныенапряжения питания. Линии SCL (тактовые импульсы) и SDA (последовательные данные) являютсядвунаправленными. Необходимо подать на них положительное напряжение питания через подтягивающийрезистор или подобную схему. Каждое устройство, подключенное к шине, должно иметь выход с открытымстоком или с открытым коллектором как для линии SCL, так и для линии SDA, тогда при свободной шине обелинии будут «подтянуты» к напряжению высокого логического уровня. Максимальное количество устройств нашине ограничивается только следующим требованием: время нарастания и спада сигнала на линиях шины недолжно превышать 300нс и 1000нс соответственно.Рисунок 18.2.
Подключение к шине SMBusVDD = 5ВVDD = 3ВVDD = 5ВVDD = 3ВВедущееустройствоВедомоеустройство 1Ведомоеустройство 2SDASCL18.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.Ред. 1.4184C8051F020/1/2/318.2. Протокол SMBusВозможны два режима передачи данных: передача данных от ведущего передатчика к адресуемомуведомому приемнику (ЗАПИСЬ) и передача данных от адресуемого ведомого передатчика к ведущемуприемнику (ЧТЕНИЕ). Ведущее устройство инициирует процесс передачи данных в обоих режимах игенерирует тактовый сигнал на линии SCL.
Допускается также работа нескольких ведущих устройств на однойшине. Если два или более ведущих пытаются инициировать процесс передачи данных одновременно, топрименяемая схема арбитража всегда определит одного ведущего, который выиграет арбитраж и захватитуправление шиной. Следует иметь ввиду, что нет необходимости определять какое-либо устройство какведущее в системе; любое устройство, которое передает, бит START и адрес ведомого, становится ведущим дляэтого сеанса связи.Типичное сообщение SMBus состоит из бита START, следующего за ним байта адреса (биты 7-1: 7разрядный адрес ведомого; бит 0: бит направления передачи R/W), одного или нескольких байт данных и битаSTOP.
Каждый принятый (ведущим или ведомым) байт должен быть подтвержден (ACK) низким уровнемсигнала на линии SDA во время высокого уровня сигнала на линии SCL (см. рис.18.3). Если принимающееустройство не подтверждает прием, то передающее устройство воспримет этот факт как бит «нетподтверждения» (NACK), который представляет собой высокий уровень сигнала на линии SDA во времявысокого уровня сигнала на линии SCL.Бит направления занимает самый младший значащий разряд адреса. Бит направления устанавливаетсяв 1 для выполнения операции чтения и сбрасывается в 0 для выполнения операции записи.Все сеансы обмена данными инициируются ведущим, который адресует одно или несколько ведомыхустройств.
Ведущий генерирует бит START и затем передает адрес ведомого и бит направления. Еслиинициируется операция записи от ведущего к ведомому, то ведущий передает по одному байту данных за раз,ожидая бита подтверждения (ACK) от ведомого в конце каждого байта. Если осуществляется операция чтения,то ведомый передает данные, ожидая бита подтверждения (ACK) от ведущего в конце каждого байта. В концесеанса передачи данных ведущий генерирует бит STOP, чтобы завершить сеанс и освободить шину. На рис.18.3показан формат типичного сообщения SMBus.Рисунок 18.3.
Формат сообщения SMBusSCLSDASLA6STARTSLA5-0Адрес ведомого + R/WR/WD7ACKD6-0Байт данныхNACKSTOP18.2.1. АрбитражВедущий может начать сеанс передачи, только если шина свободна. Шина является свободной послебита STOP или после того, как на линиях SCL и SDA в течение определенного времени удерживается высокийуровень сигнала.
В случае, когда два или более ведущих устройства пытаются начать передачу данныходновременно, используется схема арбитража, которая заставит какое-либо ведущее устройство освободитьшину. Ведущие устройства продолжают передавать до тех пор, пока один из ведущих не попытается передатьна линию SDA сигнал высокого уровня, в то время как другие ведущие выдают на эту линию сигнал низкогоуровня.
Ведущее устройство, пытающееся передать на линию SDA сигнал высокого уровня, определит, чтовместо сигнала высокого уровня на линии SDA присутствует сигнал низкого уровня, и освободит шину.Выигравший арбитраж ведущий продолжает передавать свои данные без какого-либо перерыва; потерявшийарбитраж ведущий становится ведомым и принимает остаток передаваемых данных.
Данная схема арбитражаявляется не разрушающей: какое-нибудь одно устройство всегда выигрывает и никакие данные не теряются.18.2.2. Растягивание тактового сигналаМодуль SMBus обеспечивает механизм тактовой синхронизации, аналогичный I2C, который позволяетустройствам с различной скоростью передачи данных сосуществовать на одной шине. Чтобы позволитьмедленным ведомым устройствам обмениваться данными с быстрыми ведущими, применяется растягиваниетактовых импульсов на участке с низким уровнем сигнала. Ведомый может временно удерживать линию SCL185Ред.
1.4C8051F020/1/2/3на низком уровне, тем самым удлиняя период тактового сигнала (за счет удлинения участка с низким уровнем)и уменьшая таким образом частоту тактирования шины.18.2.3. Таймаут низкого уровня на линии SCLЕсли линия SCL удерживается на низком уровне ведомым устройством, то дальнейший обмен даннымипо шине невозможен. Кроме того, ведущий не может установить на линии SCL высокий уровень, чтобыисправить бит ошибки. Чтобы решить эту проблему, протокол SMBus определяет, что устройства,участвующие в обмене, должны распознавать как условие «таймаута» любой тактовый цикл, в котором сигналудерживается на низком уровне более 25мс. Устройства, которые обнаружили такое условие таймаута, должныв течение 10мс после этого сбросить свои модули обмена.18.2.4.