F20-23 (1041603), страница 39
Текст из файла (страница 39)
Собственный адрес ведомого и адрес общего вызова будутигнорироваться. Для восстановления работы на шине необходимо установить в 1 флаг АА, чтобы разрешитьведомому распознавать свой адрес.189Ред. 1.4C8051F020/1/2/3Установка в 1 бита разрешения таймера освобождения шины SMBus (FTE, SMB0CN.1) включит таймеротсчета таймаута освобождения шины, который определяется значением регистра SMB0CR. Если на линии SCLудерживается высокий уровень сигнала, то таймер отсчитывает таймаут, определяемый регистром SMB0CR.Переполнение таймера означает истечение таймаута освобождения шины: если модуль SMBus0 ожидаетмомента для генерации бита START, то он сгенерирует его после истечения данного таймаута. Периодосвобождения шины должен быть не более 50мкс (см. рис.18.9).Когда бит (TOE, SMB0CN.0) установлен в 1, Таймер 3 используется для отсчета таймаута низкогоуровня сигнала на линии SCL.
Если Таймер 3 включен (см. раздел 22.2), то он будет перезагружаться, когда налинии SCL присутствует сигнал высокого уровня, и будет отсчитывать таймаут, когда на линии SCLприсутствует сигнал низкого уровня. Если Таймер 3 включен и настроен на переполнение через 25мс (и битТОЕ установлен в 1), то переполнение Таймера 3 означает истечение таймаута низкого уровня сигнала налинии SCL; в этом случае для сброса модуля SMBus0 можно использовать процедуру обработки прерывания отТаймера 3.Ред. 1.4190C8051F020/1/2/3Рисунок 18.8. SMB0CN: Регистр управления модуля SMBus0Значениепри сбросе:RBUSYR/WENSMBR/WSTAR/WSTOR/WSIR/WAAR/WFTER/WTOEБит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0SFR Адрес:(доступен в битовомрежиме адресации)0xC000000000Бит 7: BUSY: Флаг занятости шины SMBus.0: Шина SMBus свободна1: Шина SMBus занятаБит 6: ENSMB: Включение модуля SMBus.Этот бит включает/отключает последовательный интерфейс SMBus0: SMBus отключен.1: SMBus включен.Бит 5: STA: Флаг запуска модуля SMBus.0: Бит START не передается.1: При работе в режиме ведущего бит START передается, если шина свободна.
(Если шина несвободна, то бит START передается после приема бита STOP.) Если бит STA устанавливаетсяпосле передачи или приема одного или нескольких байт и до приема бита STOP, то передаетсябит «повторный START». Бит STO следует явно сбросить в 0 до установки в 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 (если он включен), то происходит условие таймаута.191Ред.
1.4C8051F020/1/2/318.4.2. Регистр установки тактовой частоты модуля SMBusРисунок 14.5. SMB0CR: Регистр установки тактовой частоты модуля SMBusR/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xCFБиты 7-0: SMB0CR.[7:0]: Установка тактовой частоты модуля SMBus0Регистр установки тактовой частоты SMB0CR управляет частотой тактовых импульсов,выдаваемых на линию SCL в режиме ведущего. 8-разрядное слово, сохраненное в регистре SMB0CR,загружается в специальный 8-разрядный таймер.
Этот таймер считает в прямом направлении и когда онпереполнится (из состояния 0xFF в состояние 0х00), состояние сигнала на линии SCL изменится напротивоположное.Значение SMB0CR ограничивается следующим уравнением:SMB0CR < ((288 - 0.85 * SYSCLK) / 1.125 ), гдеSMB0CR – 8-разрядное значение (без знака) регистра SMB0CR;SYSCLK – системная тактовая частота в [Гц].Длительность удержания низкого и высокого уровней тактового сигнала на линии SCL определяетсяследующими уравнениями:TLOW = (256 – SMB0CR) / SYSCLKTHIGH = (258 – SMB0CR) / SYSCLK + 625нсЗначение регистра SMB0CR определяет также таймаут освобождения шины в соответствии соследующим уравнением:TBFT = 10 * [(256 – SMB0CR) + 1] / SYSCLKРед.
1.4192C8051F020/1/2/318.4.3. Регистр данныхРегистр данных модуля SMBus0 SMB0DAT содержит байт последовательных данных, которыйнеобходимо передать, или байт последовательных данных, который только что принят. Программа можетпрочитать из регистра или записать в регистр данные, когда флаг SI установлен в 1; программа не должнапытаться обратиться к регистру SMB0DAT, когда модуль SMBus включен и флаг SI сброшен в 0, т.к. в этотмомент может осуществляться аппаратный сдвиг байта данных в регистр или из регистра.Данные всегда сдвигаются старшими разрядами вперед. После приема байта первый бит принятыхданных занимает старший разряд регистра SMB0DAT. Когда данные выдвигаются из регистра, ониодновременно появляются на шине.
Поэтому регистр SMB0DAT всегда содержит последний байт данных,присутствующий в настоящий момент на шине. Таким образом, в случае потери арбитража переход отведущего передатчика к ведомому приемнику осуществляется с корректными данными в регистре SMB0DAT.Рисунок 18.10. SMB0DAT: Регистр данных модуля SMBus0R/WR/WR/WR/WR/WR/WR/WR/WБит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000Бит 7SFR Адрес:0xC2Биты 7-0: SMB0DAT: Данные модуля SMBus.Регистр SMB0DAT содержит байт данных, которые должны передаваться последовательномуинтерфейсу SMBus, или данные, только что принятые от последовательного интерфейса SMBus. Читать изэтого регистра или записывать в этот регистр можно всегда, когда флаг прерывания от последовательногопорта SI (SMB0CN.3) установлен в 1. Когда флаг SI не установлен в 1, система может находится в процессесдвига данных в регистр (или из регистра) SMB0DAT и обращаться к этому регистру нельзя.18.4.4.
Регистр адресаРегистр адреса SMB0ADR содержит адрес ведомого для интерфейса SMBus. В ведомом режиме семьстарших значащих битов образуют 7-битный адрес ведомого. Младший значащий бит, бит 0, используется дляразрешения распознавания адреса общего вызова (0х00). Если бит 0 установлен в 1, адрес общего вызова будетраспознаваться. В противном случае, адрес общего вызова будет игнорироваться. Содержимое этого регистраигнорируется, если модуль SMBus работает в ведущем режиме.Рисунок 18.11. SMB0ADR: Регистр адреса модуля SMBusR/WSLV6R/WSLV5R/WSLV4R/WSLV3R/WSLV2R/WSLV1R/WSLV0R/WGCБит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0Значениепри сбросе:00000000SFR Адрес:0xC3Биты 7-1: SLV6-SLV0: Адрес ведомого SMBusЭти биты загружаются 7-разрядным адресом ведомого, на который будет отвечать модульSMBus при работе в качестве ведомого передатчика или ведомого приемника. SLV6 являетсястаршим значащим битом адреса и соответствует первому биту адресного байта,полученного по шине SMBus.Бит 0:193GC: Разрешение адреса общего вызова.Этот бит используется для разрешения распознавания адреса общего вызова (0х00).0: Адрес общего вызова игнорируется.1: Адрес общего вызова распознается.Ред.
1.4C8051F020/1/2/318.4.5. Регистр состоянияРегистр состояния SMB0STA содержит 8-битный код состояния, показывающий текущее состояниемодуля SMBus. Существует 28 возможных состояний модуля SMBus, каждому из которых соответствуетуникальный код состояния. Пять старших значащих битов кода состояния могут иметь различные значения, атри младших значащих бита для корректных кодов состояния всегда равны нулю, когда SI = 1. Поэтому всевозможные коды состояния кратны восьми.
Это позволяет применять в программе код состояния в качествеиндекса, используемого для перехода на соответствующую процедуру обслуживания (используя 8 байт кодадля обслуживания состояния или для перехода на более сложную процедуру обслуживания).Для нужд программы пользователя содержимое регистра SMB0STA определено только тогда, когдафлаг SI установлен в 1.