I2C bus protocol Tutorial, Interface na may mga application

Subukan Ang Aming Instrumento Para Sa Pagtanggal Ng Mga Problema





Ngayon ang mga protocol ay may mahalagang papel sa naka-embed na disenyo ng system . Nang walang pagpunta sa mga protokol, kung nais mong palawakin ang mga paligid na tampok ng microcontroller, tataas ang pagiging kumplikado at pag-inom ng kuryente. Mayroong iba't ibang mga uri ng mga protokol ng bus na magagamit tulad ng USART, SPI, CAN, I2C bus protocol , atbp., na ginagamit para sa paglilipat ng data sa pagitan ng dalawang mga system.

I2C Protocol

Ano ang I2C Bus?




Ang paghahatid at pagtanggap ng impormasyon sa pagitan ng dalawa o higit pa sa dalawang mga aparato ay nangangailangan ng isang landas sa komunikasyon na tinatawag bilang isang sistema ng bus. Ang isang I2C bus ay isang bidirectional two-wired serial bus na ginagamit upang ihatid ang data sa pagitan ng mga integrated circuit. Ang I2C ay nangangahulugang 'Inter Integrated Circuit'. Una itong ipinakilala ng Philips semiconductors noong 1982. Ang I2C bus ay binubuo ng tatlong mga bilis ng paglipat ng data tulad ng standard, fast-mode at high-speed-mode. Sinusuportahan ng I2C bus ang 7-bit at 10-bit na address space device at ang operasyon nito ay naiiba sa mababang boltahe.

I2c Bus Protocol

I2c Bus Protocol



I2C Signal Lines

I2C Signal Lines

I2C Signal Lines

Ang I2C ay isang serial bus protocol na binubuo ng dalawang linya ng signal tulad ng mga linya ng SCL at SDL na ginagamit upang makipag-usap sa mga aparato. Ang SCL ay nangangahulugang isang 'serial clock line' at ang signal na ito ay palaging hinihimok ng 'master device'. Ang SDL ay nangangahulugang ang 'serial data line', at ang senyas na ito ay hinihimok ng alinman sa master o mga I2C peripheral. Parehong mga linya ng SCL at SDL na ito ay nasa open-drain na estado kapag walang paglipat sa pagitan ng mga peripheral ng I2C.

Mga Output na Open-Drain


Ang open-drain ay ang konsepto para sa FET transistor kung saan ang terminal ng alisan ng tubig ng transistor ay bukas na estado. Ang mga SDL at SCL na pin ng master device ay dinisenyo kasama ang mga transistors sa bukas na estado, kaya posible lamang ang paglipat ng data kapag isinasagawa ang mga transistor na ito. Samakatuwid, ang mga linya na ito o mga terminal ng alisan ng tubig ay nakakonekta nang masusing mga resistor na pull-up sa VCC para sa mode ng pagpapadaloy.

Mga interface ng I2C

Marami ang mga aparato ng alipin ay naka-interface sa microcontroller sa tulong ng I2C bus sa pamamagitan ng I2C level shifter IC para sa paglilipat ng impormasyon sa pagitan nila. Ginamit ang I2C protocol upang ikonekta ang isang maximum na 128 mga aparato na lahat ay konektado upang makipag-usap sa mga linya ng SCL at SDL ng master unit pati na rin ang mga aparato ng alipin. Sinusuportahan nito ang komunikasyon sa Multimaster, na nangangahulugang ginagamit ang dalawang masters upang maikipag-usap ang mga panlabas na aparato.

Mga Rate ng Paglipat ng Data ng I2C

Nagpapatakbo ang I2C protocol ng tatlong mga mode tulad ng: fast mode, high-speed mode at standard mode kung saan ang standard mode data speed ay saklaw ng 0Hz hanggang 100Hz, at ang data ng mabilis na mode ay maaaring ilipat na may 0Hz hanggang 400 KHz na bilis at ang high speed mode na may 10 KHz hanggang 100KHz. Ang 9-bit na data ay ipinadala para sa bawat paglipat kung saan ang 8-bit ay ipinapadala ng transmiter MSB sa LSB, at ang ika-9 na bit ay isang bit ng pagkilala na ipinadala ng tatanggap.

Mga Rate ng Paglipat ng Data ng I2C

Mga Rate ng Paglipat ng Data ng I2C

Komunikasyon sa I2C

Ang I2C bus protocol ay karaniwang ginagamit sa komunikasyon sa master at alipin kung saan ang master ay tinawag na 'microcontroller', at ang alipin ay tinatawag na iba pang mga aparato tulad ng ADC, EEPROM, DAC at mga katulad na aparato sa naka-embed na system. Ang bilang ng mga aparato ng alipin ay nakakonekta sa master aparato sa tulong ng I2C bus, kung saan ang bawat alipin ay binubuo ng isang natatanging address upang maipaabot ito. Ang mga sumusunod na hakbang ay ginagamit upang maipaabot ang master device sa alipin:

