I2C kopnes protokola apmācība, saskarne ar lietojumprogrammām

Izmēģiniet Mūsu Instrumentu Problēmu Novēršanai





Mūsdienās protokoliem ir būtiska loma iegultās sistēmas dizains . Neizejot uz protokoliem, ja vēlaties paplašināt mikrokontrollera perifērijas funkcijas, sarežģītība un enerģijas patēriņš palielināsies. Ir pieejami dažādi autobusu protokolu veidi, piemēram, USART, SPI, CAN, I2C kopnes protokols utt., kurus izmanto datu pārsūtīšanai starp divām sistēmām.

I2C protokols

Kas ir I2C autobuss?




Informācijas pārsūtīšanai un saņemšanai starp divām vai vairāk nekā divām ierīcēm nepieciešams sakaru ceļš, ko sauc par kopņu sistēmu. I2C kopne ir divvirzienu divu vadu sērijveida kopne, ko izmanto datu pārvadāšanai starp integrētajām shēmām. I2C nozīmē “Inter Integrated Circuit”. Pirmo reizi to 1982. gadā ieviesa Philips pusvadītāji. I2C kopni veido trīs datu pārraides ātrumi, piemēram, standarta, ātrā režīma un ātrgaitas režīma. I2C kopne atbalsta 7 un 10 bitu adreses vietas ierīci, un tās darbība atšķiras ar zemu spriegumu.

I2c kopnes protokols

I2c kopnes protokols



I2C signālu līnijas

I2C signālu līnijas

I2C signālu līnijas

I2C ir sērijveida kopnes protokols, kas sastāv no divām signālu līnijām, piemēram, SCL un SDL līnijām, kuras izmanto saziņai ar ierīcēm. SCL apzīmē “sērijas pulksteņa līniju”, un šo signālu vienmēr virza “galvenā ierīce”. SDL apzīmē ‘sērijas datu līniju’, un šo signālu vada vai nu galvenais, vai I2C perifērijas ierīces. Gan šīs SCL, gan SDL līnijas atrodas atvērtā aizplūšanas stāvoklī, kad nav pārsūtīšanas starp I2C perifērijas ierīcēm.

Open-Drain izejas


Atvērtā kanalizācija ir FET tranzistora koncepcija kur tranzistora iztukšošanas spaile ir atvērtā stāvoklī. Galvenās ierīces SDL un SCL tapas ir konstruētas tā, lai tranzistori būtu atvērtā stāvoklī, tāpēc datu pārsūtīšana ir iespējama tikai tad, kad šie tranzistori tiek vadīti. Tādējādi šīs līnijas vai iztukšošanas spailes ir pieslēgtas pamatīgiem pievilkšanas rezistoriem ar VCC vadīšanas režīmam.

I2C saskarnes

Daudzi vergu ierīces ir saskarnē ar mikrokontrolleru ar I2C kopnes palīdzību caur I2C līmeņa pārslēdzēju IC informācijas pārsūtīšanai starp tām. I2C protokols, ko izmanto, lai savienotu ne vairāk kā 128 ierīces, kas visas ir savienotas, lai sazinātos ar galvenās vienības SCL un SDL līnijām, kā arī ar vergu ierīcēm. Tas atbalsta Multimaster komunikāciju, kas nozīmē, ka ārējo ierīču saziņai tiek izmantoti divi maģistri.

I2C datu pārraides ātrumi

I2C protokols darbojas trīs režīmos, piemēram: ātrā režīmā, ātrgaitas režīmā un standarta režīmā, kur standarta režīma datu ātrums ir diapazonā no 0Hz līdz 100Hz, un ātrā režīma datus var pārsūtīt ar ātrumu 0Hz līdz 400 KHz un ātrgaitas režīmu ar 10 KHz līdz 100KHz. 9 bitu dati tiek nosūtīti par katru pārsūtīšanu, kur raidītājs MSB nosūta 8 bitus LSB, un 9. bits ir uztvērēja nosūtīts apstiprināšanas bits.

I2C datu pārraides ātrumi

I2C datu pārraides ātrumi

I2C komunikācija

