Teknoloji

UART İletişim Protokolü ve Nasıl Çalışır

UART Nedir?

Evrensel Asenkron Alıcı/Verici, genellikle UART olarak adlandırılır, gömülü alanda yaygın olarak kullanılan seri, asenkron, tam çift yönlü iletişim protokolü‘dür.

UART Bağlantısı

Bir UART kanalı iki veri hattına sahiptir. Her cihazda bir RX pini ve bir TX pini bulunur (RX alım için ve TX gönderim için). Her cihazın RX pini, diğer cihazın TX pinine bağlanır. Paylaşılan saat hatları olmadığını unutmayın! Bu, evrensel asenkron alıcı vericinin “asenkron” yönüdür.

Asenkron seri iletişim protokollerinden biri olarak, UART, iletilen verinin her bir ikili bitini bit bit ileterek çalışır. UART iletişim protokolünde, sinyal hattındaki durum yüksek olduğunda ‘1’ ve düşük olduğunda ‘0’ anlamına gelir.

Örneğin, UART iletişim protokolü kullanılarak bir byte veri iletildiğinde, sinyal hattında sekiz yüksek ve düşük seviye kombinasyonu üretilir.

  • Seri iletişim, bir iletim hattı kullanarak veriyi bit bit sırayla iletmeyi ifade eder veya tam çift yönlü iletişim oluşturmak için iki sinyal hattı kullanılabilir, örneğin rs232. Özelliği, iletişim hattının basit olması, iletişimin basit bir kablo kullanılarak gerçekleştirilebilmesi, maliyetin düşmesi ve uzun mesafe iletişim uygulamaları için uygun olmasıdır, ancak iletim hızı yavaştır.
  • Asenkron iletişim, bir karakteri iletim birimi olarak alır. İletişimdeki iki karakter arasındaki zaman aralığı sabit değildir, ancak aynı karakterdeki iki bit arasındaki zaman aralığı sabittir. Genel olarak, iki UART cihazı arasındaki iletişim için saat hattı gerekmez. Bu durumda, aynı iletim hızı, ayrıca boş bitler, başlangıç bitleri, parite bitleri ve son bitlerin her iki UART cihazında belirtilmesi gerekir, yani aynı protokole uymalıdırlar.
  • Veri transfer hızı baud hızı ile ifade edilir, yani saniyede iletilen bit sayısıdır. Örneğin, veri iletim hızı 120 karakter/saniye ise ve her karakter 10 bit (1 başlangıç biti, 7 veri biti, 1 kontrol biti, 1 durdurma biti) ise, iletim baud hızı 10 × 120 = 1200 karakter/saniye = 1200 baud olur.

Veri iletişim formatı aşağıdaki gibidir:

Başlangıç Biti

Ref: Analog

Her iletişim başladığında, gönderici bir mantıksal “0” sinyali (VOL) gönderir ve bu, iletim karakterinin başlangıcını gösterir. Çünkü bus boşken yüksek seviyededir, iletişim başlatıldığında, boş durumdan açıkça farklı bir sinyal, yani VOL, ilk olarak gönderilir.

Veri Biti

Ref: Analog

Başlangıç bitinden sonra iletmek istediğimiz veriler gelir. Veri bitleri 5, 6, 7, 8, 9 bit vb. olabilir ve bir karakter oluşturur (genellikle 8 bit). Örneğin ASCII kodu (7 bit) ve genişletilmiş BCD kodu (8 bit). En düşük bit önce gönderilir ve en yüksek bit en son gönderilir. Veri bitlerinin iletimini tamamlamak için düşük seviye ‘0’ ve yüksek seviye ‘1’ olarak kullanılır.

Parite Biti

Ref: Analog

Bu biti veri bitine ekledikten sonra, “1” bitlerinin sayısı çift bir sayı (çift parite) veya tek bir sayı (tek parite) olmalıdır, böylece veri iletiminin doğruluğu doğrulanabilir. Kontrol biti aslında ayarlama sayısıdır ve seri port kontrolü birkaç şekilde yapılır:

Parite Yok

Tek Parite: Eğer veri bitlerindeki “1” sayısı çift bir sayı ise, parite biti “1” olur; eğer “1” sayısı tek ise, parite biti “0” olur.

Çift Parite: Eğer verideki “1” sayısı çift bir sayı ise, parite biti “0” olur; eğer tek bir sayı ise, parite biti “1” olur.

İşaret Paritesi: Kontrol biti her zaman 1’dir (yaygın olarak kullanılmaz).

