Tutorial protokol bus I2C, Antarmuka dengan aplikasi

Tutorial protokol bus I2C, Antarmuka dengan aplikasi

Saat ini protokol memainkan peran penting dalam file desain sistem tertanam . Tanpa pergi ke protokol, jika Anda ingin memperluas fitur periferal mikrokontroler, kerumitan dan konsumsi daya akan meningkat. Ada berbagai jenis protokol bus yang tersedia seperti USART, SPI, CAN, Protokol bus I2C , dll., yang digunakan untuk mentransfer data antara dua sistem.



Protokol I2C

Apa itu Bus I2C?


Mengirim dan menerima informasi antara dua atau lebih dari dua perangkat memerlukan jalur komunikasi yang disebut sistem bus. Bus I2C adalah bus serial dua kabel dua arah yang digunakan untuk mengangkut data antara sirkuit terintegrasi. I2C adalah singkatan dari 'Inter Integrated Circuit'. Ini pertama kali diperkenalkan oleh semikonduktor Philips pada tahun 1982. Bus I2C terdiri dari tiga kecepatan transfer data seperti standar, mode cepat dan mode kecepatan tinggi. Bus I2C mendukung perangkat ruang alamat 7-bit dan 10-bit dan operasinya berbeda dengan tegangan rendah.





Protokol Bus I2c

Protokol Bus I2c

Garis Sinyal I2C



Garis Sinyal I2C

Garis Sinyal I2C

I2C adalah protokol bus serial yang terdiri dari dua jalur sinyal seperti jalur SCL dan SDL yang digunakan untuk berkomunikasi dengan perangkat. SCL adalah singkatan dari 'serial clock line' dan sinyal ini selalu digerakkan oleh 'perangkat master'. SDL adalah singkatan dari 'serial data line', dan sinyal ini digerakkan oleh master atau periferal I2C. Kedua jalur SCL dan SDL ini berada dalam kondisi drainase terbuka ketika tidak ada transfer antara periferal I2C.

Output Pembuangan Terbuka


Saluran terbuka adalah konsep transistor FET dimana terminal drain dari transistor dalam keadaan terbuka. Pin SDL dan SCL perangkat master dirancang dengan transistor dalam keadaan terbuka, sehingga transfer data hanya dapat dilakukan jika transistor ini dilakukan. Oleh karena itu, saluran atau terminal drain ini dihubungkan secara menyeluruh resistor pull-up ke VCC untuk mode konduksi.

Antarmuka I2C

Banyak perangkat budak dihubungkan ke mikrokontroler dengan bantuan bus I2C melalui IC level shifter I2C untuk mentransfer informasi di antara mereka. Protokol I2C digunakan untuk menghubungkan maksimal 128 perangkat yang semuanya terhubung untuk berkomunikasi dengan jalur SCL dan SDL dari unit master serta perangkat pendukung. Ini mendukung komunikasi Multimaster, yang berarti dua master digunakan untuk mengkomunikasikan perangkat eksternal.

Tarif Transfer Data I2C

Protokol I2C mengoperasikan tiga mode yaitu: mode cepat, mode kecepatan tinggi dan mode standar dimana kecepatan data mode standar berkisar 0Hz hingga 100Hz, dan data mode cepat dapat ditransfer dengan kecepatan 0Hz hingga 400 KHz dan mode kecepatan tinggi dengan 10 KHz hingga 100KHz. Data 9-bit dikirim untuk setiap transfer dimana 8-bit dikirim oleh MSB pemancar ke LSB, dan bit ke-9 adalah bit pengakuan yang dikirim oleh penerima.

Tarif Transfer Data I2C

Tarif Transfer Data I2C

Komunikasi I2C

Protokol bus I2C paling sering digunakan dalam komunikasi master dan slave dimana master disebut 'mikrokontroler', dan slave disebut perangkat lain seperti ADC, EEPROM, DAC dan perangkat serupa di sistem tertanam. Jumlah perangkat slave terhubung ke perangkat master dengan bantuan bus I2C, di mana setiap slave terdiri dari alamat unik untuk mengkomunikasikannya. Langkah-langkah berikut digunakan untuk mengkomunikasikan perangkat master ke budak:

Langkah 1: Pertama, perangkat master mengeluarkan kondisi awal untuk memberi tahu semua perangkat slave sehingga mereka mendengarkan pada jalur data serial.

Langkah 2: Perangkat master mengirimkan alamat perangkat slave target yang dibandingkan dengan semua alamat perangkat slave yang terhubung ke jalur SCL dan SDL. Jika ada alamat yang cocok, perangkat itu dipilih, dan semua perangkat yang tersisa diputus dari jalur SCL dan SDL.

Step3: Perangkat slave dengan alamat yang cocok yang diterima dari master, merespons dengan pengakuan ke master setelah komunikasi terjalin antara perangkat master dan slave pada bus data.

Step4: Baik master dan slave menerima dan mengirimkan data tergantung pada apakah komunikasi dibaca atau ditulis.

