3.18. พื้นฐาน UART¶
UART (Universal Asynchronous Receiver-Transmitter) เป็นวิธีที่เก่าแก่และเรียบง่ายที่สุดในการส่งข้อมูลไบต์ระหว่างไมโครคอนโทรลเลอร์สองตัว หรือระหว่างไมโครคอนโทรลเลอร์กับคอมพิวเตอร์โฮสต์ สายสัญญาณสองเส้นรับหน้าที่ส่งข้อมูล -- เส้นละหนึ่งทิศทาง -- และสายกราวด์ร่วมทำหน้าที่อ้างอิงสัญญาณ ทั้งสองฝั่งไม่ใช้สัญญาณนาฬิการ่วมกัน แต่ตกลงกัน อัตราบอด ล่วงหน้า แล้วกู้คืนจังหวะบิตจากสายสัญญาณข้อมูลนั้นเอง
3.18.1. เฟรมข้อมูล¶
อักขระแต่ละตัวบนสายสัญญาณจะถูกห่อหุ้มด้วยเฟรม: บิตเริ่มต้น บิตข้อมูล บิตพาริตี (ถ้ามี) และบิตหยุดหนึ่งหรือสองบิต
หนึ่งเฟรม UART: บิตเริ่มต้น บิตข้อมูลแปดบิต และบิตหยุด แต่ละบิตกว้างหนึ่งช่วงเวลาบิต (1 / baudrate วินาที)¶
สายสัญญาณอยู่ในสถานะ idle สูง ตัวรับสัญญาณคอยจับขอบขาลง ซึ่งเป็นสัญญาณเริ่มต้นเฟรมใหม่ จากนั้นจะสุ่มตัวอย่างสายสัญญาณหนึ่งครั้งต่อช่วงเวลาบิต -- โดยทั่วไปจะอยู่ตรงกลางของแต่ละบิต -- แล้วประกอบบิตเหล่านั้นกลับเป็นอักขระ บิตหยุดจะคืนสายสัญญาณกลับสู่ idle เพื่อให้ตรวจจับบิตเริ่มต้นถัดไปได้
3.18.2. อัตราบอด¶
ช่วงเวลาบิต -- และความเร็วของลิงก์ -- ถูกกำหนดโดย อัตราบอด ซึ่งคือจำนวนบิตต่อวินาที ค่ามาตรฐานได้แก่ 9600, 19200, 38400, 57600, 115200, 230400, 460800 และ 921600 โดย 115200 เป็นค่าดีฟอลต์ที่ใช้กันมากที่สุด ทั้งสองฝั่งต้องตกลงกันในเรื่องอัตราบอดภายในค่าเบี่ยงเบนสักสองสามเปอร์เซ็นต์ มิฉะนั้นตัวรับจะสุ่มตัวอย่างบิตในจุดที่ผิด และข้อมูลจะกลายเป็นสัญญาณรบกวน
อัตราบอดที่สูงขึ้นส่งข้อมูลได้มากขึ้นต่อวินาที แต่ไวต่อความยาวสาย ความจุ และความแม่นยำของนาฬิกาที่แต่ละฝั่งมากกว่า สำหรับลิงก์สั้นระหว่างบอร์ดสองตัวบนโต๊ะเดียวกัน ใช้ 115200 ถึง 921600 ได้อย่างสบาย
3.18.3. การเดินสาย¶
ลิงก์ UART ใช้สายสัญญาณสามเส้น:
การเดินสาย UART: TX ของบอร์ดหนึ่งต่อไปยัง RX ของอีกบอร์ด และกราวด์ทั้งสองต่อถึงกัน¶
TX → RX ทั้งสองทิศทาง พินส่งข้อมูลของบอร์ดหนึ่งคือพินรับข้อมูลของอีกบอร์ด ข้อผิดพลาดที่มือใหม่มักทำคือต่อ TX → TX -- เอาต์พุตสองตัวขัดกันเอง โดยไม่มีข้อมูลที่ตัวรับฝั่งไหนเลย
กราวด์ร่วม ระดับสัญญาณอ้างอิงกราวด์ ดังนั้นบอร์ดทั้งสองต้องมีกราวด์ร่วม มิฉะนั้นตัวรับจะเห็นแรงดันไฟฟ้าที่ผิดพลาดบนสาย
3.18.4. ระดับแรงดันและชั้นฟิสิคัล¶
ระดับสัญญาณบนพิน UART ของกล้องเป็น 3.3 V CMOS: กราวด์สำหรับลอจิกศูนย์ และ 3.3 V สำหรับลอจิกหนึ่ง อุปกรณ์ใดก็ตามที่ใช้ UART 3.3 V CMOS -- ไมโครคอนโทรลเลอร์อื่น อะแดปเตอร์ USB-to-serial ที่ตั้งเป็น 3.3 V หรือโมดูล GPS 3.3 V -- สามารถต่อสายตรงได้
Note
อุปกรณ์ UART 5 V CMOS (ไมโครคอนโทรลเลอร์รุ่นเก่า โมดูล GPS บางรุ่น บอร์ดเซนเซอร์เก่าบางตัว) ใช้การกำหนดเฟรม UART เหมือนกันแต่ใช้ระดับลอจิก 5 V การต่อสายตรงกับกล้องนั้นไม่ปลอดภัย: TX 5 V ที่ขับพิน RX ของกล้องจะเกินแรงดันอินพุตสูงสุดสัมบูรณ์บนกล้องที่ไม่รองรับ 5 V และ TX 3.3 V ของกล้องอาจไม่ถึงค่าขีดแบ่งสูงของอุปกรณ์ 5 V สำหรับลอจิกหนึ่งที่สะอาด
การแปลแรงดันระหว่างสองระดับต้องใช้ active line driver -- IC เลื่อนระดับแบบสองทิศทางที่มีทรานซิสเตอร์ขับสัญญาณของตัวเองทั้งสองฝั่งของแต่ละสาย ตัวเลื่อนระดับแบบพาสซีฟที่ใช้ MOSFET และ pull-up จาก การแปลงระดับสัญญาณ ไม่เพียงพอที่นี่: ขอบขาขึ้นของพวกมันอาศัยการชาร์จสายผ่านตัวต้านทาน ซึ่งเหมาะสำหรับความเร็วสวิตช์แต่ช้าเกินไปสำหรับ UART ที่อัตราบอด 115200 แต่ละบิตใช้เวลาประมาณ 8 µs และการเลื่อนระดับแบบ RC ของตัวเลื่อนแบบพาสซีฟจะทำให้บิตหนึ่งยืดทับบิตถัดไป
Active line driver สร้างขอบสัญญาณที่คมชัดในทั้งสองทิศทางที่อัตรา UART เต็มรูปแบบ เลือกชิ้นส่วนที่รองรับอัตราบอดที่ลิงก์จะใช้งาน ต่อ TX และ RX ของกล้องกับฝั่ง 3.3 V ของตัวเลื่อนระดับ และต่อ TX และ RX ของอุปกรณ์ 5 V กับฝั่ง 5 V
ชั้นฟิสิคัลรุ่นเก่าสามแบบใช้การกำหนดเฟรมเหมือนกันแต่แรงดันต่างกัน และต้องใช้ตัวแปลงระดับระหว่างพวกมันกับไมโครคอนโทรลเลอร์ 3.3 V:
RS-232 ใช้กับพอร์ตซีเรียลบนคอมพิวเตอร์เดสก์ท็อปและอุปกรณ์อุตสาหกรรมบางอย่าง สายสัญญาณแกว่งระหว่างประมาณ
±5 Vถึง±15 Vโดย idle อยู่ที่ขั้วลบ ขั้วสัญญาณกลับกันและแรงดันสูงกว่า CMOS ชิปในตระกูล MAX232 / MAX3232 (หรือที่เทียบเท่า) ทำหน้าที่แปลงสัญญาณRS-422 มาตรฐานสัญญาณดิฟเฟอเรนเชียลสำหรับลิงก์แบบจุดต่อจุด (ไดรเวอร์หนึ่งตัว ตัวรับสูงสุดสิบตัว) ไดรเวอร์ส่งสัญญาณบนสายคู่สมดุล ตัวรับมองเห็น ความต่าง ระหว่างสายและไม่ไวต่อสัญญาณรบกวนโหมดร่วมตลอดทาง ลิงก์แบบ full-duplex ใช้สองคู่ -- คู่ละทิศทาง RS-422 ส่งสัญญาณได้ระยะหลายสิบเมตรถึงหนึ่งกิโลเมตรขึ้นอยู่กับอัตราบอด และชิป RS-422 transceiver อยู่ระหว่าง TX / RX ของกล้องกับสายคู่สมดุล
RS-485 เป็น multi-drop รุ่นน้องของ RS-422 -- ใช้สัญญาณดิฟเฟอเรนเชียลเหมือนกัน แต่ออกแบบมาให้รองรับไดรเวอร์และตัวรับรวมสูงสุด 32 ตัวบนบัสเดียว ลิงก์ส่วนใหญ่เป็น half-duplex บนสายคู่เดียว โดยไดรเวอร์และตัวรับของแต่ละโหนดใช้สายร่วมกัน และซอฟต์แวร์เป็นผู้ตัดสินว่าใครจะพูด ใช้ในระบบบัสอัตโนมัติอุตสาหกรรม (Modbus, DMX512, Profibus) ที่สายสัญญาณยาวและสภาพแวดล้อมมีสัญญาณรบกวน ชิป RS-485 transceiver อยู่ระหว่าง TX / RX ของกล้องกับสายคู่ดิฟเฟอเรนเชียล
ทั้งสองยังคงส่งเฟรม UART ที่ระดับบิตพื้นฐาน การตั้งค่า machine.UART ของกล้อง (อัตราบอด บิต พาริตี บิตหยุด) เหมือนกันโดยไม่คำนึงว่าชั้นฟิสิคัลใดรับส่งสัญญาณอยู่อีกฝั่งของ transceiver