Адилова А.Қ.

Информатика және қолданбалы математика магистрі,

М.Х.Дулати атындағы ТарМУ,Тараз қ.

М.Р.Көшербаева

физика магистрі, Тараз мемлекеттік педагогикалық институты,Тараз қ.

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 – статустық регистр.