Tutorial protokol bas I2C, Antaramuka dengan aplikasi

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Pada masa ini protokol memainkan peranan penting dalam reka bentuk sistem tertanam . Tanpa pergi ke protokol, jika anda ingin memperluas ciri-ciri perisian mikrokontroler, kerumitan dan penggunaan kuasa akan meningkat. Terdapat pelbagai jenis protokol bas yang tersedia seperti USART, SPI, CAN, Protokol bas I2C , dll., yang digunakan untuk memindahkan data antara dua sistem.

Protokol I2C

Apakah Bas I2C?




Memancarkan dan menerima maklumat antara dua atau lebih daripada dua peranti memerlukan jalan komunikasi yang disebut sebagai sistem bas. Bas I2C adalah bas bersiri dua wayar dua arah yang digunakan untuk mengangkut data antara litar bersepadu. I2C bermaksud 'Inter Integrated Circuit'. Ia pertama kali diperkenalkan oleh semikonduktor Philips pada tahun 1982. Bas I2C terdiri daripada tiga kelajuan pemindahan data seperti mod standard, fast-mode dan high-speed-mode. Bas I2C menyokong peranti ruang alamat 7-bit dan 10-bit dan operasinya berbeza dengan voltan rendah.

Protokol Bas I2c

Protokol Bas I2c



Garis Isyarat I2C

Garis Isyarat I2C

Garis Isyarat I2C

I2C adalah protokol bas bersiri yang terdiri daripada dua garis isyarat seperti garis SCL dan SDL yang digunakan untuk berkomunikasi dengan peranti. SCL bermaksud 'garis jam bersiri' dan isyarat ini selalu didorong oleh 'peranti induk'. SDL bermaksud 'garis data bersiri', dan isyarat ini dipacu oleh periferal induk atau I2C. Kedua-dua garis SCL dan SDL ini berada dalam keadaan longkang terbuka ketika tidak ada perpindahan antara periferal I2C.

Keluaran Saliran Terbuka


Saliran terbuka adalah konsep untuk transistor FET di mana terminal saliran transistor adalah keadaan terbuka. Pin SDL dan SCL pada peranti induk direka dengan transistor dalam keadaan terbuka, jadi pemindahan data hanya mungkin dilakukan ketika transistor ini dijalankan. Oleh itu, saluran atau terminal saliran ini disambungkan resistor penarik ke VCC untuk mod konduksi.

Antaramuka I2C

Banyak peranti hamba dihubungkan ke mikrokontroler dengan bantuan bas I2C melalui IC shifter level I2C untuk memindahkan maklumat antara mereka. Protokol I2C digunakan untuk menghubungkan maksimum 128 peranti yang semuanya disambungkan untuk berkomunikasi dengan garis SCL dan SDL dari unit induk dan juga peranti hamba. Ia menyokong komunikasi Multimaster, yang bermaksud dua master digunakan untuk menyampaikan peranti luaran.

Kadar Pemindahan Data I2C

Protokol I2C mengoperasikan tiga mod seperti: mod cepat, mod berkelajuan tinggi dan mod standard di mana kelajuan data mod standard berkisar 0Hz hingga 100Hz, dan data mod pantas dapat memindahkan dengan kelajuan 0Hz hingga 400 KHz dan mod kelajuan tinggi dengan 10 KHz hingga 100KHz. Data 9-bit dihantar untuk setiap pemindahan di mana 8-bit dihantar oleh pemancar MSB ke LSB, dan bit ke-9 adalah bit pengakuan yang dihantar oleh penerima.

Kadar Pemindahan Data I2C

Kadar Pemindahan Data I2C

Komunikasi I2C

