RS232, 1960 yıllarının başında ortaya çıkmış,
Recommended Standart’ın kısaltılmış hali olan, asenkron ve senkron seri iletişim protokolüdür. Asenkron iletişimde clock sinyali
kullanılmazken, senkron iletişimde clock sinyali vardır. Bu konumuzda asenkron
iletişim üzerinde duracağız.
RS232 iletişimde bitler aynı hat üzerinden sırayla
tek tek gider. Genelde kısa mesafe haberleşme için kullanılır. Yapılan
çalışmalar kabloların kapasitesinden ötürü 15 metrenin üzerinde yapılan
haberleşme işlemlerinde verilerin bozulmalara uğradığını göstermektedir. Fakat
düşük kapasiteli kablolar yardımı ile yapılan bu haberleşmenin 300 metreye
kadar yapılabildiği görülmüştür. Uzun mesafelerde yüksek hız elde etmek için
RS-485 gibi diğer standartlar daha uygundur.
RS-232, yalnızca iki cihaz arasındaki iletişim
içindir. RS-232'de bitler, bir zaman serisi halinde gönderilir. Hem senkron hem
de asenkron iletimler bu standart tarafından desteklenir. İletilen veri ile
alınan veri ayrı devreler olduğundan iletişim çift yönlü (full duplex) çalışabilir
ve her iki yönde eşzamanlı olarak veri akışı olur. RS232 iletişim protokolü
ayrıca I2C veya TTL aygıtlarından üretilen sinyallerden daha uzun mesafelerde
sinyal iletmek için daha uygundur.
RS232 Voltaj
Seviyeleri
Geçerli sinyaller +3 ile +12 volt arasında ya da
−3 ile −12 volt arasındadır. -3V ile -12V arasındaki bir sinyal voltajı
mantıksal '1'i temsil ederken, +3V ile +12V arasındaki voltaj mantıksal '0'ı
temsil eder. Bu yüzden −3 ile +3 volt arasındaki gerilim değerleri RS-232 için
geçerli değildir. Ayrıca GND toprak pini bulunur. RS232 seri haberleşme
standardı, TTL(Transistor-Transistor Logic) seviyesinde iletim yapmaz. RS232
akım değeri ise 3 Amperdir.
RS232 Veri
Türü
RS232’de veriler ASCII karakterleri şeklinde
gönderilir. Gönderilecek olan veri, gönderici tarafından, belirlenmiş olan bu
formatta hazırlanmakta ve iletilmektedir. Bu işlem süreçlerinde de alıcı
devamlı olarak hattı dinlemektedir.
RS232 Kablo
Sayısı
Tüm özelliklerin gerekmediği uygulamalarda, gönderilen
veri (Transmitted Data: TxD), alınan
veri (Received Data: RxD) ve ortak
toprak (Common Ground: GND)
hatlarından oluşan en az 3 kablolu RS-232 bağlantısı kullanılabilir. Hatta,
veri akışı tek yönlü ise, iki kablolu bağlantı (veri ve toprak) bile
kullanılabilir. Yalnızca donanım akış kontrolü gerektiği durumlarda iki yönlü
veriye ek olarak RTS ve CTS hatları da eklenerek 5 kablolu
sürümü elde edilir.
RS232 Baudrate
RS232’de baudrate değeri vardır. Bu değer seri
portun saniyede göndereceği ve alacağı bit sayısını belirler. Örneğin baud hızı
9600 ise saniyede 9600 bit gider. Seri portun haberleşeceği cihaz ile aynı
olmak zorundadır. 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200
değerlerini alabilir.
RS232
Konnektör
RS232 protokolü DB9 veya DB25 konnektörü kullanır.
DB25 konnektörleri 25 pin, DB9 konnektörü 9 pin kullanır.
DB9 Konnektörü
NOT: RS232 ilk olarak bilgisayar terminallerini modemlere bağlamak için tasarlanmıştı. Daha sonradan güncellendi. Yukarıdaki tablodaki pinlerin bu amaçla kullanıldığı görülmektedir. Biz ise RxD, TxD, GND gibi pinleri kullanarak asenkron veri iletimi ile dış kaynaktaki cihazlarla iletişime geçeceğimiz için buradaki birçok pini kullanmayacağız. Bizim kullanacağımız iletişimdeki pin bağlantıları genelde aşağıdaki resimdeki gibi olacak.
RS232 Veri İletim
Protokolü
Start Biti: Alıcı cihaza veri gönderileceğinin haber
verilmesini sağlar. Bu önemlidir çünkü; RS-232’nin asenkron protokolünde start
biti alıcı cihazı, verileri doğru zamanlama ile okumaya hazırlar. Başlangıç bit
değeri 0(sıfır)’dır.
Data: Gönderilecek veridir. RS232’de veriler ASCII
karakterleri şeklinde gönderilir. Genelde data biti 8 bittir ama 5 ile 9
arasında da olabilir.
Parity Biti: Parity yani eşlik biti değeridir. Parity biti
gönderilen 8 bitlik veri içindeki 1’lerin toplamının çift yada tek olduğunu
belirtir. Alabileceği değerler; N,O ve E değerleridir.
• “N”
değeri “None” yani Parity biti gönderilmeyecek demektir.
• “O”
değeri “One” yani tek sayı demektir. Parity biti “1” olur.
• “E”
değeri “Even” yani çift sayı demektir. Parity biti “0” olur.
Stop Biti: Gönderilen datanın bittiğini belirten bittir. 1
yada 2 stop biti olabilir.
Aşağıdaki örneklerdeki gibi veri iletimi olur:
Aşağıdaki örnekte 198 sayısının iletiminin nasıl gerçekleştiğine
bakalım. Parity biti kullanmayacağız. İlk önce bir bitin ne zaman başlayıp ne
zaman biteceğini hesaplayalım. Bunun için baud değerini 9600 kabul edersek;
1 bitin uzunluğu = 1 / 9600 = 104 µsn eder. Yani bir bitin uzunluğu 104 µsn’dir. O zaman;
Alıcı, start biti başladıktan yani 1 ile 2 nolu
çizgi arasını 104 µsn saydıktan sonra veri almaya hazırdır.
2 ile 3 nolu çizginin tam ortasına geldiği zaman ise 1. biti alır. 3 ile 4 nolu
çizginin tam ortasına geldiği zaman ise 2. biti alır. Bu durum bu şekilde devam
eder. Bitin tam ortada alınmasının nedeni herhangi bir parazit ya da karasızlık
durumunun önüne geçmek içindir. Alıcı stop bitini görüp 104 µsn saydıktan sonra
veri alımını tamamlamış olur.
UART ve USART Seri
Haberleşme Protokolleri
UART(Universal
Asynchronous Receiver Transmitter);
bilgisayar ve mikrokontrolcüler veya mikrokontroller ve çevre birimleri
arasında haberleşmeyi sağlayan haberleşme protokolüdür. Asenkron olarak
çalıştığı için herhangi bir “clock” ihtiyacı duymaz.
USART(Universal
Synchronous Asynchronous Receiver Transmitter); hem senkron hem de asenkron olarak çalışabilir.
UART’a göre daha gelişmiş bir protokoldür. Haberleşme mantığı aynı şekilde
çalışır ancak USART aynı zamanda senkron haberleşmeleri de gerçekleştirebilir.
Yeni çıkan bir mikroişlemcinin datasheet’ine baktığınız zaman bu birimleri
genelde USART birimi olarak görüyoruz. Çünkü USART aynı zamanda UART’ı da
kapsayan bir birim olarak tasarlanmıştır. USART, 5 ve 9 bit arası data
uzunluğuna sahip veriyi taşıma özelliğine sahiptir.
RS232 haberleşme de UART-USART yöntemini
kullanmaktadır. UART mantık seviyeleri üreticiler arasında farklılık
gösterebilir. Örneğin, bir Arduino Uno’nun 5V mantık seviyesi vardır. Ancak;
bir bilgisayarın RS232 portu +/-12V mantık seviyesine sahiptir. Bir Arduino
Uno’yu doğrudan bir RS232 bağlantı noktasına bağlamak Arduino’ya zarar verir.
Her iki UART cihazı aynı mantık seviyelerine sahip değilse, cihazları bağlamak
için uygun bir mantık seviye dönüştürücü devresi gereklidir.
UART-USART
Veri İletim Örneği
Yukarıdaki görselde gördüğünüz gibi haberleşme
gerçekleşmesi için ilk önce verici tarafında logic 1 (HIGH) seviyesinde bulunan
iletişim hattı iletişimin başlaması için logic 0 (LOW) seviyesine çekilir ve bu
bizim Başlangıç Bit’imizi (Start Bit) temsil eder. Ardından göndermek
istediğimiz verileri başlangıç bitinin arkasına ekleriz. Eğer parity bitine
sahipsek onu da ekledikten sonra son olarak iletişime sonlandırmak için gerekli
olan bitiş bitini (stop bit) HIGH seviyesine çekerek iletişimin sonlandığını
alıcıya bildiririz. Biz verici kısmında bu işlemleri yaparken alıcı da aynı
şekilde işlem yapar ve sadece bizim gönderdiğimiz dataları kendi UART Data
Register’ına yazar.
Nasıl
Kullanılır?
UART-USART haberleşmesi yapabilmek için mikrodenetleyicimizdeki
daha önceden tanımlanmış olan pinleri kullanırız. PC ile mikrodenetleyici
arasındaki iletişim için; ya USB-TTL dönüştürücü ya da RS232-TTL dönüştürücü modülü
kullanırız. Her iki modülü de RX-TX pinleri mikrodenetleyici RX-TX pinleri ile
ters olarak bağlanacak şekilde bağlantısını yaptıktan sonra iletişimi
başlatabiliriz.
(Yani mikrodenetleyici TX —> Modül RX, mikrodenetleyici
RX —> Modül TX)
Arduino UART
Kullanımı
Arduino geliştirme kartları, tercih edilen karta
bağlı olarak bir veya daha fazla UART pinine sahiptir. Arduino Uno pin 0 (RX0)
ve pin 1 (TX0) üzerinde bulunan tek UART arayüzüne sahiptir. Pin 0 ve 1 Arduino
IDE ile USB üzerinden iletişim kurmak için de kullanılır. Bu nedenle, Arduino
UNO geliştirme kartınıza kodlar yükleyecekseniz, önce 0 ve 1 pinlerindeki tüm
kabloları çıkardığınızdan emin olun.
UART
Avantajları
·
Sadece iki
kablo kullanılır
·
Saat sinyaline
ihtiyaç duymaz
·
Hata
denetimine izin vermek için bir eşlik biti vardır
· Her iki taraf
da buna göre ayarlandığı sürece veri paketinin yapısı değiştirilebilir
·
Yaygın olarak
kullanılan bir yöntemdir
UART
Dezavantajları
·
Veri
çerçevesinin boyutu maksimum 9 bit ile sınırlıdır
· Birden çok
bağımlı(çevre birimi/slave) veya birden çok ana sistemi(kontrolcü/master)
desteklemez.
Örnek: 01001010 verisinin UART iletişiminin nasıl
gerçekleştiğine bakalım.
Çeşitli TTL
Dönüştürücüler
a. RS232 – TTL Dönüştürücü Devre Şeması
a. RS232 – TTL Dönüştürücü Kart
a. FT232 Usb - Uart Dönüştürücü Kart
_____________________________________________________________________________________________________________________________________________________
0 comments:
Yorum Gönder