Parite: Parite biti her zaman 0’dır (yaygın olarak kullanılmaz).

Durdurma Biti

Ref: Analog

Karakter verisi için bir son işaretidir. 1-bit, 1.5-bit veya 2-bit VOH olabilir. Veri iletim hattında zamanlanmış olduğundan ve her cihazın kendi saati olduğundan, iletişimde iki cihaz arasında küçük bir senkronizasyon bozukluğu olması olasıdır. Bu nedenle durdurma biti, sadece iletimin sonunu belirtmekle kalmaz, aynı zamanda bilgisayara saati düzeltme fırsatı da sunar. Daha fazla durdurma biti, veri iletimini daha stabil hale getirir, ancak veri iletim hızını yavaşlatır.

Protokol katmanı

Protokol katmanında, veri paketinin içeriği belirtilir; bu, bir başlangıç biti, ana veri, kontrol biti ve durdurma bitinden oluşur. Her iki tarafın veri paket formatının, verileri normal bir şekilde göndermek ve almak için tutarlı olması gerektiği konusunda anlaşması gerekir.

Baud hızı

Asenkron iletişimde saat sinyali olmadığından, iki iletişim cihazının bir baud hızında anlaşması gerekir. Yaygın olanlar 4800, 9600, 115200 vb.’dir.

Ref: ZhiHu

İletişimin başlangıç ve durdurma sinyalleri: Seri iletişimde bir veri paketi başlangıç sinyalinden başlar ve durdurma sinyali ile sona erer. Veri paketinin başlangıç sinyali, mantık 0’ın bir veri biti ile temsil edilir ve veri paketinin durdurma sinyali, iki tarafın anlaşması koşuluyla mantık 1’in 0.5, 1, 1.5 veya 2 veri biti ile temsil edilebilir.

Veri Kontrolü: Geçerli veriden sonra isteğe bağlı bir veri kontrol biti bulunur. Veri iletişimi dışsal parazitlere karşı nispeten hassas olduğundan, iletim verisi bozulabilir ve bu sorunu çözmek için iletim sürecine bir kontrol biti eklenebilir. Kontrol yöntemleri arasında tek kontrol, çift kontrol, 0 kontrol (boş), 1 kontrol (işaret) ve parite olmaması bulunmaktadır.

Tek parite, geçerli veri ve parite bitlerindeki “1” sayısının tek sayı olmasını gerektirir.

Örneğin, 8 bitlik geçerli veri 01101001’dir ve toplamda 4 “1” vardır. Eğer kontrol biti “1” ise, son iletilen veri 8 bit geçerli veri artı 1 bit kontrol biti olacak şekilde toplamda 9 bit olur. Çift parite ve tek parite gereksinimleri tam tersidir. Çerçeve verisindeki ve parite bitindeki “1” sayısının çift sayı olması gerekmektedir; örneğin veri çerçevesi: 11001010. Bu durumda, veri çerçevesindeki “1” sayısı 4’tür, bu nedenle çift parite biti “0” olur. 0 kontrol, geçerli verinin içeriği ne olursa olsun kontrol bitinin her zaman “0” olması anlamına gelirken, 1 kontrol, kontrol bitinin her zaman “1” olması anlamına gelir.

Hata Durumları

UART kullanırken karşılaşabileceğiniz bazı hatalar şunlardır:

Çerçeveleme hataları

UART durum ve kontrol kayıtları, iletimle ilgili hata durumları da dahil olmak üzere çeşitli durum koşullarını gösterecektir. Bu protokolü anlamak, hata durumlarını anlamayı kolaylaştırır. Çerçeveleme hataları, alıcının beklenen bit zamanında bir durdurma biti görmediğinde meydana gelir. Durdurma bitinin beklendiği anda veri hattı beklenen yüksek durumda değilse (UART’ı ayarlayan veri ve parite bitlerinin sayısına bağlı olarak), UART bir çerçeveleme hatası sinyali verecektir.

Parite hatası

Parite hataları yalnızca UART parite modunda olduğunda ortaya çıkar. Parite modunda, iletilen tüm veri bitlerinin paritesini (çift veya tek) tutmak için ek bir bit gönderilir. Eğer bir veri biti hatalıysa (1 yerine 0 veya 0 yerine 1), parite biti yanlış olacak ve hatayı belirten bir hata fırlatılacaktır.

Aşım hatası

Aşım hatası, alıcının bir sonraki karakter gelene kadar işlemediği (giriş tamponundan bir karakter silmesi) durumunda meydana gelir.

