จังหวะเวลาของอักขระ UART
UART รับข้อมูลโดยไม่มีสัญญาณนาฬิการ่วมกันได้อย่างไร?
ตัวรับใช้เหตุการณ์เริ่มต้นที่ถูกต้องเพื่อกำหนดจังหวะเวลา จากนั้นสุ่มตัวอย่างบิตของอักขระด้วยสัญญาณนาฬิกาภายในของตนเองและตรวจสอบตำแหน่งบิตหยุด ปลายทางทั้งสองต้องตั้งค่าให้เข้ากันได้ อักขระใหม่สามารถปรับแนวจังหวะเวลาใหม่ได้ แต่การตรวจสอบรูปแบบเฟรมไม่ได้พิสูจน์ความถูกต้องครบถ้วนของข้อมูลหรือความสำเร็จของแอปพลิเคชัน แผนภาพลอจิกอย่างง่ายเหล่านี้ไม่ได้แสดงแรงดันที่ขั้วต่อหรือผลการวัดผลิตภัณฑ์
เริ่มต้น
เหตุการณ์เริ่มต้นที่ถูกต้องจะกำหนดจุดอ้างอิงจังหวะเวลาภายใน
สุ่มตัวอย่าง
การสุ่มตัวอย่างภายในช่วงบิตที่มีสถานะคงที่ช่วยหลีกเลี่ยงช่วงเปลี่ยนสถานะ
หยุด
ระดับต่ำที่ตำแหน่งบิตหยุดที่คาดไว้อาจทำให้มีการแจ้งข้อผิดพลาดของรูปแบบเฟรม
บันทึกอัตราบอด จำนวนบิตข้อมูล พาริตี และบิตหยุดที่ปลายทางทั้งสอง
เปรียบเทียบจังหวะเวลาของลอจิกและข้อผิดพลาดในการรับระหว่างการทดสอบที่ได้รับอนุญาต
ตรวจสอบไบต์จริงของแอปพลิเคชันและการตีความข้อความ
รายการตรวจสอบสำหรับการเลือกและการตรวจยืนยัน — ขยาย
| รายการตรวจสอบ | สิ่งที่ต้องยืนยัน | วิธีตรวจสอบ |
|---|---|---|
| อินเทอร์เฟซ | ความเข้ากันได้ทางไฟฟ้า | อ่านเอกสารของรุ่นนั้น |
| อักขระ | จังหวะเวลาและรูปแบบตรงกัน | เปรียบเทียบการตั้งค่าทั้งสองฝั่ง |
| การประยุกต์ใช้งาน | ไบต์และข้อความถูกต้อง | เก็บบันทึกการทดสอบด้วยรูปแบบข้อมูลที่ทราบค่า |
ปลายทางอนุกรมไม่ได้ใช้สายสัญญาณนาฬิกาแยกร่วมกัน แล้วตัวรับระบุไบต์จากสัญญาณที่เปลี่ยนแปลงได้อย่างไร? คำตอบอยู่ที่บิตเริ่มต้น บิตหยุด และจังหวะเวลาของแต่ละปลายทาง การเข้าใจกระบวนการนี้ช่วยอธิบายว่าเหตุใดความแตกต่างเล็กน้อยในการตั้งค่าจึงทำให้อักขระเสียหายหรือเกิดข้อผิดพลาดของรูปแบบเฟรมได้ และเหตุใดการเชื่อมต่อ Ethernet จึงไม่ได้พิสูจน์ว่าการรับข้อมูลอนุกรมถูกต้อง

