RS232 vs USB CDC hizmet kalitesi / mesajlar bir sağlama toplamı içermeli mi?


13

USB'nin, USB-CDC aygıtım ile USB ana bilgisayarım arasında gönderilen veriler için hizmet kalitesi garantisi var mı?

Gürültülü bir durumda (örn. Otomotiv teşhis portu) geleneksel RS232 ile biliyorum ki, kötü bitler genellikle sağlama toplamları protokol için önemlidir. Böyle bir protokolü saf USB uygulamasına uyarlayacak olsaydım, sağlama toplamını ve ilgili hata işleme rutinlerini güvenle atlayabilir miyim?

Referans olarak, Atmel tarafından sağlanan USB-CDC çerçeveli bir AT91SAM7S256 kullanıyorum .

Güncelleme:

Google-Fu'mı bu sorun üzerinde biraz daha uzun süre kullandım ve Ethernet öykünmesi için bir CDC alt sınıfını açıklayan ve şunu bildiren bu makaleyi buldum :

USB kablosu üzerinden, kapsüllenmiş Ethernet çerçeveleri hedef MAC adresinden başlayarak ve çerçeve sağlama toplamından hemen önce biter. (USB güvenilir bir aktarım olduğundan çerçeve sağlama toplamı gerekli değildir.)

Bunlar, USB-CDC'nin genel olarak USB değil güvenilir bir aktarım olduğu anlamına gelebilir, çünkü yüksek verimli veri toplamaya (web kamerası?) Yönelik bazı cihaz sınıfları, bir program veri için yeterince hızlı bir şekilde yoklama yapamazsa arabellekleri doldurmak istemeyebilir.

Yine de bu konuda ek onay istiyorum.

Yanıtlar:


12

Bu , cihazınızın hangi uç nokta türlerini kullandığına bağlıdır.

Özetle USB'den kısa bir özet :

Transferleri Kesin

  • Garantili Gecikme Süresi
  • Akış Borusu - Tek Yönlü
  • Hata algılama ve sonraki dönem yeniden deneme.

Eş Zamanlı Transferler

  • Eşzamanlı Aktarımlar, USB bant genişliğine Garantili erişim sağlar.
  • Sınırlı gecikme.
  • Akış Borusu - Tek Yönlü
  • CRC ile hata tespiti, ancak yeniden deneme veya teslimat garantisi yok.
  • Yalnızca tam ve yüksek hız modları.
  • Veri değiştirme yok.

Toplu Transferler

  • Büyük veriyi aktarmak için kullanılır.
  • Teslimat garantisi ile CRC üzerinden hata tespiti .
  • Bant genişliği veya minimum gecikme garantisi yoktur.
  • Akış Borusu - Yalnızca Tek Yönlü Tam ve yüksek hız modları.

Sorunuzu doğru bir şekilde cevaplamak için, CDC cihazını uygulamak için altında hangi aktarım modlarının kullanıldığını bulmanız gerekecektir. CDC aygıt sınıfı belirtimi bir başlangıç ​​noktası olabilir. Cihaz için kaynak kodunuz varsa, bu daha da iyi olurdu. CDC sınıfına aşina değilim, bu yüzden uygulama standartları hakkında yorum yapamam, ancak ilk bakışta bazı belgeler ve google'da, uygulamada bazı esneklik var gibi görünüyor.

DÜZENLE

Bağladığınız Atmel belgesini okuduktan sonra size kalmış gibi görünüyor!

Özet Kontrol Modeli, bir iletişim Sınıfı Arabirimi ve bir Veri Sınıfı Arabirimi olmak üzere iki arabirim gerektirir. Her birinin iki ilişkili uç noktası olmalıdır. İlk cihaz yönetimi için bir uç noktaya (varsayılan Kontrol uç noktası 0) ve olay bildirimi için bir ek noktaya (ek Kesme IN uç noktası) sahip olmalıdır.

Veri Sınıfı Arabirimi, ana bilgisayardan veri alışverişi için iki uç noktaya ihtiyaç duyar. Uygulamaya bağlı olarak, bu uç noktalar Toplu veya Eşzamanlı olabilir. USB - seri dönüştürücü durumunda, toplu uç noktaların kullanılması muhtemelen daha uygundur, çünkü iletimin güvenilirliği önemlidir ve veri aktarımları zaman açısından kritik değildir.

Bu nedenle, uygulamanızda, güvenilir aktarım sağlamak için Veri Sınıfı arayüzünüzde toplu aktarımlar kullandığınızdan emin olun.


Mükemmel cevap. Uç nokta tiplerinin özeti çok kullanışlıdır. Açıklanan CDC seri proje için Atmel kodu bağlantılı pdf yüzden zaten kullanım dökme uç noktaları şekilde yapılandırılmış, seri adaptörüyle USB gibi davranmaya ayarlanır. Mükemmel!
Steven T. Snyder

3

USB nispeten güvenilir bir protokol olabilir, ancak CDC kullanan tüm aygıtlar ve sürücüler güvenilir değildir. PC tarafından gönderilen bayt veri atlama alışkanlığına sahip birkaç farklı cihaz gördüm. Bir kapsamdaki verileri gözlemlemek, sorunun alıcı aygıtın taşmasıyla ilgili olmadığını gösterdi - bazı bayt verileri basitçe kayboldu (kapsamdaki tüm paketi yakalayabildim; üstbilgi ve altbilginin ikisi de mevcuttu, ancak bazıları aralarındaki baytlardan bazıları eksikti). Bu davranışa neden olanın tam olarak neyin yanlış gittiğinden emin değilim, ancak çok hızlı veri göndermeye çalışmak katkıda bulunan bir faktör gibi görünüyordu.

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.