คุณภาพการให้บริการ RS232 / USB CDC / ข้อความควรมีการตรวจสอบหรือไม่?


13

USB มีการรับประกันคุณภาพบริการสำหรับข้อมูลที่ส่งระหว่างอุปกรณ์ USB-CDC ของฉันและโฮสต์ USB หรือไม่

ฉันรู้กับ RS232 แบบดั้งเดิมในสถานการณ์ที่มีเสียงดัง (เช่นพอร์ตการวินิจฉัยรถยนต์) บิตที่ไม่ดีเกิดขึ้นบ่อยครั้งพอที่ checksums สำคัญต่อโปรโตคอล หากฉันต้องปรับโปรโตคอลดังกล่าวให้เป็นแอปพลิเคชัน pure-USB ฉันสามารถละเว้นการตรวจสอบและการจัดการข้อผิดพลาดที่เกี่ยวข้องได้อย่างปลอดภัยหรือไม่?

สำหรับการอ้างอิงฉันใช้ AT91SAM7S256 กับกรอบUSB-CDC ที่จัดทำโดย Atmel

ปรับปรุง:

ผมใช้สิทธิของ Google-Fu ของฉันอีกนิดเกี่ยวกับปัญหานี้และพบนี้บทความซึ่งอธิบายเป็น subclass CDC สำหรับอีเธอร์เน็ตจำลองและรัฐ:

ผ่านสาย USB เฟรมอีเทอร์เน็ตที่หุ้มห่อจะเริ่มต้นด้วยที่อยู่ MAC ปลายทางและสิ้นสุดก่อนเฟรมจะตรวจสอบ (ไม่จำเป็นต้องใช้การตรวจสอบเฟรมเนื่องจาก USB เป็นการขนส่งที่เชื่อถือได้)

พวกเขาอาจหมายถึง USB-CDC เป็นการขนส่งที่เชื่อถือได้ไม่ใช่ USB โดยทั่วไปเนื่องจากคลาสอุปกรณ์บางอย่างที่มีไว้สำหรับข้อมูล bursty (เว็บแคม?) อาจมีความเร็วสูงที่ไม่ต้องการเติมบัฟเฟอร์หากโปรแกรมไม่สามารถสำรวจข้อมูลได้เร็วพอ

ฉันยังต้องการการยืนยันเพิ่มเติมในเรื่องนี้

คำตอบ:


12

ขึ้นอยู่กับประเภทของอุปกรณ์ที่ใช้

ข้อมูลสรุปอย่างย่อมาจากUSB สั้น :

การโอนขัดจังหวะ

  • รับประกันความหน่วง
  • ไปป์ไลน์ - ทิศทางเดียว
  • ตรวจหาข้อผิดพลาดและลองอีกครั้งในช่วงถัดไป

การโอนแบบไม่แน่นอน

  • การถ่ายโอน Isochronous ให้การเข้าถึงแบนด์วิดท์ USB ที่รับประกัน
  • เวลาแฝงที่ถูกผูกไว้
  • ไปป์ไลน์ - ทิศทางเดียว
  • การตรวจจับข้อผิดพลาดผ่าน CRC แต่ไม่ลองอีกครั้งหรือรับประกันการจัดส่ง
  • โหมดความเร็วสูงและเต็มเท่านั้น
  • ไม่มีการสลับข้อมูล

โอนเงินจำนวนมาก

  • ใช้เพื่อถ่ายโอนข้อมูลระเบิดขนาดใหญ่
  • การตรวจจับข้อผิดพลาดผ่าน CRC พร้อมรับประกันการจัดส่ง
  • ไม่มีการรับประกันแบนด์วิดธ์หรือเวลาแฝงต่ำสุด
  • Stream Pipe - โหมดความเร็วสูงและทิศทางเดียวเท่านั้น

