I²CFonksiyonları


I2C haberleşmesinde kullanılan fonksiyonlar şu şekilde.AckI2C(): void AckI2C(void);Acknowledge sinyali üretir. (Genellikle veri alındığında onayı bu şekilde veririz.)
NotAckI2C(): void NotAckI2C(void);
Not Acknowledge sinyali üretir. (Genellikle artık veri almayacağımızı bu şekilde bir sinyal üretiriz.)
DataRdyI2C(): unsigned char DataRdyI2C(void);
I2C buffer’ındaki veri okunmaya uygun mu diye kontrol eder. (Genelde veriyi okunmadan önce veri hazır mı diye bu fonksyionla kontrol ederiz.)
Fonksiyonun döndürdüğü değer;
1: Veri SSPx buffer’ındadır. Okumaya müsaittir
0: Veri SSPx buffer’ında değildir. Henüz alınmamıştır, okunamaz.
getsI2C(): unsigned char getsI2C(unsigned char *rdptr, unsigned char lenght);
I2C üzerinden string okumak için kullanılır.
rdptr:
I2C üzerinden okunan verinin hangi adresten başlanarak saklanacağını gösterir.
lenght:
I2C üzerinden okunacak eleman sayısını gösterir.
Fonksiyonun dönüş değeri;
0: Gönderilen bütün veri alınmıştır.
-1: Veri yolunda bir collusion meydana gelmiştir.
Örnek kullanım;unsigned char string[15];
getsI2C(string, 15);
IdleI2C(): void IdleI2C(void);
I2C veri yolu Idle(kullanıma hazır) olana kadar gecikme yapar. (Kendi içinde boş bir döngüye girer.)
OpenI2C(): void OpenI2C(unsigned char sync_mode, unsigned char slew);
SSPx modülünü I2C haberleşme koşullarını ayarlamak için verdiğimiz parametrelere göre  konfigüre eder.
sync_mode:
SLAVE_7: I2C slave modu, 7 bitlik adresleme (slave olan cihazın bir adresi bulunmak zorunda ki master olan slave’e erişebilsin).
SLAVE_10: I2C slave modu, 10 bitlik adresleme (slave cihazların çokluğuna göre 10 bite kadar adresleme olanağı var).
MASTER: I2C master modu (master cihazın adresi olmaz, kendisinin başka bir cihaz tarafından bulunmasına ihityaç yoktur).
slew:SLEW_OFF100 kHz’lik iletişim sağlar.
SLEW_ON: 400 kHz’lik iletişim sağlar.
Örnek kullanım;OpenI2C(MASTER, SLEW_ON);
putsI2C(): unsigned char putsI2C(unsigned char *wrptr);
I2C veri yoluna string veri yazmak için kullanılır (Master veya Slave modunda kullanılabilir).
wrptr:I2C üzerinden okunan verinin hangi adresten başlanarak saklanacağını gösterir.
Fonksiyonun dönüş değeri;
Master I2C modu:0: Veride NULL karakterine ulaşılmıştır (string son elemanına kadar gönderilmiştir).
-2: Slave cihazından NOT ACK sinyali alınmıştır.
-3: Collusion oluşmuştur.
Slave I2C modu:
0: Veride NULL karakterine ulaşılmıştır (string son elemanına kadar gönderilmiştir).
2: Master cihazından NOT ACK sinyali alınmıştır (bu durumda haberleşme sonlandırılır).
Örnek kullanım;unsigned char string[] = “data to send”;
putsI2C(string);
ReadI2C(): unsigned char ReadI2C(void);
getcI2C() fonksiyonuyla aynı işi görür. I2C üzerinden 1 byte’lık veri okur.
WriteI2C(): unsigned char WriteI2C(unsigned char data_out);
putcI2C() fonksiyonuyla aynı işi görür. I2C üzerinden 1 byte’lık veri gönderir.
data_out:
I2C hattına verilecek olan 1 byte’lık değerdir.
Fonksiyonun dönüş değeri;
0: Veri I2C hattına başarıyla çıkartılmıştır.
-1: Collusion olmuştur.
Örnek kullanım;
WriteI2C(‘a’);
RestartI2C(): void RestartI2c(void);
I2C haberleşmesini restart koşuluna sokar. (Genellikle haberleşmeyle ilgili özellikleri değiştirmek istediğimiz zaman kullanırız.) StopI2c() – StartI2C() kullanmanın kolay yoludur.
StartI2C(): void StartI2C(void);
I2C haberleşmesini başlatır.
StopI2C():  void StopI2C(void);
I2C haberleşmesini sonlandırır.

Yorumlar