Адилова А.Қ.
Информатика
және қолданбалы математика магистрі,
М.Х.Дулати
атындағы ТарМУ,Тараз қ.
М.Р.Көшербаева
физика магистрі,
Тараз мемлекеттік педагогикалық институты,Тараз қ.
I2C интерфейсінің бағдарламалық және аппараттық
жүзеге асыру режимдері
I2C
интерфейсі физикалық екі желілі тізбек.
Жетекші (master) құрылғы SCL желісі бойынша тактілік серпін
жүретін, екі бағытта
деректер беретін SDA желісі бойынша
беріледі. Жалпы жағдайда, шиналардың жетекші
құрылғылары бірнеше болуы мүмкін, бірақ
уақыттың әр сәтінде біреуі ғана белсенді
болады.
Slave құрылғыларының саны тек шина сызықтарының сыйымдылы-ғының қосындысымен шектеулі, бірақ ол 400 пФ - дан аспауы тиіс. Тасымалдау жылдамдығы қатаң белгіленбейді, ол шектеу тек жоғарғы шегіне дейін қолданылады- стандартты режим үшін 100 кбит/с және жылдам режим үшін 400 кбит/с. Аппараттық тұрғысынан таратқыштар шығудың «ашық коллектор» («ашық ағын») түрін пайдаланады, ал шинада тартқыш резисторлар бар, сондықтан жоғары деңгейдегі кернеу және төмен кернеу сигналдық желілерін дұрыс айту керек, бірақ жеңілдету үшін біз күнделікті пайдаланатын лог. 1 және лог. 0 терминдерін қолданамыз.
Шина бос
кезде екі желі (SDA и SCL) лог.1-де
орналасқан. Алмасу кезінде бір тактілі
импульс үшін SCL шинасына SDA шинасынан бір бит
деректер беріледі. SDA желісінің жай-күйі тек лог. 0-де SCL желісіне өзгеруі
керек. START и STOP – екі комбинациясы ерекшелікті
құрайды. Лог.1 кезінде SCL деңгейі SDA-
ға, лог.1- мен лог.0- ге өзгереді, яғни бұл деген СТАРТ
сигналын білдіреді. Бұл шина жұмыспен
қамтылған құрылғы болып саналады, бұл сигнал деректермен алмасуды бастайды. SDA кезінде лог.0-ден лог.1-ге ауысымын, SCL кезінде лог.1
көрсететін STOP сигналы анықтайды, бұл алмасу бойынша шина аяқталды және
шина бос. 8 бит бойынша 1 бит қосуды растайтын деректер байтпен беріледі.
Бірінші болып ең үлкен бит, соңынан кішісі жүреді. Байт
саны (START және STOP арасындағы) алмасудың бір сеансы үшін
шектелмеген. Егер қабылдағыш бірден тағы бір байт
қабылдауға дайын болмаса, ол SCL желіге лог.0 береді, және оны талап етілетін
уақыт ішінде ұстап қалады. Басқаша
айтқанда, таратқыш SCL желісін
қадағалауға тиіс және беруді бастауы мүмкін, егер
SCL- ге лог.1 болса.
Растау
қабылданған байт келесі ретпен
жүргізіледі соңғы
(кіші) битті беруден кейін, таратқыш SDA желіде лог.1 қояды.
Қабылдағыш SCL желісінде SDA лог.0 қоюға
арналған импульс үшін қажет.
ADuC812 микроконтроллерінде I2C қолдану
Аталған микроконтроллерде I2C интерфейсі бар, яғни қондарығының толық емес режимі аппаратты түрде іске асады, ал
басты режим қолданбалы бағдарламадан қосымша әрекеттерді талап етеді. Ауысу үшін SCLOCK (SCL) және SDATA (SDA) желілері қолданылады. Бөлінетін желілер SPI интерфейсімен
қолданылады, сондықтан белгілі бір уақыт мезетінде бұл интерфейстердің тек біреуімен жұмыс жасауға мүмкіндік бар..
I2C – мен әсерлесу
үш регистр арқылы іске асады: I2CADD – жетекші режиміндегі меншікті адрес (тек қана 7-биттік адрестеуді қолдайды), I2CDAT – деректер регистрі және I2CCON –басқару және күй регистрі. Соңғысы келесі биттерден тұрады:
7 бит (MDO) – басты режимде ғана қолданылады және SDATA желісіне шығатын міндерден
тұрады.
6 бит (MDE) – тек басты режимге ғана лог.1 SDATA желісін
жиынға ауыстырады, лог. 0 – ендіруге.
5 бит (MCO) – тек басты режимге ғана,
SCLOCK желісіне жиналатын мәндерден тұрады.
4 бит (MDI) – тек басты режимге ғана қабылдау режимінде SDATA желісі
арқылы келетін соңғы биттен тұрады және SCLOCK
жабық сиггнал.
3 бит (I2CM) – лог.1 басты қондырғының режимін таңдайды, лог.0 – жетекші.
2 бит (I2CRS) –лог.1 I2C интерфейсін қалыпқа келтіру арқылы орындалады, қалыпты жағдайдағы
жұмыста лог.0 болу керек.
1 бит (I2CTX) – лог.1 интерфейстің тасымалдау күйін, лог.0 интерфейстің қабылдау күйін көрсетеді.
0 бит (I2CI) – лог. 1 қабылдау мен тасымалдаудың аяқталғанын көрсетеді, бағдарлама арқылы іске асады.
Сөйтіп, интерфейс арқылы байттардың тасымалдануы аппаратты түрде жұмыс жасайды, I2CDAT регистрінің деректер байтын тек
жазып және оқыса жеткілікті. Бірақ алмасуды ұйымдастыру
мен START және STOP комбинацияларын қалыптастыру басты режим
үшін бағдарламалық түрде жасау керек. Бұл
үшін MDO, MCO биттерінің комбинацияларын сәйкестендіріп
қою қажет.
Аталған
микроконтроллерде I2C и SPI интерфейстерінің жалпы жиындары арқылы
ғана бөлінбейді, сондай-ақ, I2C конфигурациясы үшін
кейбір аппараттық түйіндер SPI, SPICONинтерфейстерін басқару
үшін регистрлер қолданылады. SPI-ге бұл регистрдің
үш биті әсер етеді:
5 бит (SPE) –
лог.0 I2C интерфейсінің режимін қосады, лог.1 –SPI режимін.
1-0 биттер
(SPR1, SPR0) – басты режимде жылдамдықпен алмасуды береді, оның
мынадай комбинациялары болуы мүмкін:
00b – Clock/4,
01b
– Clock/8,
10b
– Clock/32,
11b
– Clock/64.
Мұндағы Clock – микроконтроллердің тактілік жиілігі.
Мысал. Басты режимдегі тасымалдауға жұмыс жасау үшін қажет. Микроконтроллердің тактілі жиілігі 11.0592 МГц, сондықтан SPR биттерінің тасымалдау жылдамдығын өте аз етіп таңдаған жөн (тіпті бұл жағдайда 11’059’200/64=172’800 кбит/с, бұл мәннің өзі 100 кбит/с тасымалының стандартты режим жылдамдығынан көп, бірақ тез режимге сияды, оның жылдамдығы 400 кбит/с-тан көп емес). SPICON=03h. Басты режимде SDA және SCL желілері лог.1 ізделінді күйде жұмыс жасау керек, сондықтан I2CCON=FAh.
PIC1F877 микроконтроллерінде I2C
қолдану
Бұл микроконтроллерде толық I2C аппаратты интерфейсі бар. ADuC812-дегі сияқты қабылдағыш I2C режимінде де SPI режимінде де
жұмыс жасай алады. I2C үшін 7-биттік адрестеуді, сондай-ақ 10-биттік адресаттауды да қолдануға мүмкіндік бар. Басты режимде алмасу жылдамдығын келтіруге болады. RC3/SCL және RC4/SDA желілері аппаратты түрде
әрекет ете алады, I2C интерфейсі үшін 5 регистр жауап береді: SSPBUF деректер регистрі, SSPADD адрес
регистрі, екі SSPCON және SSPCON2 басқару регистрлері, SSPSTAT күй
регистрі.
AT91SAM7S256
микроконтроллерінде I2C
пайдалану
AT91SAM7S256- да I2C интерфейсінің TWI атауы бар. Ол жетекші режимінде ғана
жұмыс істейді. 7 немесе 10-биттік адрестеу режимі. TWD және TWCK сызықтарымен басқарылады. Шина
бос болған кезде екі сызық бірлікте болады. Екі сызық та
ашық ағынмен болу керек. TWD желісіндегі деректер – сегізбиттік.
Әрбір жіберу START шартымен басталып, STOP шартымен аяқталады.
TWI 2 режимде жұмыс
істейді: таратқыш-шебер және қабылдағыш-шебер. TWI_CR
басқару регистрі жетекші режимінде интерфейс конфигурациялауға
мүмкіндік береді. TWI_CWGR – тактілік сигналдың генератор регистрі.
TWCK сигналын анықтайтын регистр. TWI_IER – үзуді
рұқсат ететін регистр. TWI_THR – уақытша сақтау
регистрі. TWI_MMR –жетекші регистрі. TWI_IADR – ішкі адрес. TWI_SR –
статустық регистр.