Protokol bas I2C paling sering digunakan dalam komunikasi master dan slave di mana master disebut 'mikrokontroler', dan slave disebut perangkat lain seperti ADC, EEPROM, DAC dan peranti serupa dalam sistem embedded. Jumlah peranti hamba dihubungkan ke peranti induk dengan bantuan bas I2C, di mana setiap hamba terdiri daripada alamat unik untuk menyampaikannya. Langkah-langkah berikut digunakan untuk menyampaikan peranti induk kepada hamba:

Langkah 1: Pertama, peranti induk mengeluarkan syarat permulaan untuk memberitahu semua peranti hamba sehingga mereka mendengar pada baris data bersiri.

Langkah 2: Peranti induk menghantar alamat perangkat hamba sasaran yang dibandingkan dengan semua alamat peranti hamba yang dihubungkan ke garis SCL dan SDL. Sekiranya ada alamat yang sesuai, peranti itu dipilih, dan selebihnya semua peranti terputus dari garis SCL dan SDL.

Langkah 3: Peranti hamba dengan alamat yang sesuai yang diterima dari tuan, membalas dengan pengakuan kepada tuan setelah itu komunikasi dibuat antara kedua-dua peranti induk dan hamba pada bus data.

Langkah 4: Baik tuan dan hamba menerima dan menghantar data bergantung kepada sama ada komunikasi itu dibaca atau ditulis.

Langkah 5: Kemudian, master dapat menghantar data 8-bit ke penerima yang membalas dengan pengakuan 1-bit.

Tutorial I2C

Menghantar dan menerima maklumat secara bertahap bersiri berkenaan dengan denyutan jam disebut protokol I2C. Ini adalah protokol antara sistem dan jarak pendek, yang bermaksud, ia digunakan dalam papan litar untuk menyampaikan peranti master dan slave.

Asas Protokol I2C

Secara umum, sistem bas I2C terdiri daripada dua wayar yang digunakan dengan mudah untuk mengembangkan ciri-ciri input dan output periferal seperti ADC, EEROM dan RTC, dan komponen asas lain untuk membuat sistem yang kerumitannya sangat kurang.

Contoh: Oleh kerana mikrokontroler 8051 tidak mempunyai ADC terbina dalam - jadi, jika kita mahu menghubungkan sensor analog dengan mikrokontroler 8051 - kita harus menggunakan peranti ADC seperti saluran ADC0804-1 ADC, ADC0808- 8 saluran ADC, dll. Dengan menggunakan ADC ini, kita dapat menghubungkan antara sensor analog ke mikrokontroler.

Tanpa menggunakan protokol untuk memperluas ciri I / O mana-mana mikrokontroler atau pemproses, kita boleh pergi ke 8255 ICit 8-pin device. The 8051 mikrokontroler adalah mikrokontroler 40-pin dengan menggunakan IC 8255, kita dapat memperluas port 3-I / O dengan 8-pin di setiap port. Dengan menggunakan semua peranti seperti RTC, ADC, EEPROM, Timer, dan lain-lain - untuk memperluas litar periferal - kerumitan, kos, penggunaan kuasa dan ukuran produk juga meningkat.

Untuk mengatasi masalah ini, konsep protokol muncul untuk mengurangkan kerumitan perkakasan dan penggunaan kuasa. Kami dapat mengembangkan lebih banyak bilangan ciri, seperti periferal I / 0, ADC, T / C dan peranti memori hingga 128 peranti dengan menggunakan protokol I2C ini.
Terminologi Digunakan dalam Protokol I2C

Pemancar: Peranti yang menghantar data ke bus disebut pemancar.

Penerima: Peranti yang menerima data dari bas dipanggil penerima.

Tuan: Peranti yang memulakan pemindahan untuk menghasilkan isyarat jam dan menghentikan pemindahan disebut sebagai induk.

Hamba: Peranti yang ditujukan oleh tuan dipanggil hamba.

Multimaster: Lebih daripada satu tuan dapat berusaha mengawal bas pada masa yang sama tanpa merosakkan mesej yang disebut Multimaster.

