3.18. UART temelleri

UART (Universal Asynchronous Receiver-Transmitter), iki mikrodenetleyici arasında ya da bir mikrodenetleyici ile bir ana PC arasında bayt taşımanın en eski ve en basit yoludur. Veriyi iki tel taşır – her yön için bir tane – ve sinyali ortak bir toprak hattı geri döndürür. Hiçbir taraf paylaşılan bir saat çalıştırmaz; önceden bir baud hızı üzerinde anlaşırlar ve bit zamanlamasını veri hattının kendisinden geri kazanırlar.

3.18.1. Çerçeve

Hat üzerindeki her karakter bir çerçeve içine sarılır: bir başlangıç biti, veri bitleri, isteğe bağlı bir parite biti ve bir veya iki durdurma biti.

Bir UART çerçevesi dalga biçimi. Sinyal solda boşta yüksek seviyede bekler, bir bit süresince düşük seviyeye düşer (başlangıç biti), ardından sırayla sekiz veri biti taşır, sonra tekrar boşta konumuna dönmeden önce bir bit süresince yüksek seviyeye döner (durdurma biti).

Bir UART çerçevesi: bir başlangıç biti, sekiz veri biti ve bir durdurma biti; her biri bir bit periyodu (1 / baudrate saniye) genişliğindedir.

Hat boştayken yüksek seviyede bekler. Alıcı, yeni bir çerçevenin başlangıcını işaretleyen bir düşen kenarı bekler. Daha sonra veri hattını bit periyodu başına bir kez örnekler – genellikle her bitin ortasında – ve bitleri yeniden birleştirerek bir karakter oluşturur. Durdurma biti hattı tekrar boşta konumuna döndürür, böylece bir sonraki başlangıç biti tespit edilebilir.

3.18.2. Baud hızı

Bit periyodu – ve bağlantının hızı – saniyedeki bit sayısı olan baud hızı ile belirlenir. 9600, 19200, 38400, 57600, 115200, 230400, 460800 ve 921600 standart değerlerdir; 115200 en yaygın varsayılandır. Her iki uç da baud hızında birkaç yüzde içinde anlaşmalıdır; aksi takdirde alıcı bitleri yanlış noktalarda örnekler ve veri bozuk olarak geri gelir.

Daha yüksek baud hızları saniyede daha fazla veri taşır, ancak kablo uzunluğuna, kapasitansa ve her iki uçtaki saatlerin hassasiyetine karşı daha duyarlıdır. Aynı masa üzerindeki iki kart arasındaki kısa bağlantılarda 115200 ile 921600 arası rahatça çalışır.

3.18.3. Kablolama

Bir UART bağlantısı üç tel kullanır:

A ve B olarak etiketlenmiş, üç telle bağlı iki kart. A kartının TX pini, B kartının RX pinine bağlanır; B kartının TX pini, A kartının RX pinine bağlanır; ve her iki kartın toprak pinleri birbirine bağlanır.

UART kablolaması: Bir karttaki TX, diğerindeki RX’e gider ve her iki toprak birbirine bağlanır.

  • TX → RX, her iki yönde. Her kartın gönderme pini, diğer kartın alma pinidir. Yaygın bir yeni başlayan hatası TX → TX şeklinde kablolamaktır – birbiriyle çekişen iki çıkış, hiçbir alıcıda veri olmadan.

  • Ortak toprak. Sinyal seviyeleri toprağa göre referanslandırılır, bu nedenle iki kartın ortak bir toprağı olmalıdır; aksi takdirde alıcı hat üzerinde yanlış gerilimi görür.

3.18.4. Gerilim seviyeleri ve fiziksel katmanlar

Kameranın UART pinleri üzerindeki sinyal seviyeleri 3,3 V CMOS’tur: mantıksal sıfır için toprak, mantıksal bir için 3,3 V. 3,3 V CMOS UART konuşan herhangi bir şey – başka bir mikrodenetleyici, 3,3 V’a ayarlanmış bir USB-seri dönüştürücü, bir 3,3 V GPS modülü – doğrudan kablolanabilir.

