8051 Mikrodenetleyici ile I2C-EEPROM Arabirimi Nasıl Yapılır

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





I2C veya IIC kısaltması terim arası entegre devre ve C'nin karesi olarak adlandırılır. I2C bir seri bilgisayar veri yoludur Daha önce NXP yarı iletkenleri tarafından icat edilen, Philips yarı iletkenleri olarak adlandırılıyor. I2C veriyolu, düşük hızlı çevresel entegre devreleri mikro denetleyiciler ve işlemciler . 2006 yılında I2C protokolünü uygulamak için herhangi bir lisans ücreti gerekmemektedir. Ancak NXP yarı iletkenleri tarafından atanan I2C köle adresini almak için ücret gereklidir.

Texas Instruments, Siemens AG, NEC, Motorola, Intersil ve STMicroelectronics gibi bazı rakipler, 1990'ların ortalarında piyasaya çok uygun I²C ürünlerini duyurdu. 1995 yılında SMBus, protokollerin daha katı olduğunu belirten bir I²C alt grubu olan Intel tarafından tanımlandı. SMBus'un temel amacı birlikte çalışabilirliği ve sağlamlığı desteklemektir. Bu nedenle, mevcut I²C sistemleri SMBus'un kurallarını ve politikalarını içerir, bazen hem I2C'yi hem de SMBus'u minimum yeniden yapılandırmayla destekler.




I2C Otobüs

I2C Otobüs

8051 Mikrodenetleyicili I2C Bus-EEPROM Arayüzü

I2C Bus nedir

I2c veriyolu, SDA (seri veri hattı) ve SCl (seri saat hattı) gibi iki çift yönlü açık tahliye hattı kullanır ve bunlar dirençlerle yukarı çekilir. I2C veriyolu, bir ana cihazın bir bağımlı cihazla iletişim kurmasına izin verir. Veriler bu iki cihaz arasında değiş tokuş edilir. Kullanılan tipik voltajlar + 3.3V veya + 5V olmakla birlikte ekstra voltajlı sistemlere izin verilmektedir.



I2C Arayüzü

I2C Arayüzü

EEPROM

Elektrikle Silinebilir Programlanabilir ROM (EEPROM), normalden daha yüksek elektrik voltajı uygulamasıyla sık sık çıkarılıp yeniden programlanabilen, kullanıcı tarafından değiştirilebilir bir ROM'dur. EEPROM, güç kesildiğinde kaydedilmesi gereken küçük miktarlarda veriyi depolamak için bilgisayarlar gibi elektronik cihazlarda kullanılan geçici olmayan bir bellektir.

8051 Slicker Kurulu

8051 Slicker kurulu, özellikle teknik öğrencilere aşağıdaki alanlarda yardımcı olmak için tasarlanmıştır. gömülü sistemler . Bu kit, tüm özellikleri içerecek şekilde tasarlanmıştır. 8051 mikrodenetleyici muhtemelen öğrenciler tarafından kullanılacaktır. Bu grev kartı, seri port üzerinden yapılan ISP'yi (In System Programming) destekler. Bu kit ve NXP'den 8051, hızlı 8 bit mikro denetleyicileri çevreleyen birçok tasarımın hata ayıklama sürecini yumuşatmak için önerilmiştir.

I2C - EEPROM Arayüzü

Aşağıdaki şekil I2C-EEPROM ile 8051 mikrodenetleyicinin arayüzünü göstermektedir. Burada I2C, verileri saat darbesiyle birlikte içeren bir master-slave protokolüdür. Tipik olarak, ana cihaz saat hattı SCL'yi değiştirdi. Bu satır, I2C veriyolunda aktarım yapan veri zamanlamasını sıralar. Saat çalıştırılmadıkça hiçbir veri aktarılmaz. Tüm bağımlı birimler aynı saat, SCL tarafından kontrol edilir.


I2C - EEPROM Arayüzü

I2C - EEPROM Arayüzü

I2C veriyolu çeşitli cihazları destekler her bir cihaz, ister bir LCD sürücüsü, ister hafıza kartı, ister mikro denetleyici olsun, benzersiz bir adresle tanımlanır. klavye arabirimi Tx veya Rx olarak çalışabilen, cihazın çalışmasına bağlıdır. Kontrolör, EEPROM cihazını I2C protokolü aracılığıyla kontrol etmek için tasarlanmıştır. Burada I2C protokolü bir ana cihaz olarak çalışır ve EEPROM'u düzenler ve bir slave olarak çalışır. R / W işlemleri, adres VE / VEYA veri yolunu içeren bir dizi kontrol sinyalinin aktarılmasıyla yeterli olur. Bu sinyallere uygun saat sinyalleri eşlik etmelidir

8051 Mikrodenetleyicili I2C Bus-EEPROM Arayüzü

Okumak istiyorsanız 8051 forvet tahtasında I2C bus kullanarak EEPROM yazıp siliniz. I2 Bus-EEPROM ile 8051 mikrodenetleyici çok basit . Bu arabirimin çalışması, WRITE gibi bir sinyal, ardından veri ve adres yolu göndermektir. Bu işlemde, verileri saklamak için EEPROM kullanılır. 8051 kitinde, iki sayıda EEPROM hattı I2C destekli sürücüler tarafından düzenlenir. SCL ve SDA, I2C tabanlı seri EEPROM IC'ye bağlanır.

8051 Mikrodenetleyicili I2C Bus-EEPROM Arayüzü

8051 Mikrodenetleyicili I2C Bus-EEPROM Arayüzü

SDA ve SCL I2C hatları kullanılarak, EEPROM'un okuma ve yazma işlemleri 8051 Slicker Kit'te yapılır.

I2C'nin arabirimi çok basittir ve EEPROM'da her bir veride Okuma / Yazma. Gecikme, derleyiciye bağlıdır, seçeneklerde değişiklik yapar yapmaz döngüleri nasıl geliştirdiğine bağlıdır, gecikme değişir.

I2C Arabirimi için Kaynak Kodu

#Dahil etmek
#Dahil etmek
#Dahil etmek

#define ACK 1
#define NO_ACK 0

imzasız karakter i
imzasız karakter EData [5]
işaretsiz karakter Verileri
void InitSerial (void)
void DelayMs (unsigned int)
void WriteI2C (işaretsiz karakter)
void Start (void)
void Durdur (void)
void ReadBYTE (unsigned int)
void WriteBYTE (unsigned int)
işaretsiz karakter ReadI2C (bit)

sbit SCL = P2 ^ 0 // SCL pinine bağlan (Saat)
sbit SDA = P2 ^ 1 // SDA pinine bağlanın (Veri)

// —————————————
// Ana program
// —————————————
void main (void)
{
InitSerial () // Seri bağlantı noktasını başlat
putchar (0x0C) // hiper terminali temizle
GecikmeMs (5)
Yazma BYTE (0x0000)
WriteI2C (‘A’) // Verileri Buraya Yazın
WriteI2C ('B')
WriteI2C ('C')
WriteI2C ('D')
WriteI2C ('E')
WriteI2C ('F')
Dur()
GecikmeMs (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)

için (i = 0i<6i++)
{
printf ('değer =% c n', EData [i]) // verileri göster * /
GecikmeMs (100)
}

süre (1)
}

// —————————————
// Seri bağlantı noktasını başlat
// —————————————
void InitSerial (void)
{
SCON = 0x52 // seri bağlantı noktası kontrolünü ayarla
TMOD = 0x20 // donanım (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // Zamanlayıcı 1 açık
}

// ———————————-
// I2C'yi başlat
// ———————————-
void Start (void)
{
SDA = 1
SCL = 1
_button _ () _ nop_ ()
SDA = 0
_button _ () _ nop_ ()
SCL = 0
_button _ () _ nop_ ()
}

// ———————————-
// I2C'yi durdur
// ———————————-
void Durdur (void)
{
SDA = 0
_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SDA = 1
}

// ———————————-
// I2C yaz
// ———————————-
void WriteI2C (işaretsiz karakter Verileri)
{

için (i = 0i<8i++)
{
SDA = (Veri ve 0x80)? 1: 0
SCL = 1SCL = 0
Veri<<=1
}

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

}

// ———————————-
// I2C'yi okuyun
// ———————————-
işaretsiz karakter ReadI2C (bit ACK_Bit)
{

Başlat()
YazmaI2C (0xA1)

SDA = 1
için (i = 0i<8i++)

SCL = 1
Veri<<= 1
Tarih = (Tarih

eğer (ACK_Bit == 1)
SDA = 0 // ACK gönder
Başka
SDA = 1 // ACK YOK gönder

_button _ () _ nop_ ()
SCL = 1
_button _ () _ nop_ ()
SCL = 0
Dur()
Verileri döndür
}

// ———————————-
// 1 bayt I2C formunu okuyun
// ———————————-
void ReadBYTE (unsigned int Addr)
{
Başlat()
YazmaI2C (0xA0)
WriteI2C ((işaretsiz karakter) (Addr >> 8) & 0xFF)
WriteI2C ((işaretsiz karakter) Addr ve 0xFF)
}

// ———————————-
// I2C'ye 1 bayt yaz
// ———————————-
void WriteBYTE (unsigned int Addr)
{
Başlat()
YazmaI2C (0xA0)
WriteI2C ((işaretsiz karakter) (Addr >> 8) & 0xFF) // yüksek adres gönder
WriteI2C ((işaretsiz karakter) Addr & 0xFF) // adresi düşük gönder
}

// —————————————
// mS işlevini geciktir
// —————————————
void DelayMs (işaretsiz int sayısı)
{// mSec Gecikmesi 11.0592 Mhz
işaretsiz int i // Keil v7.5a
süre (sayım)
{
i = 115
süre (i> 0) i–
Miktar-
}
}

Dolayısıyla, bu tamamen I2C arayüzünün uygulanmasıyla ilgilidir. Bu kavramı daha iyi anladığınızı umuyoruz. Ayrıca, bu konseptle ilgili herhangi bir sorunuz veya arayüz cihazları lütfen aşağıdaki yorum bölümünde yorum yaparak değerli önerilerinizi iletin.