Hakbang1: Una, ang master aparato ay naglalabas ng isang kundisyon sa pagsisimula upang ipaalam sa lahat ng mga aparato ng alipin upang makinig sila sa linya ng serial data.

Hakbang2: Ipinapadala ng master device ang address ng target na aparato ng alipin na inihambing sa lahat ng mga address ng lahat ng mga aparato ng alipin na nakakonekta sa mga linya ng SCL at SDL. Kung may tumutugma sa sinumang address, napili ang device na iyon, at ang natitirang lahat ng mga aparato ay naalis sa pagkakakonekta mula sa mga linya ng SCL at SDL.

Hakbang3: Ang aparato ng alipin na may isang tugmang address na natanggap mula sa master, ay tumutugon sa isang pagkilala sa master pagkatapos ng komunikasyon ay itinatag sa pagitan ng parehong mga master at alipin aparato sa data bus.

Hakbang4: Parehong tumatanggap at nagpapadala ng data ang master at alipin depende sa kung nabasa o nasusulat ang komunikasyon.

Hakbang5: Pagkatapos, ang master ay maaaring magpadala ng 8-bit ng data sa tatanggap na tumugon sa isang 1-bit na pagkilala.

I2C Tutorial

Ang paglilipat at pagtanggap ng impormasyon nang sunud-sunod na serial na may paggalang sa mga pulso ng orasan ay tinatawag na I2C protocol. Ito ay isang inter-system at short-distance protocol, na nangangahulugang, ginagamit ito sa loob ng circuit board upang makipag-usap sa mga master at alipin na aparato.

Mga Pangunahing Kaalaman sa I2C Protocol

Sa pangkalahatan, ang sistema ng bus ng I2C ay binubuo ng dalawang mga wire na madaling magamit upang mapalawak ang input at output ng mga paligid na tampok tulad ng ADC, EEROM at RTC, at iba pang pangunahing sangkap upang makagawa ng isang sistema na ang pagiging kumplikado ay mas mababa.

Halimbawa: Dahil ang 8051 microcontroller ay walang inbuilt ADC - kaya, kung nais naming i-interface ang anumang mga analog sensor sa 8051 microcontroller - kailangan naming gumamit ng mga ADC device tulad ng ADC0804-1 channel ADC, ADC0808- 8 channel ADC, atbp Sa pamamagitan ng paggamit ng mga ADC na ito, maaari naming i-interface ang mga analog sensor sa microcontroller.

Nang hindi ginagamit ang protocol upang mapalawak ang mga tampok na I / O ng anumang microcontroller o processor, maaari kaming pumunta sa 8255 ICit 8-pin na aparato. Ang Ang 8051 microcontroller ay isang 40-pin microcontroller sa pamamagitan ng paggamit ng 8255 IC, mapapalawak natin ang mga 3-I / O port na may 8-pin sa bawat port. Sa pamamagitan ng paggamit ng lahat ng mga aparato tulad ng RTC, ADC, EEPROM, timer, atbp. - para sa pagpapalawak ng peripheral circuitry - nadagdagan din ang pagiging kumplikado, gastos, pagkonsumo ng kuryente at laki ng produkto.

Upang mapagtagumpayan ang problemang ito, ang konsepto ng protocol ay nasa larawan para sa pagbabawas ng pagiging kumplikado ng hardware at pagkonsumo ng kuryente. Maaari naming mapalawak ang higit pang bilang ng mga tampok, tulad ng I / 0 peripheral, ADCs, T / C at mga memory device hanggang sa 128 mga aparato sa pamamagitan ng paggamit ng I2C na protokol na ito.
Ginamit na Terminolohiya sa I2C Protocols

Transmitter: Ang aparato na nagpapadala ng data sa bus ay tinatawag na transmitter.

Tatanggap: Ang aparato na tumatanggap ng data mula sa bus ay tinatawag na isang tatanggap.

Master: Ang aparato na nagpasimula ng mga paglilipat upang makabuo ng mga signal ng orasan at wakasan ang isang paglilipat ay tinatawag na master.

Alipin: Ang aparato na hinarap ng isang master ay tinatawag na alipin.

Multimaster: Mahigit sa isang master ang maaaring magtangkang kontrolin ang bus nang sabay-sabay nang hindi nasisira ang mensahe ay tinawag na Multimaster.

Arbitrasyon: Pamamaraan upang matiyak na, kung higit sa isang master nang sabay-sabay na subukan na kontrolin ang bus - isa lamang ang pinapayagan na gawin ito ang nanalong mensahe ay hindi nasira.