I2C kopnes protokolu visbiežāk izmanto galvenajā un vergu saziņā, kur galveno sauc par “mikrokontrolleru”, un vergu sauc par citām ierīcēm, piemēram, ADC, EEPROM, DAC un līdzīgām ierīcēm iegultā sistēmā. Vergu ierīču skaits ir savienots ar galveno ierīci ar I2C kopnes palīdzību, kur katrs vergs sastāv no unikālas adreses, lai to paziņotu. Lai sazinātos ar galveno ierīci ar vergu, tiek izmantotas šādas darbības:

1. solis: Pirmkārt, galvenā ierīce izdod sākuma nosacījumu, lai informētu visas vergu ierīces, lai tās klausītos sērijas datu līnijā.

2. solis: Galvenā ierīce nosūta mērķa vergu ierīces adresi, kas tiek salīdzināta ar visām vergu ierīču adresēm, kas savienotas ar SCL un SDL līnijām. Ja kāda adrese sakrīt, tiek atlasīta šī ierīce un visas pārējās ierīces tiek atvienotas no SCL un SDL līnijām.

3. solis: Slave ierīce ar saskaņotu adresi, kas saņemta no kapteiņa, atbild ar apstiprinājumu galvenajam, pēc tam tiek izveidota komunikācija starp galveno un slave ierīcēm datu kopnē.

4. solis: Gan galvenais, gan vergs saņem un pārraida datus atkarībā no tā, vai komunikācija tiek lasīta vai rakstīta.

5. solis: Tad kapteinis var nosūtīt 8 bitu datus uztvērējam, kas atbild ar 1 bitu apstiprinājumu.

I2C apmācība

Informācijas pakāpenisku pārsūtīšanu un saņemšanu sērijveidā attiecībā pret pulksteņa impulsiem sauc par I2C protokolu. Tas ir starpsistēmu un maza attāluma protokols, kas nozīmē, ka to izmanto shēmas plates iekšienē, lai sazinātos ar galveno un pakļauto ierīci.

I2C protokola pamati

Kopumā I2C kopnes sistēma sastāv no diviem vadiem, kurus var viegli izmantot, lai paplašinātu ieejas un izejas perifērijas funkcijas, piemēram, ADC, EEROM un RTC, un citi pamatkomponenti izveidot sistēmu, kuras sarežģītība ir ļoti mazāka.

Piemērs: Tā kā 8051 mikrokontrollerim nav iebūvēta ADC - tāpēc, ja mēs vēlamies savienot analogos sensorus ar 8051 mikrokontrolleru, mums jāizmanto tādas ADC ierīces kā ADC0804-1 kanāls ADC, ADC0808-8 kanālu ADC utt. Izmantojot šos ADC, mēs varam sasaistīt analogos sensorus ar mikrokontrolleru.

Neizmantojot protokolu, lai paplašinātu jebkura mikrokontrollera vai procesora I / O funkcijas, mēs varam pāriet uz 8255 ICit 8 kontaktu ierīci. The 8051 mikrokontrolleris ir 40 kontaktu mikrokontrolleris izmantojot 8255 IC, mēs varam paplašināt 3-I / O porti ar 8 kontaktiem katrā ostā. Izmantojot perifērās shēmas paplašināšanai visas ierīces, piemēram, RTC, ADC, EEPROM, Taimerus utt., Tiek palielināta arī sarežģītība, izmaksas, enerģijas patēriņš un produkta lielums.

Lai pārvarētu šo problēmu, aparatūras sarežģītības un enerģijas patēriņa samazināšanai rodas protokola koncepcija. Izmantojot šo I2C protokolu, mēs varam paplašināt vairāk funkciju, piemēram, I / 0 perifērijas ierīces, ADC, T / C un atmiņas ierīces līdz pat 128 ierīcēm.
I2C protokolos izmantotā terminoloģija

Raidītājs: Ierīci, kas nosūta datus kopnei, sauc par raidītāju.

Uztvērējs: Ierīci, kas saņem datus no kopnes, sauc par uztvērēju.

Meistars: Ierīci, kas uzsāk pārsūtīšanu, lai ģenerētu pulksteņa signālus un pārtrauktu pārsūtīšanu, sauc par galveno.

Vergs: Ierīci, kuru adresējis kapteinis, sauc par vergu.

Multimaster: Vairāk nekā viens kapteinis var vienlaikus mēģināt vadīt autobusu, nesabojājot ziņojumu, tiek saukts par Multimaster.