Kesme durumu

Kesme durumu mutlaka bir hata değildir. Bu, alıcı girişinin belirli bir süre boyunca (genellikle bir karakter zamanından daha uzun) mantık düşük durumunda olduğu durumlarda meydana gelir. Alıcıya, çerçeveleme hatası ile birlikte tüm sıfır karakteri gibi görünür. Bu, yazılım sıfırlama devresine karşı bir hack’tir. Python kodunda, sıfırlamanın bir kesme gönderilerek tetiklendiğini görebilirsiniz. Bu, veri hattını yeterince düşük çekerek MCLR’nin düşük çekilmesini ve kartın sıfırlanmasını sağlar.

UART, I2C ve SPI arasındaki farklar

Protokol Karmaşıklık Hız Cihaz Sayısı Kablo Sayısı Duplex Master ve slave sayısı
UART Basit En yavaş 2 cihaza kadar 1 Tam Duplex Tekil ile Tekil
I2C Birden fazla cihazı zincirleme kolaydır UART’tan daha hızlı 127’ye kadar, ancak karmaşık hale gelir 2 Yarım Duplex Birden fazla slave ve master
SPI Cihaz sayısı arttıkça karmaşık En hızlı Birçok, ancak karmaşık hale gelir 4 Tam Duplex 1 master, birden fazla slave

Bu üç iletişimden hangisinin en iyi olduğunu merak ediyor olabilirsiniz? UART mı, I2C mi yoksa SPI mi?

Ne yazık ki, “en iyi” iletişim çevresi yoktur. Her iletişim çevresinin kendi avantajları ve dezavantajları vardır.

Bu nedenle, kullanıcılar projelerine en uygun iletişim çevrelerini seçmelidir. Örneğin, en hızlı iletişim çevrelerine ihtiyacınız varsa, SPI ideal olacaktır. Öte yandan, kullanıcı birden fazla cihazı çok karmaşık olmadan bağlamak istiyorsa, I2C ideal olacaktır çünkü 127 cihaza kadar bağlanabilir ve yönetimi kolaydır.

UART İletişim Protokollerini Destekleyen Ürünler ve Genişletme Kartları

XIAO Serisi

Elbette, I2C, UART veya SPI destekleyen tüm XIAO Serisi Mikrodenetleyicileri var ve işte göz atmanız için bir bağlantı Seeed Studio XIAO Serisi. Ve şimdi çoğu XIAO Serisi için Ücretsiz Kargo!

XIAO Serisi’nin bazı özellikleri şunlardır:

  • Parmak boyutunda form faktörü, yalnızca 20×17.5mm. Alan kısıtlı senaryolar için tasarlanmıştır.
  • Analog, dijital, IIC, UART, SPI ve daha fazlasını içeren birden fazla arayüzü destekleyen toplam 11 kullanılabilir IO.
  • Çeşitli ve karmaşık uygulamalar için güçlü bir çekirdek ile güçlü performans.
  • Tek taraflı bileşenler, yüzeye montaj tasarımı. XIAO’yu diğer kartlara kolayca entegre edin ve seri üretim için kullanın.

XIAO’nun sınırlı başlıkları olduğu için, diğer sensörleri bağlamak isterseniz, o zaman bu aşamada XIAO Genişletme Kartı‘nı kullanabilirsiniz. Size daha fazla sınırsız yaratıcılık sağlar.

XIAO için Genişletme Kartları Hakkında

XIAO Genişletme Kartı

Bu XIAO Genişletme Kartı, projenizde kullanabileceğiniz bazı yerleşik sensörlere sahiptir, örneğin OLED ekranlar, RTC, Buzzar, DIY kullanıcı Butonu, SWC ve arka tarafta SD kart yuvası. Bu, size biraz para kazandırabilir. Ve ultra küçük boyut (58 x 42.8mm), bir elin avucundan daha küçük.

Grove Shield XIAO için

Grove tabanı, XIAO Genişletme kartı kadar çok işlev sunmasa da, XIAO Genişletme Kartı‘ndan 4 ekstra analog/dijital porta sahiptir. Bu, kendi kartınızı özelleştirmenizi sağlar! Ve fiyatı XIAO Genişletme Kartı‘ndan daha ucuzdur.

Bir Raspberry Pi ürününü UART ile kullanmak istiyorsanız, Raspberry Pi Pico en iyi seçimdir.