Pagsasabay: Ang pamamaraang pag-synchronize ng mga orasan ng orasan ng dalawa o higit pang mga aparato ay tinatawag na pagsabay.

I2C Pangunahing Sequence ng Mga Utos

  1. Simulan ang Kundisyon ng Bit
  2. Itigil ang Kundisyon ng Bit
  3. Kalagayan sa Pagkilala
  4. Master sa alipin Sumulat ng operasyon
  5. Basahin ang Operation Slave to Master

Magsimula at Itigil ang Kalagayan ng Bit

Kapag nais ng master (microcontroller) na makipag-usap sa isang aparato ng alipin (halimbawa ng ADC), nagsisimula ito ng komunikasyon sa pamamagitan ng pagbibigay ng isang kundisyon sa pagsisimula sa I2C bus, at pagkatapos ay naglalabas ng kundisyon ng paghinto. Ang pagsisimula at pagtigil ng mga antas ng lohika ng I2C ay ipinapakita sa pigura.

Ang kondisyon ng pagsisimula ng I2C ay tumutukoy sa isang mataas hanggang sa mababang paglipat ng linya ng SDA habang ang linya ng SCL ay mataas. Ang isang kundisyon ng paghinto ng I2C ay nangyayari kapag ang linya ng SDA ay nagpapalipat-lipat mula sa mababa hanggang sa mataas habang ang linya ng SCL ay mataas.

Palaging bumubuo ang master ng I2C ng mga kundisyon ng S at P. Kapag ang I2C master ay nagpasimula ng isang kundisyon ng PAGSIMULA, ang I2c bus ay isinasaalang-alang bilang nasa abalang estado.

Magsimula at Itigil ang Kalagayan ng Bit

Magsimula at Itigil ang Kalagayan ng Bit

Programming:

SIMULAAN Kundisyon:

