Ekim 19, 2021
11 11 11 ÖÖ
TCP nedir ? Aktarım Katmanı 2
Aktarım Katmanı Tcp Nedir
Yönlendirme Nedir 2 ?
Yönlendirme Nedir ?
Ağ Katmanı Nedir 2 ?
Ağ Katmanı Nedir ?
Veri Bağı Katmanı Nedir 2 ?
Android Studio Nasıl Kurulur ?
Veri Bağı Katmanı Nedir ?
Fiziksel Katman Nedir ?
Son Yazılar
TCP nedir ? Aktarım Katmanı 2 Aktarım Katmanı Tcp Nedir Yönlendirme Nedir 2 ? Yönlendirme Nedir ? Ağ Katmanı Nedir 2 ? Ağ Katmanı Nedir ? Veri Bağı Katmanı Nedir 2 ? Android Studio Nasıl Kurulur ? Veri Bağı Katmanı Nedir ? Fiziksel Katman Nedir ?

Kablolu Haberleşme Protokolleri (SPI-I2C-UART)

Paylaşım , Takip İçin

SPI NEDİR

SPI (Serial Peripheral Interface), Arduino’nun desteklediği senkron seri
haberleşme türlerinden biridir. Özellik ve kullanım olarak I2C’ye benzer. Bir
Arduino’nun diğer Arduino veya sensörlerle kısa mesafede haberleşmesini sağlar.
SPI protokolünde de I2C’de olduğu gibi bir adet Master cihaz bulunur. Bu cihaz
hatta bağlı çevresel cihazları kontrol eder.

NASIL ÇALIŞIR

Master ve çevresel cihazlara bağlanan MISO (Master In Slave Out), MOSI (Master
Out Slave In) ve SCK (Serial Clock) olmak üzere üç adet SPI hattı bulunur.
MISO: Çevresel cihazlardan (slave) yollanan verilerin master cihaza aktarıldığı hattır.
MOSI: Master cihazdan yollanan verilerin çevresel cihazlara aktrıldığı hattır.
SCK: SPI haberleşmesinde senkronu sağlayan saat sinyalinin bulunduğu hattır. Saat sinyali master cihaz tarafından üretilir.

MISO ve MOSI hatlarından da anlaşıldığı gibi SPI protokolünde I2C’den farklı
olarak veri hatları tek yönlüdür. Ayrıca çevresel cihazların (slave) adreslerinin
olmasına gerek yoktur. Her çevresel cihazın seçim ayağı bulunur. Bu ayağa, SS
(Slave Select) denir. Bu hattın sayısı kullanılan çevresel cihazların sayısı kadardır.
Her cihaz için master cihazından ayrı SS hattı çıkar. SS hattı LOW (0 volt) düzeyinde
olan çevresel cihaz, master cihaz ile iletişime başlar.

SPI FONKSİYONLARI

SPI protokolünü öğrendiğimize göre şimdi haberleşmenin Arduino kısmına
bakalım. Arduino’da SPI fonksiyonlarını kullanabilmemiz için öncelikle “SPI.h”
kütüphanesini projemize eklememiz gerekir. Kütüphane projeye eklendiğinde
aşağıdaki fonksiyonlar kullanılabilir.
• SPI.begin(): SPI haberleşmesini başlatır ve SPI pinlerini başlangıç konumlarına alır.
• SPI.setClockDivider(): Bu fonksiyon ile SPI haberleşmesinin saati ayarlanabilir.
Fonksiyon değer olarak saat değişkenlerini almaktadır. Eğer hiçbir değişiklik
yapılmazsa SPI saati “SPI_CLOCK_DIV4” olarak çalışır. Fonksiyonun alabileceği
değişkenler; SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16,
SPI_CLOCK_DIV32, SPI_CLOCK_DIV64, SPI_CLOCK_DIV128’dir.
• SPI.transfer(): SPI hattına veri yollamak veya veri almak için bu fonksiyon kullanılır.

I2C NEDİR

Arduino, diğer Arduino veya sensörlerle haberleşmek için bazı haberleşme
protokolleri kullanır. Bu protokollerden birisi de I2C’dir. I2C (Inter-Integrated
Circuit), seri haberleşme türlerinden senkron haberleşmeye bir örnektir.
Haberleşme için toprak hattı dışında SDA ve SCL olmak üzere iki hatta ihtiyaç
duyulmaktadır. Hat sayısının fazla olması nedeniyle, uzun mesafeli
haberleşmelerde tercih edilmez. Genellikle kısa mesafeli ve düşük veri aktarım
hızının yeterli olduğu yerlerde kullanılır.
I2C haberleşmesinde, haberleşmeyi kontrol eden master cihazı bulunur. Her
haberleşmede bir tane master bulunmalıdır. Haberleşmenin sağlanabilmesi için
haberleşme hattına en az bir adet slave (köle) cihaz bağlanmalıdır. Hatta bağlanan
birden fazla slave cihazlardan hangisinin veri aktaracağına, master cihaz karar
verir. Böylece hat sayısında bir değişiklik olmadan birden fazla cihazla haberleşme
sağlanır.

Master ve slave cihazların aynı besleme hattına bağlanmasına gerek yoktur. Fakat
iletişimin sağlanması için toprak hatlarının aynı olması gerekir. Bunun yanında veri
aktarımı için SDA (Serial Data Line) ve SCL (Serial Clock) olmak üzere iki adet
haberleşme hattı bulunur. Bu hatlardan SDA, cihazlar arasındaki veri aktarımının
sağlandığı hattır. Bu hatta çift yönlü veri aktarımı olur. Hatta aktarılan verilerin
senkronizasyonu, SCL hattı tarafından gerçekleştirilir. SCL hattında master cihaz
tarafından üretilen saat sinyali bulunur. SDA hattındaki haberleşme, bu sinyale
göre düzenlenir.

