F00-17 (1041601), страница 28
Текст из файла (страница 28)
Сброс в 0 флага АА приведет кпередаче бита «нет подтверждения» NACK (высокий уровень сигнала на линии SDA) во время тактовогоимпульса подтверждения на линии SCL. После передачи байта в режиме ведомого ведомое устройство можновременно удалить с шины путем сброса в 0 флага АА. Собственный адрес ведомого и адрес общего вызовабудут игнорироваться. Для восстановления работы на шине необходимо установить в 1 флаг АА, чтобыразрешить ведомому распознавать свой адрес.Установка в 1 бита разрешения таймера освобождения шины SMBus (FTE, SMB0CN.1) включитфункцию таймаута освобождения шины SMBus. Если на линиях SDA и SCL удерживается высокий уровеньсигнала в течение таймаута освобождения шины SMBus, заданного в регистре установки тактовой частоты(см.
рис.16.5), то шина будет считаться свободной и будет сгенерирован (при необходимости) бит START.Период освобождения шины должен быть не менее 50мкс.Установка в 1 бита разрешения таймаута SMBus (TOE, SMB0CN.0) заставит Таймер 3 начать отсчет,если на линии SCL присутствует низкий уровень и Таймер 3 включен. Если Таймер 3 переполнится, будетсгенерировано прерывание от Таймера 3, которое предупредит процессорное ядро о том, что истек таймаутнизкого уровня на линии SCL шины SMBus.Page 116CYGNAL Integrated Products, Inc.
20024.2002; Rev. 1.4C8051F000/1/2/5/6/7C8051F010/1/2/5/6/7Рисунок 16.4. SMB0CN: Регистр управления модуля SMBusRR/WR/WR/WR/WR/WR/WR/WBUSYENSMBSTASTOSIAAFTETOEБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 7Бит 0(доступен в битовомрежиме адресации)Значениепри сбросе:00000000SFR Адрес:Бит 7: BUSY: Флаг занятости шины SMBus.0xC00: Шина SMBus свободна1: Шина SMBus занятаБит 6: ENSMB: Включение модуля SMBus.Этот бит включает/отключает последовательный интерфейс SMBus0: SMBus отключен.1: SMBus включен.Бит 5: STA: Флаг запуска модуля SMBus.0: Бит START не передается.1: При работе в режиме ведущего бит START передается, если шина свободна. (Если шина несвободна, то бит START передается после приема бита STOP.) Если бит STA устанавливаетсяпосле передачи или приема одного или нескольких байт и до приема бита STOP, то передаетсябит «повторный START». Бит STO следует явно сбросить до установки в 1 бита STA.Бит 4: STO: Флаг окончания передачи модуля SMBus.0: Бит STOP не передается.1: Установка в 1 бита STO приведет к передачи бита STOP.
При приеме бита STOPфлаг STO аппаратно сбрасывается в 0. Если оба флага STA и STO установлены в 1, то вслед забитом STOP передается бит START. В режиме ведомого установка флага STO заставит модульSMBus вести себя так, как будто получен бит STOP.Бит 3: SI: Флаг прерывания от последовательного порта SMBus.Этот бит устанавливается аппаратно при переходе модуля SMBus к одному из 27 возможныхсостояний.
(Состояние с кодом 0xF8 не вызывает установку бита SI.) Если прерывание от SIразрешено, то установка этого бита приведет к переходу на процедуру обслуживания прерыванияот модуля SMBus. Этот бит автоматически аппаратно не сбрасывается и должен быть сброшенпрограммно.Бит 2: AA: Флаг назначения подтверждения .Этот бит определяет тип бита подтверждения, передаваемого во время тактового циклаподтверждения на линии SCL.0: Во время тактового цикла подтверждения передается бит «нет подтверждения» (высокийуровень сигнала на линии SDA).1: Во время тактового цикла подтверждения передается бит «подтверждение» (низкийуровень сигнала на линии SDA).Бит 1: FTE: Бит разрешения таймера освобождения шины SMBus0: Не используется таймаут высокого уровня на линии SCL1: Если время удержания высокого уровня на линии SCL превышает предел, определяемыйзначением регистра SMB0CR, то происходит условие таймаута.Бит 0: TOE: Бит разрешения таймаута SMBus0: Не используется таймаут низкого уровня на линии SCL.1: Если время удержания низкого уровня на линии SCL превышает предел, определяемыйТаймером 3 (если он включен), то происходит условие таймаута.4.2002; Rev.
1.4CYGNAL Integrated Products, Inc. 2002Page 117C8051F000/1/2/5/6/7C8051F010/1/2/5/6/716.6.2. Регистр установки тактовой частоты модуля SMBusРисунок 16.5. SMB0CR: Регистр установки тактовой частоты модуля SMBusR/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 000000000SFR Адрес:0xCFБиты 7-0: SMB0CR.[7:0]: Установка тактовой частоты модуля SMBusРегистр установки тактовой частоты SMB0CR управляет частотой тактовых импульсов,выдаваемых на линию SCL в режиме ведущего.
8-разрядное слово, сохраненное в регистре SMB0CR,загружается в специальный 8-разрядный таймер. Этот таймер считает в прямом направлении и когдаон переполнится, состояние сигнала на линии SCL изменится на противоположное. Период тактовыхимпульсов на линии SCL определяется следующим уравнением:TH = TL = TSYSCLK * [(256 – SMB0CR) + 2.5] ≥ 5мксЗначение регистра SMB0CR определяет также таймаут освобождения шины в соответствиисо следующим уравнением:TBFT = TSYSCLK * [10*(256 – SMB0CR) + 1] ≥ 50мксЛюбое значение от 0x00 до 0xFE можно использовать для загрузки в регистр установкитактовой частоты модуля SMBus.
Значение 0xFF использовать нельзя.Page 118CYGNAL Integrated Products, Inc. 20024.2002; Rev. 1.4C8051F000/1/2/5/6/7C8051F010/1/2/5/6/716.6.3. Регистр данныхРегистр данных модуля SMBus SMB0DAT содержит байт последовательных данных, которыйнеобходимо передать, или байт последовательных данных, который только что принят. Данные остаютсянеизменными в этом регистре, пока бит SI установлен в 1.
Программа может безопасно прочитать изрегистра или записать в регистр данные, когда флаг SI установлен в 1. Программа не должна пытатьсяобратиться к регистру SMB0DAT, когда модуль SMBus включен и флаг SI сброшен в 0, т.к. в этотмомент может осуществляться аппаратный сдвиг байта в регистр или из регистра.Данные всегда сдвигаются старшими разрядами вперед.
После приема байта первый битпринятых данных занимает старший разряд регистра SMB0DAT. Когда данные выдвигаются из регистра,они одновременно появляются на шине. Поэтому регистр SMB0DAT всегда содержит последний байтданных, присутствующий в настоящий момент на шине. Таким образом, в случае потери арбитражапереход от ведущего передатчика к ведомому приемнику осуществляется с корректными данными врегистре SMB0DAT.Рисунок 16.6. SMB0DAT: Регистр данных модуля SMBusR/WR/WR/WR/WR/WR/WR/WR/WЗначениепри сбросе:Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 000000000SFR Адрес:0xC2Биты 7-0: SMB0DAT: Данные модуля SMBus.Регистр SMB0DAT содержит байт данных, которые должны передаватьсяпоследовательному интерфейсу SMBus, или данные, только что принятые от последовательногоинтерфейса SMBus.
Читать из этого регистра или записывать в этот регистр можно всякий раз, когдафлаг прерывания от последовательного порта SI (SMB0CN.3) установлен в 1. Последовательныеданные остаются неизменными в этом регистре, пока бит SI установлен в 1. Когда флаг SI неустановлен в 1, система может находится в процессе сдвига данных в регистр (или из регистра)SMB0DAT и обращаться к этому регистру нельзя.16.6.4. Регистр адресаРегистр адреса SMB0ADR содержит адрес ведомого для интерфейса SMBus.
В ведомом режимесемь старших значащих битов образуют 7-битный адрес ведомого. Младший значащий бит, бит 0,используется для разрешения распознавания адреса общего вызова (0х00). Если бит 0 установлен в 1,адрес общего вызова будет распознаваться. В противном случае, адрес общего вызова будетигнорироваться. Содержимое этого регистра игнорируется, если модуль SMBus работает в ведущемрежиме.Рисунок 16.7. SMB0ADR: Регистр адреса модуля SMBusR/WR/WR/WR/WR/WR/WR/WR/WSLV6SLV5SLV4SLV3SLV2SLV1SLV0GCБит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес:0xC3Биты 7-1: SLV6-SLV0: Адрес ведомого SMBusЭти биты загружаются 7-разрядным адресом ведомого, на который будет отвечать модульSMBus при работе в качестве ведомого передатчика или ведомого приемника.
SLV6 являетсястаршим значащим битом адреса и соответствует первому биту адресного байта,полученного по шине SMBus.Бит 0:GC: Разрешение адреса общего вызова.Этот бит используется для разрешения распознавания адреса общего вызова (0х00).0: Адрес общего вызова игнорируется.1: Адрес общего вызова распознается.4.2002; Rev. 1.4CYGNAL Integrated Products, Inc. 2002Page 119C8051F000/1/2/5/6/7C8051F010/1/2/5/6/716.6.5. Регистр состоянияРегистр состояния SMB0STA содержит 8-битный код состояния, показывающий текущеесостояние модуля SMBus.
Существует 28 возможных состояний модуля SMBus, каждому из которыхсоответствует уникальный код состояния. Пять старших значащих битов кода состояния различаются, атри младших значащих бита для корректных кодов состояния всегда равны нулю, когда SI = 1. Поэтомувсе возможные коды состояния кратны восьми.
Это позволяет применять в программе код состояния вкачестве индекса, используемого для перехода на соответствующую процедуру обслуживания (используя8 байт кода для обслуживания состояния или для перехода на более сложную процедуру обслуживания).Для нужд программы пользователя содержимое регистра SMB0STA определено только тогда,когда флаг SI установлен в 1. Программа никогда не должна записывать данные в регистр SMB0STA.
Этоприведет к неопределенному результату. В табл.16.1 приведены все 28 состояний модуля SMBus вместе ссоответствующими им кодами.Рисунок 16.8. SMB0STA: Регистр состояния модуля SMBusR/WR/WR/WR/WR/WR/WR/WR/WSTA7STA6STA5STA4STA3STA2STA1STA0Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:11111000SFR Адрес:0xC1Биты 7-3: STA7-STA3: Код состояния модуля SMBus.Эти биты содержат код состояния модуля SMBus. Существует 28 возможных кодовсостояния. Каждый код состояния соответствует единственному состоянию модуля SMBus.Корректный код состояния присутствует в регистре SMB0STA, когда флаг SI (SMB0CN.3)установлен в 1. Содержимое регистра SMB0STA не определено, когда флаг SI равен нулю.Запись в регистр SMB0STA в любое время даст неопределенный результат.Биты 2-0: STA2-STA0: Три младших значащих бита регистра SMB0STA всегда читаются как 0, когдафлаг SI установлен в 1Page 120CYGNAL Integrated Products, Inc.