USART, UART, RS232, USB, SPI, I2C, TTL, vb. Bunların hepsi nelerdir ve bunlar birbirleriyle nasıl ilişkilidir?


165

Acemi elektronik hobisi olarak, bu şartları duydum ve her yere daha fazla atıldım. Köklerinde, hepsinin cihazlar, bilgisayarlar, çevre birimleri vb. İletişimi temel aldığını biliyorum.

Hepsinin nasıl işlediğine dair temel bir anlayışa sahibim, ancak çoğunu gördüğümde kafam karıştı ve birbirleriyle nasıl ilişki kurduğunu anlamakta zorluk çekiyorum. Örneğin, UART, USART'ın bir alt kümesi midir? RS232 ve Seri arasındaki fark nedir? Tüm bu iletişim yöntemleri arasındaki temel farklılıklar nelerdir: güvenilirlik, maliyet, uygulama, hız, donanım gereksinimleri?

Hayal edebiliyorsanız, tüm bu terimlerin kartlarda yazılı, sehpaya dağılmış ve benim anlayışımı düzenlememe yardımcı olacak birine ihtiyacım var. Bu soru biraz belirsiz ise beni affet, ama bu sorunun hep birlikte olduğunu düşünüyorum.


Yanıtlar:


253

Seri , pahalı bir terim kullanmak için "Zaman Bölmeli Çoğullamalı" olan herkes için bir şemsiye kelimedir. Bu, verilerin zaman içinde yayılması, çoğu zaman birbiri ardına bir bit gönderildiği anlamına gelir. Adlandırdığınız tüm protokoller seri protokollerdir.

UART, Evrensel Asenkron Alıcı Vericisi için, en çok kullanılan seri protokollerden biridir. Neredeyse benim kadar eski ve çok basit. Çoğu denetleyicide bir donanım UART bulunur. İletim için tek bir veri hattı, veri almak için bir veri hattı kullanır. Çoğu zaman 8 bit veri aşağıdaki gibi aktarılır: 1 başlangıç ​​biti (düşük seviye), 8 veri biti ve 1 durdurma biti (yüksek seviye). Düşük seviye başlangıç ​​biti ve yüksek seviye durdurma biti, iletişimi başlatmak için her zaman yüksek-düşük bir geçiş olduğu anlamına gelir. UART'ı tanımlayan şey budur. Gerilim seviyesi yok, bu nedenle mikrodenetleyicinizin kullandığı her hangi bir değerde 3.3 V veya 5 V olabilir. UART üzerinden iletişim kurmak isteyen mikro denetleyicilerin, senkronizasyon için yalnızca başlangıç ​​bitlerine sahip oldukları için aktarım hızına, bit hızına karar vermeleri gerektiğini unutmayın. Buna senkronize olmayan iletişim denir.

Uzun mesafeli iletişim için (bu yüzlerce metre olmak zorunda değildir) 5 V UART çok güvenilir değildir, bu yüzden daha yüksek bir voltaja, genellikle "0" için +12 V ve "0" için -12 V'a dönüştürülür. 1" . Veri formatı aynı kalır. Öyleyse RS-232’ye sahipsiniz (ki aslında EIA-232 diye çağırmalısınız, fakat kimse bilmiyor.)

Zamanlama bağımlılığı, UART'ın en büyük dezavantajlarından biridir ve Evrensel Senkron / Asenkron Alıcı Vericisi için çözüm USART'dir . Bu UART yapabilir, aynı zamanda senkronize bir protokol. Eşzamanlı olarak sadece veri değil, aynı zamanda iletilen bir saat var. Her bir bit ile bir saat darbesi alıcıya bu bitin mandallanması gerektiğini söyler. Senkron protokoller ya Manchester kodlamada olduğu gibi daha yüksek bir bant genişliğine ya da SPI ve I2C gibi saat için ekstra bir kabloya ihtiyaç duyar.

SPI (Seri Periferik Arayüz) başka bir çok basit seri protokoldür. Bir master bir saat sinyali gönderir ve her saat darbesinde, bir bit köleye çıkar ve bir bit köle gelir. Bu nedenle sinyal isimleri saat için SCK, Master Out Slave In için MOSI ve Master In Slave Out için MISO'dur. SS (Slave Select) sinyalleri kullanarak, ana veri yolu üzerindeki birden fazla slave'i kontrol edebilir. Birden fazla slave cihazını bir master'a bağlamak için iki yol vardır, biri yukarıda belirtildiği, yani slave select'i ve diğeri de papatya zinciridir, daha az donanım pimi kullanır (çizgiler seçer), ancak yazılım karmaşıklaşır.

I2C("C karesini çizdim" diye anılan Inter-Integrated Circuit) aynı zamanda senkronize bir protokoldür ve içinde "istihbarat" bulunan ilk kişidir; Diğeri aptalca bitleri içeri ve dışarı kaydırdı ve bu da buydu. I2C, biri saat, biri veri (SDA) için biri olmak üzere yalnızca 2 kablo kullanır. Bu, master ve slave'in aynı tel üzerinden veri göndermesi, yine saat sinyalini oluşturan master tarafından kontrol edilmesi anlamına gelir. I2C, belirli bir cihazı seçmek için ayrı Slave Select kullanmıyor, ancak adresleme özelliği var. Master tarafından gönderilen ilk bayt 7 bit bir adres tutar (böylece otobüste 127 cihazı kullanabilirsiniz) ve bir sonraki baytların da master'den gelip gelmeyeceğini belirten bir okuma / yazma biti bulunur. köle. Her bayttan sonra, alıcı bayt alımını onaylamak için "0" göndermelidir, ki bu ana saatin 9 saati darbesiyle kilitlenir. Master bir bayt yazmak istiyorsa, aynı işlem tekrar eder: master veri yoluna bitin ardından bit koyar ve her seferinde verilerin okunmaya hazır olduğunu işaret etmek için bir saat atımı verir. Master veri almak istiyorsa sadece saat darbeleri oluşturur. Köle, saat darbesi verildiğinde bir sonraki bitin hazır olmasına dikkat etmek zorundadır. Bu protokol, NXP (eski adıyla Phillips) tarafından, lisans maliyetinden tasarruf etmek için, I2C ile tamamen aynı olan TWI (2-telli arayüz) kelimesini kullanarak Atmel patenti almıştır, bu nedenle herhangi bir AVR cihazı I2C'ye sahip olmayacak, ancak TWI'ye sahip olacaktır. Master veri almak istiyorsa sadece saat darbeleri oluşturur. Köle, saat darbesi verildiğinde bir sonraki bitin hazır olmasına dikkat etmek zorundadır. Bu protokol, NXP (eski adıyla Phillips) tarafından, lisans maliyetinden tasarruf etmek için, I2C ile tamamen aynı olan TWI (2-telli arayüz) kelimesini kullanarak Atmel patenti almıştır, bu yüzden herhangi bir AVR cihazı, I2C'ye sahip olmayacak, ancak TWI'ya sahip olacaktır. Master veri almak istiyorsa sadece saat darbeleri oluşturur. Köle, saat darbesi verildiğinde bir sonraki bitin hazır olmasına dikkat etmek zorundadır. Bu protokol, NXP (eski adıyla Phillips) tarafından, lisans maliyetinden tasarruf etmek için, I2C ile tamamen aynı olan TWI (2-telli arayüz) kelimesini kullanarak Atmel patenti almıştır, bu yüzden herhangi bir AVR cihazı, I2C'ye sahip olmayacak, ancak TWI'ya sahip olacaktır.

Aynı kabloda iki veya daha fazla sinyal çakışmaya neden olabilir ve bir cihaz "1" gönderirken diğerinde "0" gönderirse sorun yaşarsınız. Bu nedenle veri yolu kablolu - VEYA: iki direnç veri yolunu yüksek bir seviyeye çeker ve cihazlar sadece düşük seviye gönderir. Yüksek bir seviyeye göndermek istiyorlarsa, otobüsü serbest bırakın.

TTL (Transistör Transistörü Mantığı) bir protokol değildir. Dijital mantık için daha eski bir teknolojidir, ancak isim genellikle 5 V besleme voltajını belirtmek için kullanılır, çoğunlukla yanlış UART olarak adlandırılan şeye atıfta bulunur.


Bunların her biri hakkında bir kitap yazabilirsiniz ve görünüşe göre yoldayım. Bu sadece çok kısa bir genel bakış, bazı şeylerin açıklığa ihtiyaç duyması durumunda bize bildirin.


+1 sadece TTL'de, OP'nin, deneyimlerime göre RS232 alıcı-verici / veri yolu sürücüsünden önceki UART sinyallerini tanımlayan Seri TTL anlamına geldiğini tahmin ediyorum.
kenny

4
@Kenny - ama "seri TTL" diye bir şey yoktur. Bu UART. Gerilim 3.3 V ise ne olur? TTL, yalnızca 5 V
stevenvh,

Bahsettiğim şey bu, UART’ın G / Ç’i TTL Serial deneyimimde sık sık deniyor.
kenny

Şaşırtıcı tepki! Birkaç kez daha okuyacağım ve sorularınız olursa size bildireceğim. Sağol Steven.
capcom

8
Daha iyi bir bahis daha sonra Uart yaşı için balık tutmak olacaktır :-)
Vaibhav Garg

11

Bu, özel yanıtlar için sorular sormaktan ziyade, makaleleri okumanın iyi olacağı bir bölgeye çok yakın, ancak üreticinin bazen bulanıklaştığı önemli bir noktaya değinmek:

İki temel seri arayüz tipi vardır: senkronize ve senkronize olmayan.

Senkron ara yüzler, ayrıca sağlanan açık bir saate göre zamanlaması ile iletilen verilere sahiptir. Bunun klasik örneği SPI'dir, ancak aynı zamanda ses dönüştürücüler için I2S, JTAG, FPGA yapılandırma arayüzleri, vb. Gibi özel formlar da vardır. Genelde bunlar her zaman değil, ilk önce en anlamlı biti gönderirler.

Eşzamansız arayüzler, veri akışında kodlanmış zamanlamaya sahiptir. "Seri portlar" ve RS232 gibi ilgili standartlar için, kelimenin zamanlaması başlangıç ​​biti ile ilişkilidir ve alıcı sadece çizgiyi daha sonra doğru aralıklarla örnekler. Diğer arayüzler biraz daha karmaşık olabilir ve faz kilitli döngüleri ve algoritmaları kullanarak meraklı saatin kurtarılmasını gerektirir. Bir UART "Evrensel Asenkron Alıcı Vericisi" dir - gerçekten kelime uzunluğu, hızı ve başlangıç ​​/ bitiş koşullarına biraz esneklik sağlayan bir "seri port" uygulamak için kullanılan işlevsel bir bloğun adıdır. RS232, RS422, vb. Gibi şeyler, bunlardan elde edeceğiniz verilerin dahili elektrik sinyali için standartlardır - 1 yüksek veya düşükse, voltaj, tek uçlu veya diferansiyel.

"USART" meşru bir karışıklık kaynağı olabilir, çünkü bir çeşit melez cihazdır, "Unversal Senkron / Asenkron Alıcı Vericisi" Esasen, bu UART olarak kullanılır ve en çok UART olarak kullanılır. veriye senkronize ayrı bir saat üretebilir (veya düşünebilir) ve bit sırasını tersine çevirebilir. Genellikle SPI ile birlikte çalışacak şekilde yapılandırılabilir, ancak bitlerin başlatılması / durdurulması için ayrılan süreyi kaldıramayabilir, bu nedenle kelimeler arasında boşluklar olmadan sürekli akan I2S gibi bir şeyle çalışamayabilir.


Çok güzel bir açıklama (Y) Kısalık ekledi. Teşekkür ederim @ chris
Avi Mehenwal

8

RS-232 , başlangıçta modem ve teletypes için kullanılan çok basit bir seri protokoldür. Genel olarak seri bağlantı noktası (veya MS-Windows'da bir COM bağlantı noktası) denir. Hatta nominal olarak ± 12V seviyelerini kullanır, ancak tespit ± 3V'da belirtildiği gibi geniş ölçüde değişebilir. Bu seviyeleri bir bilgisayarın veya mikrodenetleyicinin dahili dijital sinyal seviyelerine çeviren ve bu seviyelere çeviren her zaman (genellikle MAX232 ailesinden) bir hat sürücüsü vardır.

TTL, Transistör-Transistör-Mantık anlamına gelir ve 0V yakınındaki mantıksal sıfır ve 5V yakınındaki mantıksal olanın seviyesine sahiptir. Günümüzde çoğu devre CMOS olarak inşa edilse de, çoğu zaman herhangi bir 5V mantığa TTL denir. Bugün 3.3V'da çalışan ve artık TTL olmayan birçok devre var.

İç seviyelere gelince, RS-232 hattındaki seviyeler ters çevrilir, + 12V mantıksal alçak ve -12V mantıksal yüksek anlamına gelir ve kafa karıştırıcı olabilir.

Veri formatını tarif etmek için, genellikle mantıksal sinyal gösterilmektedir. Satır boştayken yüksektir. Bir iletim düşük bir başlangıç ​​biti ile başlar, ilk önce en az anlamlı biti olan bit, isteğe bağlı bir eşlik biti ve bir ila iki durdurma biti (mantıksal 1). Buna asenkron iletim denir, çünkü start ve stop bitleri her bayt için verileri ayrı ayrı senkronize eder.

UART (Evrensel Asenkron Alıcı Vericisi), bu tür asenkronize iletişimi yapan bilgisayar veya mikrodenetleyicideki bir cihazdır.

Bir USART (Evrensel Asenkron Senkron Alıcı Vericisi) ek olarak bir tür senkron iletimi de yapabilecek bir cihazdır, bu nedenle ek S olabilir.

SPI, I²C ve USB farklı (ve çok uzun USB durumunda) hikayeleridir.


1

SPI ve CAN protokolleri hakkında neler söylediğine katılıyorum. Daha iyi performans elde etmek için CAN protokolü tasarlanmıştır. Bu Tahkim kavramında, iki cihazın iletişim kurmaya hazır olduğu, ardından önceliğine bağlı olarak iletim veya alım gerçekleştiği için kullanılır. CAN birçok sektörde yaygın olarak kullanılmaktadır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.