Haberleşmenin tüm hat boyunca hatasız bir şekilde sağlanabilmesi için SDA ve SCL
hatları, pull-up dirençlerle VCC hattına bağlanmalıdır. SDA ve SCL pinleri,
kullanılan Arduino türüne göre değişiklik göstermektedir. Arduino türlerine göre
SDA ve SCL pinleri aşağıdaki tabloda gösterilmiştir.
Arduino türü SDA pini SCL pini
Arduino Uno A4 A5
Arduino Mega 20 21
Arduino Leonardo 2 3
Arduino Due 20 21
Arduino Nano A4 A5

I2C haberleşme protokolünün çalışma şeklini ve bağlantı hatlarını öğrendiğimize
göre, Arduino’nun I2C haberleşmesini yapabilmesi için kullanmamız gereken
fonksiyonları tanıyalım. Bu fonksiyonlar Arduino’nun “Wire.h” kütüphanesi
içerisinde bulunmaktadır. Bu yüzden öncelikle bu kütüphaneyi projemize dâhil
etmeliyiz.
• wire.begin(): I2C haberleşmesini başlatan fonksiyondur. Bu fonksiyon parametre
olarak slave cihazın adresini alır. Eğer cihaz master olarak tanımlanacak ise bu
fonksiyona herhangi bir parametre atanmaz. Örneğin haberleşme hattında ‘1’
adresine sahip slave bir Arduino tanımlanmak isteniyorsa, wire.begin(1); yazılır. Eğer
bu Arduino haberleşme hattının master cihazı olarak tanımlanmak istenseydi
fonksiyon, wire.begin(); olarak çağırılmalıydı.
• wire.available(): Fonksiyon hat üzerinden Arduino’ya ulaşmış veri paketlerinin
sayısını döndürür. Eğer fonksiyonun değeri 0’dan büyükse Arduino’ya gelen yeni veri
paketi vardır.
• wire.beginTransmission(SlaveAdresi): Master cihazın hat üzerinde bulunan slave
cihazlardan hangisiyle haberleşmek istediğini belirler. Fonksiyon, parametre olarak
haberleşmeye başlayacağı cihazın adresini alır.
• wire.endTransmission(): Hat üzerindeki veri aktarımının sonlandığını belirtir.
• wire.read(): Veri hattından gelen verinin okunmasını sağlar.
• wire.write(): Fonksiyona yazılan parametreyi veri hattına aktarır. Kısaca veri
yollamak için kullanılır.
• wire.onReceive(GorevFonksiyonu): Slave olarak tanımlanmış cihaza veri geldiğinde,
cihazın yapacağı işlemi belirleyen fonksiyondur. Fonksiyon parametre olarak veri
geldiğinde, çağırılacak fonksiyonun ismini alır.
• wire.requestFrom(): Master tarafında kullanılan bu fonksiyon ile slave cihazdan veri
istenir. Fonksiyonun ilk parametresi, slave cihazın adresini belirler. İkinci parametre
ise slave cihazdan kaç byte’lık veri beklendiğini belirler. Üçüncü ve son parametre ise
hattın istekten sonraki durumunu belirler.
• wire.onRequest(): Slave tarafında kullanılan bu fonksiyon, master cihazdan veri isteği
geldiğinde çalıştırılacak fonksiyonu belirler. Bu fonksiyon parametre olarak
çalıştırılacak fonksiyonun ismini alır.

UART
NEDİR


• Veri haberleşme protokollerinden biri olan UART yani “evrensel asenkron veri
iletişim” protokolünü inceleyeceğiz. Detaylı incelemeden sonra bu bilgiler ışığından
ister kendi kütüphanenizi oluşturabilir yada benim MikroC için yazdığım UART
kütüphanesini kullanabilirsiniz.


İLETİŞİM


• UART iletişim protokolü bir seri iletişim protokolüdür.
• Diğer I2C veya SPI ile iki MCU yada Entegre birbiri ile haberleşirken UART ta farklı
olarak MCU – PC ile yada PC – PC haberleşmesi sağlanır.
• İnternet , ethernet gibi tüm sistemler UART protokolü ile iletişim sağlar.
• Aşağıda bu protokolün iyi ve kötü yanlarını tabloda inceleyelim.


NASIL KULLANILIR


USART haberleşmesi yapabilmek için mikroişlemcimizdeki
daha önceden tanımlanmış olan pinleri kullanarız. Bunun için
ya USB-TTL dönüştürücü ya da RS232 modülü kullanırız. Her
iki modülü de RX-TX pinleri mikroişlemcimizin RX-TX pinleri ile
ters olarak bağlanacak şekilde bağlantısını yaptıktan sonra
iletişimi başlatabiliriz. (Yani mikroişlemci TX —> Modül RX,
mikroişlemci RX —> Modül TX

Kablolu Haberleşme Protokolleri (SPI-I2C-UART)

Bir sonraki Arduino konusu için — Tıklayınız


Paylaşım , Takip İçin
5 1 vote
Article Rating

Bir Cevap Yazın

0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
HAYALİNDEKİ YAZILIM
%d blogcu bunu beğendi: