Cara Menghubungkan I2C-EEPROM dengan Mikrokontroler 8051

Coba Instrumen Kami Untuk Menghilangkan Masalah





Istilah I2C atau singkatan IIC adalah sebuah inter sirkuit terpadu dan itu disebut sebagai I squared C. I2C adalah bus komputer serial , yang ditemukan oleh semikonduktor NXP sebelumnya dinamai semikonduktor Philips. Bus I2C digunakan untuk memasang sirkuit terintegrasi periferal berkecepatan rendah mikrokontroler dan prosesor . Pada tahun 2006, untuk mengimplementasikan protokol I2C tidak diperlukan biaya lisensi. Tetapi biaya diperlukan untuk mendapatkan alamat slave I2C yang ditetapkan oleh semikonduktor NXP.

Beberapa pesaing seperti Texas Instruments, Siemens AG, NEC, Motorola, Intersil dan STMicroelectronics telah mengumumkan produk I²C yang cocok untuk pasar pada pertengahan 1990-an. Pada tahun 1995, SMBus didefinisikan oleh Intel, yaitu subgrup I²C yang menyatakan protokolnya lebih ketat. Tujuan utama SMBus adalah untuk mendukung interoperabilitas dan ketahanan. Oleh karena itu, sistem I²C saat ini menyertakan aturan dan kebijakan dari SMBus, terkadang mendukung I2C dan SMBus dengan konfigurasi ulang yang minimal.




Bus I2C

Bus I2C

Antarmuka Bus-EEPROM I2C dengan Mikrokontroler 8051

Apa itu Bus I2C

Bus I2c menggunakan dua jalur saluran terbuka dua arah seperti SDA (jalur data serial) dan SCl (jalur jam serial) dan ini ditarik dengan resistor. Bus I2C mengizinkan perangkat master untuk memulai komunikasi dengan perangkat pendukung. Data dipertukarkan antara dua perangkat ini. Tegangan tipikal yang digunakan adalah + 3,3V atau + 5V meskipun sistem dengan tegangan tambahan diperbolehkan.



Antarmuka I2C

Antarmuka I2C

EEPROM

ROM yang Dapat Diprogram Secara Elektrik (EEPROM) adalah ROM yang dapat dimodifikasi pengguna yang dapat dihapus dan sering diprogram ulang melalui penerapan tegangan listrik yang lebih tinggi dari normal. EEPROM adalah sejenis memori non-volatile yang digunakan dalam perangkat elektronik seperti komputer untuk menyimpan sejumlah kecil data yang harus disimpan saat daya dilepas.

8051 Papan Slicker

Papan Slicker 8051 dirancang khusus untuk membantu mahasiswa teknik di bidang sistem tertanam . Kit ini dirancang sedemikian rupa sehingga semua fitur 8051 mikrokontroler kemungkinan akan digunakan oleh siswa. Papan striker ini mendukung ISP (In System Programming) yang dilakukan melalui port serial. Kit ini dan 8051 dari NXP diusulkan untuk memperlancar kemajuan debugging dari banyak desain di sekitar mikrokontroler kecepatan 8-bit.

Antarmuka I2C - EEPROM

Gambar berikut menunjukkan antarmuka I2C-EEPROM dengan mikrokontroler 8.051. Di sini, I2C adalah protokol master-slave, yang menyertakan data bersama dengan clock pulse. Biasanya, perangkat master mengganti garis jam, SCL. Baris ini mengatur waktu data yang ditransfer pada bus I2C. Jika jam tidak dioperasikan, tidak ada data yang akan ditransfer. Semua budak dikendalikan oleh jam yang sama, SCL.


Antarmuka I2C - EEPROM

Antarmuka I2C - EEPROM

Bus I2C mendukung berbagai perangkat di mana setiap perangkat diidentifikasi dengan alamat unik apakah itu driver LCD, kartu memori, mikrokontroler atau antarmuka keyboard yang dapat beroperasi sebagai Tx atau Rx tergantung pada fungsi perangkat. Kontroler dirancang untuk mengontrol perangkat EEPROM melalui protokol I2C. Di sini, protokol I2C bekerja sebagai perangkat master dan mengatur EEPROM dan bekerja sebagai budak. Operasi R / W mahir dengan mentransfer satu set sinyal kontrol yang terdiri dari bus data alamat AND / OR. Sinyal ini harus diikuti dengan sinyal jam yang sesuai

Antarmuka Bus-EEPROM I2C dengan Mikrokontroler 8051

Jika Anda ingin membaca, Tulis dan Hapus EEPROM dengan menggunakan bus I2C di papan striker 8051. Interfacing dari I2 Bus-EEPROM dengan Mikrokontroler 8.051 sangat sederhana . Pengoperasian interfacing ini adalah mengirim sinyal seperti WRITE, diikuti oleh data dan bus alamat. Dalam operasi ini, EEPROM digunakan untuk menyimpan data. Dalam kit 8051, dua nomor jalur EEPROM diatur oleh driver yang didukung I2C. SCL dan SDA terhubung ke IC EEPROM serial berbasis I2C.