แยกอินเทอร์เฟซทางไฟฟ้าออกจากรูปแบบอักขระ
อุปกรณ์อุตสาหกรรมอาจเชื่อมต่อกับเซิร์ฟเวอร์อุปกรณ์อนุกรมหรืออุปกรณ์รับส่งข้อมูลผ่านใยแก้วนำแสงโดยใช้ RS232 หรือ RS485 ตัวรับส่งสัญญาณอินเทอร์เฟซจะแปลงสัญญาณบนสายเป็นสัญญาณลอจิกที่ชิปสามารถประมวลผลได้ UART จัดการแต่ละบิตตามรูปแบบอักขระที่เลือก UART ย่อมาจาก universal asynchronous receiver/transmitter หรือวงจรรับส่งข้อมูลแบบอะซิงโครนัสอเนกประสงค์ โดยปกติการทำงานแบบอะซิงโครนัสจะไม่มีสายสัญญาณนาฬิกาสำหรับซิงโครไนซ์ร่วมกัน
ระดับสูงและต่ำในภาพประกอบเหล่านี้แสดงสถานะลอจิกของ UART ไม่ใช่แรงดันจริงที่ขั้วต่อ RS232 หรือแรงดันเทียบกับกราวด์ของตัวนำแต่ละเส้นของ RS485 ต้องตรวจสอบชนิดอินเทอร์เฟซ กราวด์อ้างอิง การเดินสายแบบดิฟเฟอเรนเชียล และข้อจำกัดของอุปกรณ์แยกต่างหาก แผนภาพลอจิกไม่ใช่คู่มือการต่อสาย และต้องไม่ต่อขา TTL เข้ากับอินเทอร์เฟซที่ไม่เข้ากันโดยตรง
เส้นทางการรับสามารถสรุปอย่างง่ายเป็นตัวรับส่งสัญญาณสาย วงจรลอจิกรับของ UART บัฟเฟอร์ไบต์ และแอปพลิเคชัน การส่งผ่านสัญญาณระหว่างขั้นตอนไม่ได้ยืนยันว่าแอปพลิเคชันได้รับระเบียนข้อมูลทางธุรกิจที่ถูกต้อง การรับอักขระต้องทำงานได้ก่อนที่ข้อมูลจะเข้าสู่เครือข่าย
ส่วนใดของเฟรมที่ไม่ใช่ข้อมูลของแอปพลิเคชัน?
ในรูปแบบ 8N1 ที่ใช้กันทั่วไป 8 ระบุบิตข้อมูลแปดบิต N หมายถึงไม่มีพาริตี และ 1 ระบุบิตหยุดหนึ่งบิต อักขระยังมีบิตเริ่มต้นด้วย ดังนั้นบิตข้อมูลของแอปพลิเคชันแปดบิตจึงไม่ใช่ทั้งหมดที่ส่งบนสาย บิตเริ่มต้นและบิตหยุดใช้จัดรูปแบบอักขระ ต้องไม่นำไปต่อท้ายข้อมูลของแอปพลิเคชันเป็นค่าเพิ่มเติม
ในการแสดงลอจิกแบบไม่กลับขั้วที่ใช้กันทั่วไป สถานะว่างเป็นระดับสูง บิตเริ่มต้นเป็นระดับต่ำ และบิตหยุดกลับสู่ระดับสูง โดยทั่วไปข้อมูลจะส่งบิตที่มีนัยสำคัญต่ำสุดก่อน แต่ตัวเลือกของอุปกรณ์ต่อพ่วงอาจแตกต่างกัน และเอกสารของปลายทางทั้งสองต้องระบุสอดคล้องกัน D0 ถึง D7 เป็นป้ายระบุตำแหน่ง ไม่ได้ระบุไบต์ตายตัวหรือบังคับให้เกิดการเปลี่ยนสถานะระหว่างบิตที่อยู่ติดกัน
บิตข้อมูลที่มีค่าเท่ากันต่อเนื่องกันสามารถทำให้สายคงสถานะเดิมได้ ตัวรับไม่สามารถนับการเปลี่ยนสถานะเพื่อนับบิตแปดบิต แต่ต้องอาศัยจังหวะเวลาหลังเหตุการณ์เริ่มต้นเพื่อระบุช่วงบิตต่อเนื่องกัน นี่คือเหตุผลที่การตั้งค่าอัตราบอดให้ตรงกันมีความสำคัญ
การรับเริ่มต้นจากสถานะว่างได้อย่างไร?
UART เฝ้าตรวจอินพุตของตน หลังตรวจพบการเปลี่ยนสถานะที่อาจเป็นจุดเริ่มต้น จะตรวจสอบระดับต่ำตามเงื่อนไขการเริ่มต้นของวงจรที่ใช้และกำหนดเวลาสุ่มตัวอย่างข้อมูล สัญญาณรบกวนชั่วขณะสั้น ๆ ไม่ได้ถือเป็นบิตเริ่มต้นที่สมบูรณ์โดยอัตโนมัติ การกรองและการตรวจยืนยันจุดเริ่มต้นแตกต่างกันระหว่างอุปกรณ์ต่อพ่วง จึงต้องไม่สันนิษฐานว่าอุปกรณ์ใช้ลอจิกภายในเหมือนกัน
ให้นึกถึงบิตเริ่มต้นว่าเป็นสัญญาณเตรียมเริ่มก่อนอักขระแต่ละตัว ปลายทางทั้งสองกำหนดอัตราโดยประมาณให้ตรงกัน จากนั้นตัวรับใช้ตัวจับเวลาภายในเพื่อสุ่มตัวอย่างตามลำดับ การเปรียบเทียบนี้ไม่ได้หมายความว่ามีการส่งเสียงบอกเริ่มจริง ๆ หรือ UART ทั่วไปจะตรวจรู้อัตราบอดใด ๆ ได้โดยอัตโนมัติ ยังคงต้องตั้งค่าให้เข้ากันได้
UART หลายชนิดใช้การสุ่มตัวอย่างเกินอัตรา โดยสัญญาณนาฬิกาสุ่มตัวอย่างภายในทำงานหลายรอบในช่วงหนึ่งบิต เพื่อช่วยกำหนดจุดเริ่มต้นหรือตำแหน่งสุ่มตัวอย่างที่ถูกต้อง บางชนิดใช้ผลจากการสุ่มตัวอย่างหลายครั้งในการตัดสิน วิธีนี้ช่วยในการระบุตำแหน่งขอบสัญญาณและรับมือสิ่งรบกวนได้ แต่ไม่ได้รองรับความคลาดเคลื่อนอย่างไม่จำกัด ตัวคูณการสุ่มตัวอย่างของชิปหนึ่งรุ่นไม่ใช่ข้อกำหนดสากลของผลิตภัณฑ์ FCTELE