Timbang Tara: Prosedur untuk memastikan bahawa, jika lebih dari satu tuan secara serentak cuba mengawal bas - hanya satu yang dibenarkan untuk melakukannya supaya mesej yang menang tidak rosak.

Penyegerakan: Prosedur untuk menyegerakkan jam tunggal dua atau lebih peranti dipanggil penyegerakan.

Urutan Perintah Asas I2C

  1. Mula Keadaan Bit
  2. Hentikan Keadaan Bit
  3. Syarat Pengakuan
  4. Master to slave Operasi tulis
  5. Baca Hamba Operasi untuk Menguasai

Mula dan Hentikan Keadaan Bit

Apabila master (mikrokontroler) ingin bercakap dengan peranti hamba (contohnya ADC), ia memulakan komunikasi dengan mengeluarkan syarat permulaan pada bas I2C, dan kemudian mengeluarkan keadaan berhenti. Tahap logik permulaan dan berhenti I2C ditunjukkan dalam gambar.

Keadaan permulaan I2C mendefinisikan sebagai peralihan tinggi ke rendah garis SDA sementara garis SCL tinggi. Keadaan berhenti I2C berlaku apabila garis SDA beralih dari rendah ke tinggi sementara garis SCL tinggi.

Master I2C selalu menghasilkan keadaan S dan P. Setelah master I2C memulakan keadaan MULAI, bas I2c dianggap berada dalam keadaan sibuk.

Mula dan Hentikan Keadaan Bit

Mula dan Hentikan Keadaan Bit

Pengaturcaraan:

MULAI Kondisi:

sbit SDA = P1 ^ 7 // memulakan pin SDA dan SCL mikrokontroler //
sbit SCL = P1 ^ 6
kelewatan tidak sah (int tidak ditandatangani)
kekosongan utama ()
{
SDA = 1 // memproses data //
SCL = 1 // jam tinggi //
kelewatan ()
SDA = 0 // menghantar data //
kelewatan ()
SCL = 0 // isyarat jam rendah //
}
Kelewatan tidak sah (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}

STOP Keadaan:

kekosongan utama ()
{
SDA = 0 // Berhenti memproses data //
SCL = 1 // jam tinggi //
kelewatan ()
SDA = 1 // Dihentikan //
kelewatan ()
SCL = 0 // isyarat jam rendah //
}
Kelewatan tidak sah (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}

Syarat Pengakuan (ACK) dan Tiada Pengakuan (NCK)

Setiap bait yang dihantar melalui bas I2C diikuti oleh keadaan pengakuan dari penerima, yang bermaksud, setelah master menarik SCL rendah untuk menyelesaikan transmisi 8-bit, SDA akan ditarik rendah oleh penerima ke induk. Sekiranya, selepas penghantaran penerima tidak menarik, garis SDA LOW dianggap sebagai keadaan NCK.

Ucapan Terima Kasih (ACK)

Ucapan Terima Kasih (ACK)

Pengaturcaraan

Ucapan terima kasih
kekosongan utama ()
{
SDA = 0 // Garis SDA menuju rendah //
SCL = 1 // jam tinggi ke rendah //
kelewatan (100)
SCL = 0
}
Tiada Pengakuan:
kekosongan utama ()
{
SDA = 1 // Garis SDA menuju ke tinggi //
SCL = 1 // jam tinggi ke rendah //
kelewatan (100)
SCL = 0
}

Operasi Master to Slave Writing

Protokol I2C memindahkan data dalam bentuk paket atau bait. Setiap bait diikuti dengan sedikit pengakuan.

Format Pemindahan Data

Format Pemindahan Data

Format Pemindahan Data

Mulakan: Terutamanya, urutan pemindahan data yang dimulakan oleh induk menghasilkan keadaan permulaan.

Alamat 7-bit: Selepas itu tuan menghantar alamat hamba dalam dua format 8-bit dan bukannya alamat 16-bit tunggal.