Šķīrējtiesa: Procedūra, lai nodrošinātu, ka, ja vairāk nekā viens kapteinis vienlaikus mēģina vadīt kopni - to atļauts darīt tikai vienam, uzvarošais ziņojums netiek sabojāts.

Sinhronizācija: Procedūru divu vai vairāku ierīču pulksteņa sinhronizēšanai sauc par sinhronizāciju.

I2C pamata komandu secība

  1. Sākuma bitu stāvoklis
  2. Stop Bit stāvoklis
  3. Apstiprinājuma nosacījums
  4. Kapteinis vergam Rakstīšanas darbība
  5. Izlasiet operāciju Master vergs

Sākuma un apturēšanas bitu stāvoklis

Kad kapteinis (mikrokontrolleris) vēlas runāt ar vergu ierīci (piemēram, ADC), tas sāk sakarus, izsniedzot sākuma nosacījumu I2C kopnei un pēc tam izdod apstāšanās nosacījumu. I2C sākuma un beigu loģikas līmeņi parādīti attēlā.

I2C sākuma nosacījums ir definēts kā augsta vai zema SDA līnijas pāreja, kamēr SCL līnija ir augsta. I2C apstāšanās stāvoklis rodas, kad SDA līnija pāriet no zemas uz augstu, kamēr SCL līnija ir augsta.

I2C kapteinis vienmēr ģenerē S un P nosacījumus. Kad I2C kapteinis uzsāk START nosacījumu, I2c kopne tiek uzskatīta par aizņemtu.

Sākuma un apturēšanas bitu stāvoklis

Sākuma un apturēšanas bitu stāvoklis

Programmēšana:

SĀKT Nosacījumu:

sbit SDA = P1 ^ 7 // inicializēt mikrokontrollera SDA un SCL tapas //
sbit SCL = P1 ^ 6
anulēt kavēšanos (neparakstīts int)
anulēt galveno ()
{
SDA = 1 // datu apstrāde //
SCL = 1 // pulkstenis ir augsts //
kavēšanās ()
SDA = 0 // nosūtīja datus //
kavēšanās ()
SCL = 0 // pulksteņa signāls ir zems //
}
Tukšā aizkave (int p)
{
neparakstīta, dz
Par (a = 0a<255a++) //delay function//
Par (b = 0b}

STOP nosacījums:

anulēt galveno ()
{
SDA = 0 // Pārtraukt datu apstrādi //
SCL = 1 // pulkstenis ir augsts //
kavēšanās ()
SDA = 1 // apturēts //
kavēšanās ()
SCL = 0 // pulksteņa signāls ir zems //
}
Tukšā aizkave (int p)
{
neparakstīta, dz
Par (a = 0a<255a++) //delay function//
Par (b = 0b}

Apstiprināšanas (ACK) un bezapstiprināšanas (NCK) nosacījums

Katram baitam, kas tiek pārsūtīts pa I2C kopni, no uztvērēja seko apstiprināšanas nosacījums, kas nozīmē, ka pēc tam, kad kapteinis velk SCL zemu, lai pabeigtu 8 bitu pārraidi, uztvērējs zemu pievilks SDA galvenajam. Ja pēc uztvērēja pārraides nevelk, SDA līnija LOW tiek uzskatīta par NCK nosacījumu.

Pateicība (ACK)

Pateicība (ACK)

Programmēšana

Pateicība
anulēt galveno ()
{
SDA = 0 // SDA līnija ir zema //
SCL = 1 // pulkstenis ir no augšas līdz zemam //
kavēšanās (100)
SCL = 0
}
Nav apstiprinājuma:
anulēt galveno ()
{
SDA = 1 // SDA līnija iet uz augstu //
SCL = 1 // pulkstenis ir no augšas līdz zemam //
kavēšanās (100)
SCL = 0
}

Darbs no kapteiņa līdz vergam

I2C protokols datus pārsūta pakešu vai baitu veidā. Katram baitam seko apstiprināšanas bits.

Datu pārsūtīšanas formāts

Datu pārsūtīšanas formāts

Datu pārsūtīšanas formāts

Sākt: Pirmkārt, datu pārsūtīšanas secība, ko sāk kapteinis, kas ģenerē sākuma nosacījumu.

7 bitu adrese: Pēc tam kapteinis nosūta verga adresi divos 8 bitu formātos, nevis vienas 16 bitu adreses.

R / W: Ja lasīšanas un rakstīšanas bits ir augsts, tiek veikta rakstīšanas darbība.

ALAS: Ja rakstīšanas operācija tiek veikta vergu ierīcē, tad uztvērējs nosūta 1 bitu ACK uz mikrokontrolleru.

Pietura: Pēc rakstīšanas darbības pabeigšanas vergu ierīcē mikrokontrolleris nosūta apturēšanas nosacījumu vergu ierīcei.

Programmēšana

Rakstīšanas operācija

voidwrite (neparakstīta rakstzīme d)
{
Neparakstīta char k, j = 0x80
Par (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kavēšanās (4)
SCL = 0
}
SDA = 1
SCL = 1
kavēšanās (2)
c = SDA
kavēšanās (2)
SCL = 0
}

Operācija no kapteiņa līdz vergam

Datus no vergu ierīces nolasa bitu vai baitu veidā - vispirms izlasiet nozīmīgāko bitu un pēdējo - vismazāk nozīmīgo bitu.

Datu lasīšanas formāts

Datu lasīšanas formāts

Datu lasīšanas formāts

Sākt: Datu pārsūtīšanas secību galvenokārt sāk kapteinis, kurš ģenerē sākuma nosacījumu.

7 bitu adrese: Pēc tam kapteinis nosūta verga adresi divos 8 bitu formātos, nevis vienas 16 bitu adreses.

R / W: Ja lasīšanas un rakstīšanas bitu ir maz, tad tiek veikta lasīšanas darbība.

ALAS: Ja rakstīšanas operācija tiek veikta vergu ierīcē, tad uztvērējs nosūta 1 bitu ACK uz mikrokontrolleru.

Pietura: Pēc rakstīšanas darbības pabeigšanas vergu ierīcē mikrokontrolleris nosūta apturēšanas nosacījumu vergu ierīcei.

Programmēšana

Nav spēkā ()
{
Neparakstīta char j, z = 0x00, q = 0x80
SDA = 1
par (j = 0j<8j++)
{
SCL = 1
kavēšanās (100)
karogs = SDA
ja (karodziņš == 1)
q)
q = q >> 1
kavēšanās (100)
SCL = 0

Praktisks piemērs ADC saskarnei ar mikrokontrolleru 8051

ADC ir ierīce, ko izmanto, lai pārveidotu analogos datus ciparu formātā un digitālos analogos. 8051 mikrokontrollerim nav iebūvēta ADC, tāpēc mums tas jāpievieno ārēji, izmantojot I2C protokolu. PCF8591 ir I2C bāzes analogs digitālajam un digitālo uz analogo pārveidotāju. Šī ierīce var atbalstīt ne vairāk kā 4 analogos ieejas kanālus kopā ar 2,5 līdz 6 V spriegumu.

Analogās izejas

Analogās izejas ir sprieguma formas. Piemēram, 5v analogais sensors nodrošina izejas loģiku no 0,01v līdz 5v.
Maksimālā digitālā vērtība 5v ir = 256.
2.5v vērtība ir = 123 atbilstoši maksimālajai sprieguma vērtībai.

Analogās izejas formula ir šāda:

Digitālo izejas formula:

ADC saskarne ar mikrokontrolleru 8051

ADC saskarne ar mikrokontrolleru 8051

Iepriekš redzamais attēls parāda datu pārsūtīšanu, izmantojot I2C protokolu no ADC ierīces uz mikrokontrolleru 8051. SCL un SDA ADC tapas ir savienotas ar mikrokontrollera tapām 1.7 un 1.6, lai izveidotu komunikāciju starp tām. Kad sensors piešķir analogās vērtības ADC, tas pārveidojas par digitālu un ar I2C protokolu pārsūta datus uz mikrokontrolleru.

Tas ir par I2C kopnes protokola apmācību ar atbilstošām programmām. Mēs ceram, ka dotais saturs sniedz praktisku koncepciju par vairāku ierīču saskarsmi ar mikrokontrolleriem, izmantojot I2C komunikāciju. Ja jums ir kādas šaubas par šī protokola saskarnes procedūru, varat sazināties ar mums, komentējot tālāk.