เหตุใดจึงสุ่มตัวอย่างใกล้กึ่งกลางบิต?
ใกล้รอยต่อระหว่างบิต สัญญาณอาจกำลังเปลี่ยนสถานะ การแพร่กระจายสัญญาณ ความเร็วของขอบสัญญาณ และค่าเกณฑ์อินพุตมีผลต่อเวลาที่ตัวรับตัดสินว่าเป็นระดับสูงหรือต่ำ การสุ่มตัวอย่างภายในช่วงที่คงที่ทำให้ตีความได้ง่ายกว่าการสุ่มตัวอย่างใกล้ขอบสัญญาณ จุดที่อยู่ตรงกลางใช้อธิบายแนวคิด ไม่ได้อ้างว่าชิปจริงสุ่มตัวอย่างเพียงครั้งเดียวหรือสุ่มตรงจุดกึ่งกลางทางเรขาคณิตเสมอ
ตัวส่งและตัวรับใช้สัญญาณนาฬิกาภายในแยกกัน หากทั้งสองกำหนดระยะเวลาบิตไม่ตรงกัน ตำแหน่งสุ่มตัวอย่างที่คาดการณ์ไว้อาจค่อย ๆ เลื่อนคลาด แม้บิตเริ่มต้นจะปรับแนวจังหวะเวลาให้ตรงกันแล้ว ความต่างของจังหวะเวลาอาจเห็นชัดขึ้นในช่วงท้ายของอักขระ ซึ่งอาจทำให้สุ่มตัวอย่างผิดช่วงใกล้บิตข้อมูลสุดท้ายหรือบิตหยุด
ข้อความสั้นที่ถูกต้องเป็นครั้งคราวไม่ได้พิสูจน์ว่าการตั้งค่าเชื่อถือได้ รูปแบบบิตบางแบบอาจบดบังปัญหา ขณะที่บางแบบทำให้ปัญหาปรากฏ การทดสอบเพื่อตรวจรับควรครอบคลุมเนื้อหาจริงของแอปพลิเคชันและการส่งต่อเนื่อง แทนที่จะถือว่าอักขระไม่กี่ตัวที่อ่านได้บนเทอร์มินัลเป็นหลักฐานเพียงพอ
การตรวจสอบบิตหยุดบอกอะไรเราได้บ้าง?
หลังบิตข้อมูลตามที่ตั้งค่าไว้และบิตพาริตีหากมี ตัวรับจะตรวจสอบตำแหน่งบิตหยุดตามวิธีการทำงานของวงจร หากพบระดับต่ำในตำแหน่งที่คาดว่าจะเป็นสถานะหยุด อาจตั้งสถานะข้อผิดพลาดของรูปแบบเฟรม ข้อผิดพลาดนี้รายงานว่าการตรวจสอบรูปแบบการรับไม่ผ่าน แต่ไม่ได้ระบุว่าสายเส้นใดมีปัญหา
อัตราบอดหรือรูปแบบอักขระที่ไม่ตรงกัน สัญญาณรบกวน และสถานะระดับต่ำที่ค้างนานผิดปกติอาจทำให้เกิดอาการที่เกี่ยวข้องกัน ในทางกลับกัน การไม่มีข้อผิดพลาดของรูปแบบเฟรมไม่ได้พิสูจน์ว่าข้อมูลถูกต้อง เพราะการสุ่มตัวอย่างที่ผิดพลาดอาจบังเอิญพบระดับสูงที่ตำแหน่งบิตหยุด ข้อมูลยังต้องผ่านการตรวจสอบความถูกต้องครบถ้วนหรือการตรวจสอบในระดับแอปพลิเคชัน อีกทั้งบิตหยุดไม่ใช่เครื่องหมายสิ้นสุดของข้อความทางธุรกิจที่สมบูรณ์
วิธีที่แฟล็กข้อผิดพลาดแนบมากับอักขระ การที่ไดรเวอร์จะทิ้งอักขระเหล่านั้นหรือไม่ และซอฟต์แวร์สามารถเข้าถึงตัวนับได้หรือไม่ ขึ้นอยู่กับฮาร์ดแวร์และซอฟต์แวร์ การที่แอปพลิเคชันไม่แสดงอะไรไม่ได้พิสูจน์ทันทีว่าไม่มีอินพุตบนสาย เพราะขั้นตอนใดขั้นตอนหนึ่งอาจกรองอักขระที่ผิดพลาดออก ควรเก็บสถานะไว้ควบคู่กับเนื้อหาไบต์