sbit SDA = P1 ^ 7 // ipasimula ang mga SDA at SCL na pin ng microcontroller //
sbit SCL = P1 ^ 6
walang bisa ang pagkaantala (unsigned int)
walang bisa pangunahing ()
{
SDA = 1 // pagpoproseso ng data //
SCL = 1 // mataas ang orasan //
antala ()
Nagpadala ang SDA = 0 // ng data //
antala ()
SCL = 0 // signal ng orasan ay mababa //
}
Walang bisa ang pagkaantala (int p)
{
unsignedinta, b
Para sa (a = 0a<255a++) //delay function//
Para sa (b = 0b}

Huminto sa Kalagayan:

walang bisa pangunahing ()
{
SDA = 0 // Ihinto ang pagproseso ng data //
SCL = 1 // mataas ang orasan //
antala ()
SDA = 1 // Natigil //
antala ()
SCL = 0 // signal ng orasan ay mababa //
}
Walang bisa ang pagkaantala (int p)
{
unsignedinta, b
Para sa (a = 0a<255a++) //delay function//
Para sa (b = 0b}

Pagkilala (ACK) at Walang Kilala (NCK) Kalagayan

Ang bawat byte na naipadala sa ibabaw ng I2C bus ay sinusundan ng kinikilalang kundisyon mula sa tatanggap, na nangangahulugang, pagkatapos na hilahin ng master ang SCL pababa upang makumpleto ang paghahatid ng 8-bit, ang SDA ay mabababa ng tatanggap sa master. Kung, pagkatapos ng paghahatid ng tatanggap ay hindi kumukuha, ang linya ng SDA na LOW ay itinuturing na isang kondisyon na NCK.

Pagkilala (ACK)

Pagkilala (ACK)

Programming

Pagkilala
walang bisa pangunahing ()
{
SDA = 0 // Ang linya ng SDA ay napupunta sa mababang //
SCL = 1 // ang orasan ay mataas hanggang sa mababa //
antala (100)
SCL = 0
}
Walang Pagkilala:
walang bisa pangunahing ()
{
SDA = 1 // Ang linya ng SDA ay napupunta sa mataas //
SCL = 1 // ang orasan ay mataas hanggang sa mababa //
antala (100)
SCL = 0
}

Master to Slave Writes Operation

Inililipat ng I2C protocol ang data sa anyo ng mga packet o byte. Ang bawat byte ay sinusundan ng isang bit ng pagkilala.

Format ng Paglipat ng Data

Format ng Paglipat ng Data

Format ng Paglipat ng Data

Simula: Pangunahin, ang pagkakasunud-sunod ng paglilipat ng data na pinasimulan ng master na bumubuo ng kondisyong panimula.

7-bit na Address: Pagkatapos nito ay ipinapadala ng master ang address ng alipin sa dalawang 8-bit na format sa halip na isang solong 16-bit na address.

R / W: Kung ang binasa at sumulat nang kaunti ay mataas, pagkatapos ay isinasagawa ang operasyon sa pagsulat.

NAKU: Kung ang pagpapatakbo ng pagsusulat ay ginaganap sa aparato ng alipin, pagkatapos ay ipapadala ng tatanggap ang 1-bit ACK sa microcontroller.

Itigil: Matapos makumpleto ang operasyon ng pagsusulat sa aparato ng alipin, ang microcontroller ay nagpapadala ng kundisyon ng paghinto sa aparato ng alipin.

Programming

Isulat ang Operation

voidwrite (unsigned char d)
{
Hindi naka-sign na char k, j = 0x80
Para sa (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
antala (4)
SCL = 0
}
SDA = 1
SCL = 1
antala (2)
c = SDA
antala (2)
SCL = 0
}

Master to Slave Read Operation

Ang data ay nabasa muli mula sa aparato ng alipin sa anyo ng bit o bytes - basahin muna ang pinaka makabuluhang bit at basahin ang hindi gaanong makabuluhang kaunting huli.

Ang Format ng Basahin ang Data

Format ng Basahin ang Data

Format ng Basahin ang Data

Simula: Pangunahin, ang pagkakasunud-sunod ng paglilipat ng data ay pinasimulan ng master na bumubuo ng kondisyong panimula.

7-bit na Address: Pagkatapos nito ay ipinapadala ng master ang address ng alipin sa dalawang 8-bit na format sa halip na isang solong 16-bit na address.

R / W: Kung ang read at magsulat ng bit ay mababa, pagkatapos ay ang pagbabasa ng operasyon ay ginanap.

NAKU: Kung ang pagpapatakbo ng pagsusulat ay ginaganap sa aparato ng alipin, pagkatapos ay ipapadala ng tatanggap ang 1-bit ACK sa microcontroller.

Itigil: Matapos makumpleto ang operasyon ng pagsusulat sa aparato ng alipin, ang microcontroller ay nagpapadala ng kundisyon ng paghinto sa aparato ng alipin.

Programming

Walang bisa na basahin ()
{
Hindi naka-sign na char j, z = 0x00, q = 0x80
SDA = 1
para sa (j = 0j<8j++)
{
SCL = 1
antala (100)
watawat = SDA
kung (flag == 1)
q)
q = q >> 1
antala (100)
SCL = 0

Praktikal na Halimbawa ng Interfacing ADC sa 8051 Microcontroller

Ang ADC ay isang aparato na ginagamit upang baguhin ang data ng analogue sa anyo ng digital at digital sa analogue. Ang 8051 microcontroller ay walang isang inbuilt ADC kaya kailangan naming magdagdag ng panlabas sa pamamagitan ng I2C protocol. Ang PCF8591 ay batay sa I2C analogue sa digital at digital sa converter ng analogue. Maaaring suportahan ng aparatong ito ang maximum na 4-analogue input channel kasama ang 2.5 hanggang 6v voltages.

Mga Output ng Analog

Ang mga output ng analogue ay nagmula sa anyo ng mga voltages. Halimbawa, ang 5v analogue sensor ay nagbibigay ng output logic na 0.01v hanggang 5v.
Ang maximum na digital na halagang 5v ay = 256.
Ang halaga ng 2.5v ay = 123 ayon sa maximum na halaga ng boltahe.

Ang formula ng output ng analogue ay:

Ang Formula ng Mga Digital na Output:

Ang pagitan ng ADC sa 8051 Microcontroller

Ang pagitan ng ADC sa 8051 Microcontroller

Ipinapakita ng figure sa itaas ang paglipat ng data gamit ang I2C protocol mula sa ADC device patungo sa 8051 microcontroller. Ang mga pin ng ADC ng SCL at SDA ay konektado sa pin 1.7 at 1.6 ng microcontroller para sa pagtataguyod ng komunikasyon sa pagitan nila. Kapag ang sensor ay nagbibigay ng mga halagang analog sa ADC, nagko-convert ito sa digital at inililipat ang data sa microcontroller sa pamamagitan ng I2C protocol.

Ito ay tungkol sa tutorial ng bus ng I2C bus na may naaangkop na mga programa. Inaasahan namin na ang naibigay na nilalaman ay magbibigay sa iyo ng praktikal na konsepto ng pag-interfaces ng maraming mga aparato sa mga microcontroller gamit ang komunikasyon ng I2C. Kung mayroon kang anumang pagdududa sa pamamaraang interfacing ng protocol na ito, maaabot mo kami sa pamamagitan ng pagbibigay ng puna sa ibaba.