I2C veri yolu — atama, cihaz, veri aktarımı, adresleme
Bir elektronik devre oluştururken, birçok geliştirici, bireysel bloklarını eşleştirmek, örneklemek ve adreslemek için çok sayıda ara yonga kullanma ihtiyacı ile karşı karşıya kalır. Philips, yardımcı yonga sayısını en aza indirmek için, 1980'lerde, tek bir cihazda birden çok yongayı yönetmek için özel olarak tasarlanmış, iki telli, çift yönlü bir I2C seri ağ arabirimi önerdi.
Bugün yalnızca Philips, çok çeşitli amaçlara sahip elektronik ekipman için yüzden fazla I2C uyumlu cihaz üretiyor: bellek, video işlemci sistemleri, analogdan dijitale ve dijitalden analoğa dönüştürücüler, ekran sürücüleri vb.
I2C veri yolu, seri 8 bitlik verileri normal "hızlı" modda 100 ila 400 kbps hızlarında iletebilen seri veri değişim protokolünün bir modifikasyonudur. Veri alışverişi işlemi burada yalnızca iki kablo üzerinde gerçekleştirilir (ortak kabloyu saymaz): Veri için SDA hattı ve senkronizasyon için SCL hattı.
Veri yoluna bağlı aygıtların çıkışlarının kaskadlarının açık kollektörlere veya kanallara sahip olması ve böylece VE kablolamasını çoğaltması nedeniyle veri yolu iki yönlü hale gelir. Sonuç olarak, veri yolu yongalar arasındaki bağlantı sayısını en aza indirerek kart üzerinde daha az gerekli pin ve iz bırakır. Sonuç olarak, kartın kendisinin üretimde daha basit, daha kompakt ve teknolojik olarak daha gelişmiş olduğu ortaya çıkıyor.
Bu protokol, adres kod çözücülerini ve diğer harici anlaşma mantığını devre dışı bırakmanıza izin verir. I2C veriyolunda aynı anda çalışabilen yonga sayısı, kapasitesiyle sınırlıdır - maksimum 400 pF.
I2C uyumlu IC'ler, güçlü parazit varlığında bile veri bütünlüğünü sağlamak için bir donanım gürültü bastırma algoritmasına sahiptir. Bu tür cihazlar, besleme voltajları farklı olsa bile mikro devrelerin birbirleriyle iletişim kurmasını sağlayan bir arayüze sahiptir. Aşağıdaki şekilde, birkaç mikro devreyi ortak bir veri yolu üzerinden bağlama ilkesini öğrenebilirsiniz.
Bus'a bağlı cihazların her birinin kendine özgü adresi vardır, kendisi tarafından belirlenir ve cihazın amacına göre alıcı veya verici olarak çalışabilir. Veri aktarılırken bu cihazlar master (master) veya slave (slave) olabilir. Master, veri transferini başlatan ve SCL hattında saat sinyalleri üreten cihazdır. Köle, ana aygıta göre hedef aygıttır.
I2C veriyolu üzerindeki herhangi bir çalışma anında, yalnızca bir cihaz ana birim olarak hareket edebilir; SCL hattında bir sinyal üretir.Bir ana, ana alıcı veya ana verici olabilir.
Prensip olarak, veri yolu birkaç farklı yöneticiye izin verir, ancak kontrol sinyalleri oluşturma ve veri yolunun durumunu izleme özelliklerine kısıtlamalar getirir; bu, birkaç yöneticinin aynı anda iletime başlayabileceği anlamına gelir, ancak bu tür çatışmalar, hakemlik sayesinde, yani yöneticinin veri yolunun başka bir yönetici tarafından işgal edildiğini algıladığında davranış şekli sayesinde ortadan kaldırılır.
Bir çift cihazın senkronizasyonu, tüm cihazların bir "VE" kablolaması oluşturarak veri yoluna bağlanmasıyla sağlanır. Başlangıçta, SDA ve SCL sinyalleri yüksektir.
BAŞLAT ve DURDUR
Değişim, master'ın «BAŞLAT» durumunu oluşturmasıyla başlar: SDA hattında, sinyal yüksekten alçak duruma geçerken, SCL hattı sabit bir yüksek seviyeye sahiptir. Veriyoluna bağlı tüm cihazlar bu durumu değişimi başlatma komutu olarak algılar.
Her master, veri yolu üzerinde veri iletirken SCL hattında ayrı bir saat sinyali üretir.
Değişim, master tarafından STOP durumunun oluşturulmasıyla sona erer: SDA hattında sinyal düşükten yükseğe değişirken, SCL hattı sabit bir yüksek seviyeye sahiptir.
Sürücü her zaman BAŞLAT ve DURDUR sinyallerinin kaynağı olarak hareket eder. «BAŞLAT» sinyali sabitlenir sabitlenmez, hat meşgul demektir. STOP sinyali algılandığında hat serbesttir.
BAŞLAT durumunu bildirdikten hemen sonra, ana bilgisayar SCL hattını düşük anahtarlar ve ilk mesaj baytının en önemli bitini SDA hattına gönderir. Bir mesajdaki bayt sayısı sınırlı değildir.SDA hattındaki değişiklikler yalnızca SCL hattındaki sinyal seviyesi düşük olduğunda etkinleştirilir. Veriler geçerlidir ve yalnızca senkronizasyon darbesi yüksek olduğunda değiştirilmemelidir.
Ana vericiden gelen baytın bağımlı alıcı tarafından alındığının onaylanması, sekizinci veri biti alındıktan sonra SDA hattında özel bir onay biti ayarlanarak yapılır.
DOĞRULAMA
Böylece, vericiden alıcıya 8 bitlik veri göndermek, alıcı cihaz SDA hattında alçaldığında, tüm baytı aldığını gösteren SCL hattında fazladan bir darbe ile sona erer.
Onay, veri aktarım sürecinin ayrılmaz bir parçasıdır. Master bir senkronizasyon darbesi üretir. Verici, onay saati aktifken SDA'ya düşük bir durum gönderir. Senkron darbesi yüksekken, alıcı SDA'yı düşük tutmalıdır.
Hedef bağımlı, örneğin şu anda meşgul olduğu için adresini kabul etmezse, veri hattı yüksek tutulmalıdır. Master daha sonra gönderimi iptal etmek için bir DUR sinyali verebilir.
Alım, ana alıcı tarafından gerçekleştiriliyorsa, son baytı onaylayarak değil, aktarım tamamlandıktan sonra bağımlı vericiyi bilgilendirmekle yükümlüdür. Köle verici, ana vericinin bir DUR sinyali veya tekrarlayan bir BAŞLAT sinyali verebilmesi için veri hattını serbest bırakır.
Cihazların senkronizasyonu SCL hattına yapılan bağlantıların "AND" prensibine göre yapılması ile sağlanmaktadır.
Master, SCL hattının düşükten yükseğe geçişini tek başına kontrol etme hakkına sahip değildir.Köle alınan bir biti işlemek için daha fazla zamana ihtiyaç duyarsa, bir sonraki veri bitini almaya hazır olana kadar bağımsız olarak SCL'yi düşük tutabilir. Böyle bir durumda SCL hattı, en uzun düşük seviye senkronizasyon darbesi süresince düşük olacaktır.
Sürekli olarak en düşük seviyeye sahip cihazlar, uzun süre sona erene kadar boşta kalacaktır. Tüm cihazlar düşük senkronizasyon dönemini bitirdiğinde, SCL yüksek seviyeye çıkacaktır.
Tüm cihazlar yüksek hızda çalışmaya başlayacak ve süresini tamamlayan ilk cihaz, SCL hattını düşük ayarlayan ilk cihaz olacaktır. Sonuç olarak, SCL'nin düşük durumunun süresi, cihazlardan birinin senkronizasyon darbesinin en uzun düşük durumu tarafından belirlenir ve yüksek durumun süresi, cihazlardan birinin en kısa senkronizasyon süresi tarafından belirlenir. cihazlar.
Senkronizasyon sinyalleri, alıcılar tarafından bit ve bayt seviyesinde veri iletimini kontrol etmenin bir yolu olarak kullanılabilir.
Aygıt yüksek oranda bayt alma yeteneğine sahipse, ancak alınan baytı depolaması veya bir sonraki baytı almaya hazırlanması belirli bir süre alıyorsa, bir baytı alıp kabul ettikten sonra SCL'yi düşük tutmaya devam ederek, vericiyi bekleme durumuna
Örneğin bit düzeyinde yerleşik donanım devreleri olmayan bir mikrodenetleyici, düşük durumlarının süresini artırarak saat hızını yavaşlatabilir.Sonuç olarak, ana aygıtın baud hızı, ana aygıtın hızına göre belirlenir daha yavaş cihaz
ADRESLEME
I2C veriyoluna bağlı her cihazın benzersiz bir program adresi vardır ve bu adreste master, belirli bir komut göndererek onu adresler. Aynı tipteki mikro devreler, seçicinin dijital girişleri biçiminde veya analog biçimde uygulanan bir adres seçici ile karakterize edilir. Adresler, veri yoluna bağlı cihazların adres alanına bölünür.
Normal mod, yedi bitlik adreslemeyi varsayar. Adresleme şu şekilde çalışır: «BAŞLAT» komutundan sonra, ana birim, ana birim ile iletişim kurmak için hangi bağımlı aygıtın gerekli olduğunu belirleyen ilk baytı gönderir. Veri yolundaki tüm cihazları tanımlayan ortak bir çağrı adresi de vardır, tüm cihazlar (teorik olarak) buna bir onay ile yanıt verir, ancak pratikte bu nadirdir.
Yani ilk baytın ilk yedi biti köle adresidir. En önemsiz bit olan sekizinci, veri gönderme yönünü gösterir. Bir «0» varsa, o zaman bilgi master'dan bu slave'e yazılacaktır. Eğer «1» ise, bilgi master tarafından bu slave'den okunacaktır.
Master adres baytını göndermeyi bitirdikten sonra, her slave kendi adresini kendisiyle karşılaştırır. Aynı adrese sahip olan herkes köledir ve adres baytının en önemsiz bitinin değerine bağlı olarak bağımlı verici veya bağımlı alıcı olarak tanımlanır.
Bir bağımlı adres, sabit ve programlanabilir kısımlar içerebilir. Oldukça sık olarak, aynı türden çok sayıda cihaz tek bir sistemde çalışır, ardından adresin programlanabilir kısmı, veri yolunda maksimum aynı türde cihazların kullanılmasına izin verir. Adres baytındaki kaç bitin programlanabilir olduğu, çip üzerindeki boş pinlerin sayısına bağlıdır.
Bazen programlanabilir adres aralığının analog ayarına sahip bir pim yeterlidir, örneğin tam olarak böyle bir uygulamaya sahip bir LED gösterge sürücüsü olan SAA1064. Belirli bir pimin potansiyeli, çipin adres alanının ofsetini belirler, böylece aynı türdeki çipler aynı veri yolu üzerinde çalışırken çakışmaz. I2C veri yolunu destekleyen tüm yongalar, üreticinin belgelerde belirttiği bir dizi adres içerir.
«11110XX» kombinasyonu 10 bitlik adresleme için ayrılmıştır. «BAŞLAT» komutundan «DUR» komutuna veri alışverişini hayal edersek, şöyle görünecektir:
Burada basit ve birleştirilmiş veri alışverişi biçimlerine izin verilir. Kombine format, «BAŞLAT» ve «DURDUR» arasında ana ve bağımlının alıcı ve verici olarak hareket edebileceği anlamına gelir; bu, örneğin seri bellek yönetiminde yararlıdır.
Verinin ilk baytının bir bellek adresi aktarmasına izin verin. Ardından, «BAŞLAT» komutunu tekrarlayarak ve köle adresini okuyarak, hafıza verileri çalışacaktır. Önceden erişilen adresi otomatik olarak artırma veya azaltma kararları, çip belgelerini önceden inceledikten sonra cihaz geliştiricisi tarafından verilir. Öyle ya da böyle, BAŞLAT komutunu aldıktan sonra, tüm cihazların mantığını geri yüklemesi ve adresin şimdi adlandırılacağı gerçeğine hazırlanması gerekir.