Not

5 V CMOS UART cihazları (eski mikrodenetleyiciler, belirli GPS modülleri, bazı eski sensör kartları) aynı UART çerçevelemesini 5 V mantık seviyelerinde konuşur. Bunları doğrudan kameraya kablolamak güvenli değildir: 5 V’luk bir TX, kameranın RX’ini sürerken 5 V toleranslı olmayan kameralarda mutlak maksimum giriş gerilimini aşar ve kameranın 3,3 V’luk TX’i temiz bir mantıksal bir için 5 V cihazın yüksek eşiğine ulaşamayabilir.

İki gerilim arasında dönüşüm yapmak bir aktif hat sürücüsü gerektirir – her hattın her iki tarafında kendi sürücü transistörleri bulunan özel bir çift yönlü seviye kaydırıcı IC. Seviye kaydırma bölümündeki pasif MOSFET-ve-pull-up kaydırıcıları burada yeterli değildir: yükselen kenarları hattı bir direnç üzerinden şarj etmeye dayanır, bu anahtarlama hızlarında iyidir ancak UART için çok yavaştır. 115200 baud’da her bit yaklaşık 8 µs sürer ve pasif kaydırıcının RC eğimi bir biti diğerinin içine bulaştırır.

Bir aktif hat sürücüsü, tam UART hızlarında her iki yönde de temiz kenarlar üretir. Bağlantının çalışacağı baud hızı için derecelendirilmiş bir parça seçin, kameranın TX ve RX pinlerini kaydırıcının 3,3 V tarafına ve 5 V cihazın TX ve RX pinlerini kaydırıcının 5 V tarafına kablolayın.

Üç eski fiziksel katman aynı çerçevelemeyi kullanır ancak farklı gerilimlere sahiptir ve kendileri ile bir 3,3 V mikrodenetleyici arasında bir seviye dönüştürücüye ihtiyaç duyar:

  • RS-232. Masaüstü PC’lerdeki seri portlar ve bazı endüstriyel ekipmanlar tarafından kullanılır. Hat, kabaca ±5 V ile ±15 V arasında salınır ve boşta negatif rayda kalır. CMOS’a kıyasla ters polarite ve yüksek gerilim; MAX232 / MAX3232 ailesinden (veya benzeri) bir çip dönüşümü gerçekleştirir.

  • RS-422. Noktadan noktaya bağlantılar için diferansiyel sinyalleşme standardı (bir sürücü, en fazla on alıcı). Sürücü, dengeli bir tel çifti üzerinden gönderir; alıcı, aralarındaki farkı görür ve yol boyunca ortak mod gürültüsünü göz ardı eder. Tam çift yönlü bağlantılar iki çift kullanır – her yön için bir tane. RS-422, baud hızına bağlı olarak onlarca metreden bir kilometreye kadar ulaşır ve bir RS-422 alıcı-verici çipi, kameranın TX / RX pinleri ile dengeli çift arasında yer alır.

  • RS-485. RS-422’nin çok noktalı kuzeni – aynı diferansiyel sinyalleşme, ancak tek bir veri yolu üzerine 32’ye kadar sürücü ve alıcı yerleştirmek için tasarlanmıştır. Çoğu bağlantı tek bir çift üzerinde yarı çift yönlüdür; her düğümün sürücüsü ve alıcısı aynı telleri paylaşır ve kimin konuşacağına yazılım karar verir. Tellerin uzağa uzandığı ve gürültünün kötü olduğu endüstriyel otomasyon veri yollarında (Modbus, DMX512, Profibus) kullanılır; bir RS-485 alıcı-verici çipi, kameranın TX / RX pinleri ile diferansiyel çift arasında yer alır.

Her ikisi de temel bit seviyesinde hâlâ UART çerçeveleri gönderir. Kameranın machine.UART yapılandırması (baud hızı, bitler, parite, durdurma bitleri), sinyali alıcı-vericinin diğer tarafında hangi fiziksel katmanın taşıdığından bağımsız olarak aynıdır.