Antarmuka Bus-EEPROM I2C dengan Mikrokontroler 8051

Antarmuka Bus-EEPROM I2C dengan Mikrokontroler 8051

Dengan menggunakan jalur SDA dan SCL I2C, operasi baca dan tulis EEPROM dilakukan di 8051 Slicker Kit

Antarmuka I2C sangat sederhana dan di setiap data Baca / Tulis di EEPROM. Penundaan ini bergantung pada kompiler bagaimana cara meningkatkan loop segera setelah Anda membuat perubahan dalam pilihan penundaan bervariasi.

Kode Sumber untuk Interfacing I2C

#include
#include
#include

# Tentukan ACK 1
#define NO_ACK 0

unsigned char i
unsigned char EData [5]
Data unsigned char
void InitSerial (void)
void DelayMs (unsigned int)
batal WriteI2C (unsigned char)
batal Mulai (batal)
batal Berhenti (batal)
void ReadBYTE (unsigned int)
batal WriteBYTE (unsigned int)
unsigned char ReadI2C (bit)

sbit SCL = P2 ^ 0 // terhubung ke pin SCL (Jam)
sbit SDA = P2 ^ 1 // terhubung ke pin SDA (Data)

// —————————————
// Program utama
// —————————————
void main (void)
{
InitSerial () // Inisialisasi port serial
putchar (0x0C) // hapus hyper terminal
DelayMs (5)
WriteBYTE (0x0000)
WriteI2C (‘A’) // Tulis Data Ada di Sini
WriteI2C ('B')
WriteI2C ('C')
WriteI2C ('D')
WriteI2C ('E')
WriteI2C ('F')
Berhenti()
DelayMs (10)

ReadBYTE (0x0000)
EData [0] = ReadI2C (NO_ACK)
EData [1] = ReadI2C (NO_ACK)
EData [2] = ReadI2C (NO_ACK)
EData [3] = ReadI2C (NO_ACK)
EData [4] = ReadI2C (NO_ACK)
EData [5] = ReadI2C (NO_ACK)

untuk (i = 0i<6i++)
{
printf (“value =% c n”, EData [i]) // tampilkan data * /
DelayMs (100)
}

sementara (1)
}

// —————————————
// Inisialisasi port serial
// —————————————
void InitSerial (void)
{
SCON = 0x52 // atur kontrol port serial
TMOD = 0x20 // perangkat keras (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Timer 1 aktif
}

// ——————————-
// mulai I2C
// ——————————-
batal Mulai (batal)
{
SDA = 1
SCL = 1
_button _ () _ nop_ ()
SDA = 0
_button _ () _ nop_ ()
SCL = 0
_button _ () _ nop_ ()
}

// ——————————-
// hentikan I2C
// ——————————-
batal Berhenti (batal)
{
SDA = 0
_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SDA = 1
}

// ——————————-
// Tulis I2C
// ——————————-
void WriteI2C (Data karakter unsigned)
{

untuk (i = 0i<8i++)
{
SDA = (Data & 0x80)? 1: 0
SCL = 1SCL = 0
Data<<=1
}

SCL = 1
_button _ () _ nop_ ()
SCL = 0

}

// ——————————-
// Baca I2C
// ——————————-
ReadI2C karakter tidak bertanda tangan (bit ACK_Bit)
{

Mulailah()
WriteI2C (0xA1)

SDA = 1
untuk (i = 0i<8i++)

SCL = 1
Data<<= 1
Tanggal = (Tanggal

jika (ACK_Bit == 1)
SDA = 0 // Kirim ACK
lain
SDA = 1 // Kirim NO ACK

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Berhenti()
mengembalikan Data
}

// ——————————-
// Membaca 1 byte dari I2C
// ——————————-
void ReadBYTE (unsigned int Addr)
{
Mulailah()
WriteI2C (0xA0)
WriteI2C ((unsigned char) (Addr >> 8) & 0xFF)
WriteI2C ((unsigned char) Addr & 0xFF)
}

// ——————————-
// Tulis 1 byte ke I2C
// ——————————-
batal WriteBYTE (unsigned int Addr)
{
Mulailah()
WriteI2C (0xA0)
WriteI2C ((unsigned char) (Addr >> 8) & 0xFF) // kirim alamat high
WriteI2C ((unsigned char) Addr & 0xFF) // kirim alamat rendah
}

// —————————————
// Tunda fungsi mS
// —————————————
batal DelayMs (jumlah int unsigned)
{// Penundaan mSec 11,0592 Mhz
unsigned int i // Keil v7.5a
sementara (menghitung)
{
i = 115
sementara (i> 0) i–
menghitung-
}
}

Jadi, ini semua tentang implementasi antarmuka I2C. Kami berharap Anda lebih memahami konsep ini. Selanjutnya, setiap pertanyaan tentang konsep ini atau perangkat penghubung tolong berikan saran berharga Anda dengan berkomentar di bagian komentar di bawah.