Step5: Kemudian, master dapat mengirimkan data 8-bit ke penerima yang membalas dengan pengakuan 1-bit.

Tutorial I2C

Mengirim dan menerima informasi selangkah demi selangkah secara serial sehubungan dengan pulsa jam disebut protokol I2C. Ini adalah protokol antar sistem dan jarak pendek, yang artinya, digunakan di dalam papan sirkuit untuk mengkomunikasikan perangkat master dan slave.

Dasar-dasar Protokol I2C

Secara umum, sistem bus I2C terdiri dari dua kabel yang digunakan dengan mudah untuk memperluas fitur perangkat input dan output seperti ADC, EEROM dan RTC, dan komponen dasar lainnya untuk membuat sistem yang kompleksitasnya sangat kurang.

Contoh: Karena mikrokontroler 8051 tidak memiliki ADC built-in - jadi, jika kita ingin menghubungkan sensor analog ke mikrokontroler 8051 - kita harus menggunakan perangkat ADC seperti ADC saluran ADC0804-1, ADC saluran ADC0808- 8, dll. Dengan menggunakan ADC ini, kita dapat menghubungkan sensor analog ke mikrokontroler.

Tanpa menggunakan protokol untuk memperluas fitur I / O dari mikrokontroler atau prosesor apa pun, kita dapat menggunakan perangkat 8-pin ICit 8255. Itu Mikrokontroler 8051 adalah mikrokontroler 40-pin dengan menggunakan IC 8255, kita dapat memperluas port 3-I / O dengan 8-pin di setiap port. Dengan menggunakan semua perangkat seperti RTC, ADC, EEPROM, Timer, dll. - untuk memperluas sirkuit periferal - kompleksitas, biaya, konsumsi daya, dan ukuran produk juga meningkat.

Untuk mengatasi masalah ini, konsep protokol masuk ke dalam gambar untuk mengurangi kompleksitas perangkat keras dan konsumsi daya. Kami dapat memperluas lebih banyak fitur, seperti periferal I / 0, ADC, T / C dan perangkat memori hingga 128 perangkat dengan menggunakan protokol I2C ini.
Terminologi yang Digunakan dalam Protokol I2C

Pemancar: Perangkat yang mengirimkan data ke bus disebut transmitter.

Penerima: Perangkat yang menerima data dari bus disebut penerima.

Menguasai: Perangkat yang memulai transfer untuk menghasilkan sinyal clock dan menghentikan transfer disebut master.

Budak: Perangkat yang dialamatkan oleh seorang master disebut budak.

Multimaster: Lebih dari satu master dapat mencoba untuk mengontrol bus pada saat yang sama tanpa merusak pesan yang disebut Multimaster.

Arbitrasi: Prosedur untuk memastikan bahwa, jika lebih dari satu master secara bersamaan mencoba mengendalikan bus - hanya satu yang diizinkan untuk melakukannya sehingga pesan pemenang tidak rusak.

Sinkronisasi: Prosedur untuk menyinkronkan single jam dari dua atau lebih perangkat disebut sinkronisasi.

Urutan Perintah Dasar I2C

  1. Mulai Kondisi Bit
  2. Kondisi Bit Berhenti
  3. Kondisi Pengakuan
  4. Master ke budak Operasi Write
  5. Baca Operasi Slave to Master

Mulai dan Hentikan Kondisi Bit

Ketika master (mikrokontroler) ingin berbicara dengan perangkat pendukung (misalnya ADC), ia memulai komunikasi dengan mengeluarkan kondisi start pada bus I2C, dan kemudian mengeluarkan kondisi berhenti. Level logika start dan stop I2C ditunjukkan pada gambar.

Kondisi awal I2C didefinisikan sebagai transisi tinggi ke rendah dari garis SDA sedangkan garis SCL tinggi. Kondisi stop I2C terjadi ketika garis SDA beralih dari rendah ke tinggi sedangkan garis SCL tinggi.

Master I2C selalu menghasilkan kondisi S dan P. Setelah master I2C memulai kondisi START, bus I2c dianggap dalam keadaan sibuk.

Mulai dan Hentikan Kondisi Bit

Mulai dan Hentikan Kondisi Bit

Pemrograman:

MULAI Condtion:

sbit SDA = P1 ^ 7 // menginisialisasi pin SDA dan SCL mikrokontroler //
sbit SCL = P1 ^ 6
void delay (unsigned int)
void main ()
{
SDA = 1 // memproses data //
SCL = 1 // jam tinggi //
menunda()
SDA = 0 // mengirim data //
menunda()
SCL = 0 // sinyal clock rendah //
}
Void delay (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}

Kondisi STOP:

void main ()
{
SDA = 0 // Berhenti memproses data //
SCL = 1 // jam tinggi //
menunda()
SDA = 1 // Berhenti //
menunda()
SCL = 0 // sinyal clock rendah //
}
Void delay (int p)
{
unsignedinta, b
Untuk (a = 0a<255a++) //delay function//
Untuk (b = 0b}

Kondisi Pengakuan (ACK) dan Tanpa Pengakuan (NCK)

Setiap byte yang dikirimkan melalui bus I2C diikuti dengan kondisi yang diakui dari penerima, yang berarti, setelah master menarik SCL rendah untuk menyelesaikan transmisi 8-bit, SDA akan ditarik rendah oleh penerima ke master. Jika, setelah transmisi penerima tidak menarik, garis SDA LOW dianggap sebagai kondisi NCK.

Pengakuan (ACK)

Pengakuan (ACK)

Pemrograman

Pengakuan
void main ()
{
SDA = 0 // Garis SDA pergi ke rendah //
SCL = 1 // jam dari tinggi ke rendah //
penundaan (100)
SCL = 0
}
Tidak Ada Pengakuan:
void main ()
{
SDA = 1 // Garis SDA menjadi tinggi //
SCL = 1 // jam dari tinggi ke rendah //
penundaan (100)
SCL = 0
}

Operasi Penulisan Master to Slave

Protokol I2C mentransfer data dalam bentuk paket atau byte. Setiap byte diikuti oleh bit pengakuan.

Format Transfer Data

Format Transfer Data

Format Transfer Data

Mulailah: Terutama, urutan transfer data yang diprakarsai oleh master yang menghasilkan kondisi awal.

Alamat 7-bit: Setelah itu master mengirimkan alamat slave dalam dua format 8-bit, bukan satu alamat 16-bit.

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

SAYANG: Jika operasi tulis dilakukan di perangkat slave, maka penerima mengirimkan ACK 1-bit ke mikrokontroler.

Berhenti: Setelah menyelesaikan operasi tulis di perangkat slave, mikrokontroler mengirimkan kondisi berhenti ke perangkat slave.

Pemrograman

Operasi Tulis

voidwrite (unsigned char d)
{
Karakter tak bertanda k, j = 0x80
Untuk (k = 0k<8k++)
{
SDA = (d & j)
J = j >> 1
SCL = 1
penundaan (4)
SCL = 0
}
SDA = 1
SCL = 1
penundaan (2)
c = SDA
penundaan (2)
SCL = 0
}

Operasi Baca Master ke Slave

Data dibaca kembali dari perangkat pendukung dalam bentuk bit atau byte - baca bit paling signifikan terlebih dahulu dan baca bit paling signifikan terakhir.

Format Baca Data

Format Baca Data

Format Baca Data

Mulailah: Pada dasarnya, urutan transfer data diprakarsai oleh master yang menghasilkan kondisi awal.

Alamat 7-bit: Setelah itu master mengirimkan alamat slave dalam dua format 8-bit, bukan satu alamat 16-bit.

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

SAYANG: Jika operasi tulis dilakukan di perangkat slave, maka penerima mengirimkan ACK 1-bit ke mikrokontroler.

Berhenti: Setelah menyelesaikan operasi tulis di perangkat slave, mikrokontroler mengirimkan kondisi berhenti ke perangkat slave.

Pemrograman

Batal baca ()
{
Karakter tak bertanda tangan j, z = 0x00, q = 0x80
SDA = 1
untuk (j = 0j<8j++)
{
SCL = 1
penundaan (100)
flag = SDA
jika (bendera == 1)
q)
q = q >> 1
penundaan (100)
SCL = 0

Contoh Praktis Menghubungkan ADC ke Mikrokontroler 8051

ADC merupakan perangkat yang digunakan untuk mengubah data analog menjadi bentuk digital dan digital ke analog. Mikrokontroler 8051 tidak memiliki ADC inbuilt sehingga kita harus menambahkan secara eksternal melalui protokol I2C. PCF8591 adalah berbasis I2C analog ke digital dan konverter digital ke analog. Perangkat ini dapat mendukung maksimal 4 saluran input analog bersama dengan tegangan 2,5 hingga 6v.

Output Analog

Output analog datang dalam bentuk voltase. Misalnya, sensor analog 5v memberikan logika keluaran 0,01v hingga 5v.
Nilai digital maksimum 5v adalah = 256.
Nilai 2.5v = 123 sesuai dengan nilai tegangan maksimum.

Rumus keluaran analog adalah:

Rumus Keluaran Digital:

Menghubungkan ADC ke Mikrokontroler 8051

Menghubungkan ADC ke Mikrokontroler 8051

Gambar di atas menunjukkan transfer data menggunakan protokol I2C dari perangkat ADC ke mikrokontroler 8051. Pin ADC SCL dan SDA dihubungkan ke pin 1.7 dan 1.6 mikrokontroler untuk menjalin komunikasi di antara keduanya. Ketika sensor memberikan nilai analog ke ADC, itu diubah menjadi digital dan mentransfer data ke mikrokontroler melalui protokol I2C.

Ini tentang tutorial protokol bus I2C dengan program yang sesuai. Kami berharap konten yang diberikan memberi Anda konsep praktis untuk menghubungkan beberapa perangkat dengan mikrokontroler menggunakan komunikasi I2C. Jika Anda memiliki keraguan dalam prosedur interfacing protokol ini, Anda dapat menghubungi kami dengan berkomentar di bawah ini.