Raspberry Pi’nin UART, SPI ve I2C portlarının yetersiz olduğunu düşünüyorsanız, o zaman bir Grove Shield for Pi Pico almanız gerekiyor. Grove Shield for Pi Pico, her biri için iki I2C ve UART portu, her biri için üç Dijital ve Analog port, bir Güç Anahtarı ve bir SPI ile bir SWD Hata Ayıklama Arayüzü içerir.

Wio Terminal

Wio Terminal, Realtek RTL8720DN tarafından desteklenen, hem Bluetooth hem de Wi-Fi Kablosuz bağlantı özelliklerine sahip, ATSAMD51 tabanlı bir mikrodenetleyicidir ve Arduino ve MicroPython ile uyumludur.

Wio Terminal özellikleri:

  • Güçlü MCU: 120MHz’de çalışan ARM Cortex-M4F çekirdekli Microchip ATSAMD51P19
  • Güvenilir Kablosuz Bağlantı: Realtek RTL8720DN ile donatılmış, çift bant 2.4Ghz / 5Ghz Wi-Fi
  • Ekran + Geliştirme Kartı + Giriş/Çıkış Arayüzü + Kasa ile donatılmış tam sistem
  • Raspberry Pi 40-pin Uyumlu GPIO, Raspberry Pi’ye çevresel olarak bağlanmayı sağlar
  • Arduino, CircuitPython, Micropython, ArduPy (ArduPy Nedir?), AT Firmware, Visual Studio Code desteği
  • USB OTG Desteği

Aynı zamanda, göz atmanız için bazı Kitlerimiz de var.

Seeed Studio XIAO Başlangıç Kiti 

Grove Başlangıç Kiti, Seeed Studio XIAO serisi ile uyumlu Genişletme kartını, çeşitli Grove modüllerini ve kontrol edilebilir bileşenleri bir kutuda toplar ve ücretsiz Seeed Studio XIAO Serisi kursları ile birlikte gelir.

XIAO Başlangıç Kiti için özellikler:

  • XIAO Serisi Geliştirme Kartının yeteneklerini genişletin: Uyumlu XIAO genişletme kartı, çeşitli veri iletim arayüzleri ve işlevsel çevre birimleri sunar
  • Geniş bir uygulama yelpazesini destekleyin: 9 Grove modülü, çevresel algılama, hareket tespiti ve mekanik hareket kontrolü vb. sağlar
  • Ek kontrol edilebilir bileşenler ekleyin: Bir 20 tuşlu mini kontrol cihazı, yeşil, kırmızı, mavi, beyaz LED paketi ile ışık gösterisi yapabilir
  • Belirli Seeed Studio XIAO Serisi Kursları ekleyin: Seeed Studio XIAO Serisi gibi geliştirme kartlarını hızlı bir şekilde tanımak için başlangıç dostu kurslar sunar ve ardından bireysel projeleri gerçekleştirmeye devam eder

Elbette, Arduino ile nasıl programlanacağını bilmiyorsanız, K1100 Kiti başlangıç seviyesindeki kullanıcılar için çok uygundur. Sensörü Wio Terminal’e bağlayarak doğrudan kullanabilirsiniz.

SenseCAP K1100 – Sensör Prototip Kiti

IoT ve büyük verilerin giderek daha yaygın hale geldiği dijital çağda, dijital dönüşümü kolaylaştırmak için sensörler aracılığıyla büyük veri toplama gereklidir.

SenseCAP K1100 için özellikler:

  • 10 Dakikada Dağıtım: 10 dakikada 3 adımda bir AIoT projesi oluşturun
  • Gelişmiş Teknolojiler: Makine Öğrenimi, LoRa® teknolojisi ve önceden eğitilmiş gömülü AI Görüntü Sensörü kombinasyonu
  • Büyük Genişletilebilirlik: Geniş uygulama ve özelleştirme seçeneklerini desteklemek için 400’den fazla Grove sensörü ile uyumlu
  • Geniş Entegrasyon: Bulut desteği için ana akım platformlarla uyumlu
  • Açık Kaynak Platform: IoT sensörlerinin ortak yaratımını sağlayan başlangıç dostu programlama platformları ile uyumlu

Bu blogda, UART iletişim protokolü ve UART kullanırken karşılaşabileceğiniz bazı sorunlar hakkında bilgi edindiniz. Umarım bu makale sorularınızı yanıtlayabilir. I2C veya SPI iletişim protokolünü öğrenmek istiyorsanız, bu bağlantılardan kontrol edebilirsiniz I2C İletişim Protokolü ve SPI İletişim Protokolü

Leave a Reply

Your email address will not be published. Required fields are marked *