C ile AVR Programlama -51- AVR’de I2C (TWI) İletişim Birimi
AVR mikrodenetleyicilerde aynı SPI, USART gibi TWI adında bir iletişim birimi bulunur. Bu birim diğerleri gibi mikroişlemciden bağımsız olarak çalışır. Bu birim lisans problemlerinden dolayı TWI olarak adlandırılsa da I2C protokolünden hiçbir farkı yoktur. Fark edilirse I2C adıyla satılan entegrelerin çoğunu Philips firması üretmektedir. Lisans sorunu yaşayan firmalar Two-Wire Interface gibi adlarla yine aynı sistemi kendi entegrelerine dahil etmektedir. Atmel firması da bu şekilde bu protokolü mikrodenetleyicilerine dahil etmiştir. Şimdi teknik veri sayfasından madde madde bu birimin özelliklerinin özetini verelim.
- Basit, esnek ve güçlü iletişim protokolü. Sadece iki hat yeterli.
- Ana ve Uydu işletim desteği
- Aygıt alıcı ve verici olarak çalışabilir.
- 7-bit adres 128 uydu adrese kadar destek sağlar.
- Çoklu ana aygıtın uzlaşması desteği
- 400kHz’e kadar transfer hızı
- Gürültü engelleyici ile hattaki ani çıkışları engelleme.
- Tamamen programlanabilir uydu adresi.
- Adres tanımlama uykudan uyandırır.
- Philips I2C protokolü ile uyumluluk.
I2C arayüzünde sıklıkla kullandığımız dört terim vardır. Bu terimler aşağıdaki tabloda açıklanmıştır.
Terim | Açıklama |
Ana (Master) | İletişimi başlatan ve sonlandıran aygıt. Aynı zamanda SCL saatini de üreten aygıttır. |
Uydu (Slave) | Ana aygıt tarafınadan adreslenen aygıttır. |
Verici | İletim hattına veri koyan aygıt. |
Alıcı | İletim hattından veri okuyan aygıt. |
ATmega328P mikrodenetleyicisindeki I2C biriminin blok diyagramı aşağıdaki gibidir.
Burada dikkatimizi çeken ilk olarak SCL ve SDA adındaki iki dış parçadır. Bunlar bu birimin dış dünya ile iletişimini sağlayan parçalardır. Bunlar mikrodenetleyicinin SDA ve SCL ayaklarına bağlı olup diğer aygıtlarla iletişimi sağlar. Bu ayaklarda “Spike Filter” olarak adlandırılan ani pik sinyallerini engeller. Bu sinyaller 50ns’den kısa olmalıdır. “Slew-rate” ise önceki konuda bahsettiğimiz gibi kare dalganın üçgenleşmesidir. Bu üçgenleşme dijital devrelerde sıkıntı doğurabileceği için buraya bir denetim birimi koyulmuştur.
SDA ve SCL birimleri doğrudan iletişim arayüz ünitesine bağlanmıştır. Bu ünitede yine ani pik sinyallerini örten bir ünite ile START/STOP (Başlama ve bitiş denetimi), ana aygıt uzlaşma algılaması ve Adres ve Veri kayan yazmacı bulunur. TWDR adlı bu yazmaç hem adres hem de veri bilgisini sıralı olarak SDA ayağına verir. Bizim burada veri yazmacımız şemadan anlaşıldığı üzere TWDR yazmacıdır.
İletişim Arayüz Ünitesini (Bus Interface Unit) bitirdikten sonra geriye üç ünite kalıyor. Bunlardan biri Adres eşleşme ünitesi olup içinde adres yazmacını (TWAR) barındırır. Her I2C aygıtın bir adresi olduğuna göre bu aygıtın adres bilgisi de bu yazmaçta yer almalıdır. Denetim ünitesi (Control Unit) ise iletişim biriminin denetim ve durum bilgisine dair yazmaçları içerisinde barındırır. Aynı diğer birimlerdeki denetim ve durum yazmaçlarında olduğu gibi bunu yazmaçların açıklamasında okuyup öğrenmemiz gereklidir.
En son olarak Bit oranı üretecinde (Bit Rate Generator) bir ön derecelendirici ile beraber bit oranı yazmacı (TWBR) yer almaktadır. Bu yazmaca yazılan değer ile bit oranı belirlenmiş olur.
Bit Rate Üreteci için özel bir formül vardır. Buna göre SCL frekansı belirlenir. I2C veri aktarım hızı SCL frekansıyla doğru orantılıdır. Aşağıda bu formülü görebilirsiniz.
Burada TWBR bit oranı yazmacının değeri olup bu ön derecelendirici değeri ile çarpılır. En sonunda ise CPU frekansı bu eğer ile bölünür. USART protokolünde olduğu gibi saat sinyalini CPU frekansından almaktadır.
Bir sonraki derste TWI yazmaçlarını anlatarak konumuza devam edeceğiz.
Kaynaklar
Kapak Resmi : http://enacademic.com/pictures/enwiki/65/AVR_ATXMEGA_128A1.JPG
ATmega328P – Microchip Technology , http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf, Erişim Tarihi: 25.08.2018
UYARI!!
Bu sitede yayınlanan yazılar orjinal içerik olup faydalanılan kaynaklar belirtilmiştir. Yazarın izni olmaksızın tamamen alıntı yapılamaz, kopyalanamaz. Kaynak göstermek kaydıyla (Yazının adı, yazar adı ve link) kısmen alıntı yapılabilir.
Son Yorumlar