เฟรมถัดไปปรับจังหวะเวลาให้ตรงใหม่ได้อย่างไร?
หลังจบอักขระ ตัวรับจะกลับไปค้นหาเหตุการณ์เริ่มต้นถัดไปตามกฎการทำงานของตน จุดเริ่มต้นใหม่ที่ถูกต้องเปิดโอกาสให้การรับปรับแนวจังหวะเวลาใหม่ การส่งต่อเนื่องไม่จำเป็นต้องมีช่วงเงียบยาวระหว่างอักขระ แต่ต้องเป็นไปตามรูปแบบอักขระและข้อกำหนดระยะเวลาหยุดที่ตั้งค่าไว้
การซิงโครไนซ์ทีละอักขระไม่ได้แก้ไขการรับส่งทั้งหมดให้ถูกต้องโดยอัตโนมัติ หากรับอักขระผิด โปรโตคอลของแอปพลิเคชันยังคงต้องจัดการกับไบต์ที่หาย ซ้ำ หรือเสียหาย ขอบเขตอักขระของ UART ขอบเขตแพ็กเก็ตเครือข่ายของเซิร์ฟเวอร์อนุกรม และขอบเขตข้อความของแอปพลิเคชันเป็นคนละสิ่งกัน การเพิ่มบิตหยุดไม่สามารถทดแทนการแยกวิเคราะห์ข้อความที่ถูกต้องได้
ในการตรวจสอบปัญหา ให้บันทึกอัตราบอด จำนวนบิตข้อมูล พาริตี บิตหยุด และชนิดอินเทอร์เฟซของปลายทางทั้งสอง จากนั้นสังเกตรูปคลื่นและตัวนับข้อผิดพลาดภายใต้เงื่อนไขที่ได้รับอนุญาต เปลี่ยนตัวแปรทีละตัวและเปรียบเทียบข้อมูลที่ทราบค่าก่อนและหลังการเปลี่ยนแปลง การเปลี่ยนพารามิเตอร์บนลิงก์สำคัญของระบบการผลิตต้องมีการจัดเตรียมงานบำรุงรักษา แทนการลองผิดลองถูกโดยไม่มีการควบคุม
เชื่อมโยงหลักฐานจากแต่ละขั้นตอน
หากรูปคลื่นอินพุตผิดปกติอยู่แล้ว ให้ตรวจสอบอินเทอร์เฟซทางไฟฟ้า การเดินสาย และสัญญาณรบกวน หากรูปคลื่นยังแยกแยะได้แต่ไบต์เสียหาย ให้ตรวจสอบรูปแบบอักขระ จังหวะเวลา และการสุ่มตัวอย่าง หากไบต์ถูกต้องแต่แอปพลิเคชันทำงานไม่สำเร็จ ให้ตรวจสอบการบัฟเฟอร์ การห่อหุ้มข้อมูลสำหรับเครือข่าย และการตีความของแอปพลิเคชัน หลักฐานในแต่ละขั้นตอนช่วยชี้แนวทางได้ดีกว่าการเปลี่ยนสวิตช์ Ethernet ซ้ำ ๆ
เซิร์ฟเวอร์อุปกรณ์อนุกรมและผลิตภัณฑ์รับส่งข้อมูลของ FCTELE ใช้เชื่อมต่ออุปกรณ์อุตสาหกรรม อินเทอร์เฟซจริงและความสามารถในการตั้งค่าขึ้นอยู่กับเอกสารของรุ่นที่เกี่ยวข้อง คู่มือนี้อธิบายการรับของ UART โดยทั่วไป ไม่ใช่วงจรภายในหรือค่าความคลาดเคลื่อนที่วัดได้ของผลิตภัณฑ์เฉพาะรุ่น และไม่ได้ระบุความเร็วสูงสุดที่ยังไม่ผ่านการตรวจสอบ หลักฐานการส่งมอบควรประกอบด้วยการตั้งค่า เงื่อนไขการทดสอบ รูปคลื่นต้นฉบับ และการตรวจยืนยันในระดับแอปพลิเคชัน
เอกสารอ้างอิง
TI: ภาพรวมโพรโทคอล UART และข้อผิดพลาด; Microchip: ตัวอย่างตัวรับแบบอะซิงโครนัส; ข้อมูลผลิตภัณฑ์เกตเวย์อนุกรม FCTELE. เป็นภาพประกอบทั่วไป ไม่ใช่วงจรผลิตภัณฑ์หรือผลการวัดค่าความคลาดเคลื่อน
แปลจากบทความทางเทคนิคภาษาจีน: อ่านบทความต้นฉบับภาษาจีน.
คำถามที่พบบ่อย
สถานะลอจิกของ UART เหมือนกับแรงดันของ RS232 หรือไม่?
ไม่ใช่ ตัวรับส่งสัญญาณสายทำหน้าที่แปลงสัญญาณไฟฟ้า ต้องตรวจสอบแรงดันและการเดินสายของอินเทอร์เฟซจริงแยกต่างหาก
การไม่มีข้อผิดพลาดของรูปแบบเฟรมพิสูจน์ได้หรือไม่ว่าข้อมูลถูกต้อง?
ไม่ การสุ่มตัวอย่างบิตหยุดอาจบังเอิญได้ระดับสูงแม้ข้อมูลจะผิด ยังคงต้องตรวจสอบความถูกต้องครบถ้วนและตรวจสอบในระดับแอปพลิเคชัน
บิตหยุดทำให้ข้อความของแอปพลิเคชันสิ้นสุดลงหรือไม่?
ไม่ บิตหยุดเป็นส่วนหนึ่งของรูปแบบอักขระ ส่วนโปรโตคอลของแอปพลิเคชันเป็นตัวกำหนดขอบเขตข้อความ
ขอบเขตและข้อมูลอ่านเพิ่มเติม
จังหวะเวลาของ UART ทั่วไป ไม่ใช่วงจรหรือค่าความคลาดเคลื่อนที่วัดได้ของอุปกรณ์เฉพาะรุ่น
การเอสเคปไบต์และการกำหนดขอบเขตข้อความในการสื่อสารอนุกรม · การส่งต่อข้อมูล Ethernet และการบำรุงรักษา