R / W: Sekiranya bit baca dan tulis tinggi, maka operasi tulis dilakukan.

MALANGNYA: Sekiranya operasi menulis dilakukan dalam peranti hamba, maka penerima akan menghantar ACK 1-bit ke mikrokontroler.

Berhenti: Setelah selesai operasi tulis di peranti hamba, mikrokontroler mengirimkan keadaan berhenti ke peranti hamba.

Pengaturcaraan

Tulis Operasi

voidwrite (tanda tidak ditandatangani d)
{
Char tidak bertanda tangan, j = 0x80
Untuk (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
kelewatan (4)
SCL = 0
}
SDA = 1
SCL = 1
kelewatan (2)
c = SDA
kelewatan (2)
SCL = 0
}

Operasi Master to Slave Read

Data dibaca kembali dari peranti hamba dalam bentuk bit atau bait - baca bit yang paling penting terlebih dahulu dan baca bit terakhir yang paling ketara.

Format Pembacaan Data

Format Pembacaan Data

Format Pembacaan Data

Mulakan: Terutamanya, urutan pemindahan data dimulakan oleh induk yang menghasilkan keadaan permulaan.

Alamat 7-bit: Selepas itu tuan menghantar alamat hamba dalam dua format 8-bit dan bukannya alamat 16-bit tunggal.

R / W: Sekiranya bit baca dan tulis rendah, maka operasi baca dilakukan.

MALANGNYA: Sekiranya operasi menulis dilakukan dalam peranti hamba, maka penerima akan menghantar ACK 1-bit ke mikrokontroler.

Berhenti: Setelah selesai operasi menulis di peranti hamba, mikrokontroler mengirimkan keadaan berhenti ke peranti hamba.

Pengaturcaraan

Batal baca ()
{
Char tidak bertanda tangan, z = 0x00, q = 0x80
SDA = 1
untuk (j = 0j<8j++)
{
SCL = 1
kelewatan (100)
bendera = SDA
jika (bendera == 1)
q)
q = q >> 1
kelewatan (100)
SCL = 0

Contoh Praktikal Interfacing ADC ke Mikrokontroler 8051

ADC adalah alat yang digunakan untuk menukar data analog ke dalam bentuk digital dan digital ke analog. Mikrokontroler 8051 tidak mempunyai ADC terbina dalam, jadi kita harus menambahkan secara luaran melalui protokol I2C. PCF8591 adalah berasaskan I2C analog ke digital dan penukar digital ke analog. Peranti ini dapat menyokong maksimum saluran input 4-analog bersama dengan voltan 2.5 hingga 6v.

Keluaran Analog

Output analog datang dalam bentuk voltan. Sebagai contoh, sensor analog 5v memberikan logik output dari 0.01v hingga 5v.
Nilai digital maksimum 5v ialah = 256.
Nilai 2.5v ialah = 123 mengikut nilai voltan maksimum.

Formula output analog adalah:

Formula Hasil Digital:

Memadankan ADC ke Mikrokontroler 8051

Memadankan ADC ke Mikrokontroler 8051

Gambar di atas menunjukkan pemindahan data menggunakan protokol I2C dari peranti ADC ke mikrokontroler 8051. Pin ADC SCL dan SDA disambungkan ke pin 1.7 dan 1.6 mikrokontroler untuk mewujudkan komunikasi di antara mereka. Apabila sensor memberikan nilai analog ke ADC, ia berubah menjadi digital dan memindahkan data ke mikrokontroler melalui protokol I2C.

Ini mengenai tutorial protokol bas I2C dengan program yang sesuai. Kami berharap bahawa kandungan yang diberikan memberi anda konsep praktikal untuk menghubungkan beberapa peranti dengan mikrokontroler menggunakan komunikasi I2C. Sekiranya anda mempunyai keraguan dalam prosedur antara muka protokol ini, anda boleh menghubungi kami dengan memberi komen di bawah.