ในการตอบคำถามของคุณอย่างถูกต้องคุณจะต้องค้นหาว่ามีโหมดการถ่ายโอนใดบ้างที่ใช้ในการติดตั้งอุปกรณ์ CDC ข้อมูลจำเพาะคลาสอุปกรณ์ CDC อาจเป็นจุดเริ่มต้น หากคุณมีรหัสที่มาสำหรับอุปกรณ์นั้นจะดียิ่งขึ้น ฉันไม่คุ้นเคยกับคลาส CDC ดังนั้นฉันจึงไม่สามารถแสดงความคิดเห็นเกี่ยวกับมาตรฐานการใช้งานได้ แต่เมื่อดูที่เอกสารและ Google ในครั้งแรกดูเหมือนว่ามีความยืดหยุ่นในการใช้งาน

แก้ไข

หลังจากอ่านเอกสาร Atmel ที่คุณเชื่อมโยงแล้วจะปรากฏว่าขึ้นอยู่กับคุณ!

Abstract Control Model ต้องการอินเตอร์เฟสสองอินเตอร์เฟสหนึ่ง Communication Class Interface และหนึ่ง Data Class Interface แต่ละรายการต้องมีจุดเชื่อมโยงสองจุด อดีตจะต้องมีหนึ่งปลายทางที่ทุ่มเทให้กับการจัดการอุปกรณ์ (จุดสิ้นสุดการควบคุมเริ่มต้น 0) และหนึ่งสำหรับการแจ้งเตือนเหตุการณ์ (จุดสิ้นสุดการขัดจังหวะ IN เพิ่มเติม)

Data Class Interface ต้องการจุดปลายสองจุดที่จะส่งข้อมูลไปยังและจากโฮสต์ ปลายทางเหล่านี้อาจเป็นแบบ Bulk หรือแบบ Isochronous ทั้งนี้ขึ้นอยู่กับแอปพลิเคชัน ในกรณีของตัวแปลง USB เป็นอนุกรมการใช้จุดปลายแบบกลุ่มน่าจะเหมาะสมกว่าเนื่องจากความน่าเชื่อถือของการส่งข้อมูลเป็นสิ่งสำคัญและการถ่ายโอนข้อมูลไม่สำคัญ

ดังนั้นในการดำเนินการของคุณโปรดใช้การถ่ายโอนข้อมูลจำนวนมากบนอินเทอร์เฟซ Data Class ของคุณเพื่อให้แน่ใจว่าการขนส่งที่เชื่อถือได้


คำตอบที่ดี สรุปประเภทปลายทางนั้นมีประโยชน์มาก รหัส Atmel สำหรับโครงการอนุกรม CDC ที่อธิบายในpdf ที่เชื่อมโยงได้รับการตั้งค่าให้ทำหน้าที่เป็น USB เข้ากับอะแดปเตอร์อนุกรมดังนั้นจึงได้กำหนดค่าให้ใช้จุดสิ้นสุดแบบกลุ่มแล้ว ยอดเยี่ยม
Steven T. Snyder

3

USB อาจเป็นโปรโตคอลที่เชื่อถือได้ แต่อุปกรณ์และไดรเวอร์ทั้งหมดที่ใช้ CDC นั้นเชื่อถือได้ ฉันเคยเห็นอุปกรณ์ที่แตกต่างกันสองอย่างซึ่งมีนิสัยที่ค่อนข้างน่ารำคาญในการข้ามไบต์ของข้อมูลที่ถูกส่งมาจากพีซี การสังเกตข้อมูลในขอบเขตแสดงให้เห็นว่าปัญหาไม่ได้เกิดจากอุปกรณ์รับข้อมูลทำงานหนักเกินไป - ข้อมูลบางส่วนหายไป (ฉันสามารถจับแพ็คเก็ตทั้งหมดในขอบเขตได้ส่วนหัวและท้ายกระดาษมีอยู่ แต่บางส่วน ของไบต์ระหว่างพวกเขาหายไป) ฉันไม่แน่ใจว่ามีอะไรผิดปกติที่จะทำให้เกิดพฤติกรรมดังกล่าว แต่การพยายามส่งข้อมูลเร็วเกินไปดูเหมือนจะเป็นปัจจัยสนับสนุน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.