UART: A Hardware Communication Protocol Understanding Universal Asynchronous Receiver/Transmitter

 นาย ธนโชติ ฟ้าคะนอง ชทค1/1 เลขที 5

บทคัดย่อ

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

 

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

“ปัญหาเดียวที่ใหญ่ที่สุดในการสื่อสาร คือภาพลวงตาที่มันเกิดขึ้น”
—จอร์จ เบอร์นาร์ด ชอว์
โปรโตคอลการสื่อสารมีบทบาทสำคัญในการจัดการสื่อสารระหว่าง
อุปกรณ์ ได้รับการออกแบบในรูปแบบต่างๆ ตามความต้องการของระบบ และ
โปรโตคอลเหล่านี้มีกฎเฉพาะ ระหว่างอุปกรณ์เพื่อให้การสื่อสารที่ประสบความสำเร็จ 
ระบบสมองกลฝังตัว ไมโครคอนโทรลเลอร์ และคอมพิวเตอร์ส่วนใหญ่ใช้ UART เป็น
รูปแบบของโปรโตคอลการสื่อสารระหว่างอุปกรณ์กับอุปกรณ์ ท่ามกลางความพร้อมใช้งาน
โปรโตคอลการสื่อสารที่มีความสามารถ UART ใช้เพียงสองสายในการส่งสัญญาณและ
รับสัญญาณ 

แม้จะเป็นวิธีที่ใช้กันอย่างแพร่หลายในโปรโตคอลการสื่อสารฮาร์ดแวร์ แต่ก็ไม่ได้รับการปรับ
ให้เหมาะสมใช้งานได้อย่างเต็มที่ตลอดเวลา
ไม่ได้รับการปรับให้เหมาะสมอย่างเต็มที่ตลอดเวลา 
การใช้โปรโตคอลเฟรมอย่างเหมาะสมมักถูกละเลยเมื่อใช้โมดูล UART ภายในไมโครคอนโทรลเลอร์
คำจำกัดความของ UART คือโปรโตคอลการสื่อสารฮาร์ดแวร์ที่ใช้อะซิงโครนัส
การสื่อสารแบบอนุกรม nous ด้วยความเร็วที่กำหนดได้ อะซิงโครนัสหมายถึงที่นั่น
ไม่มีสัญญาณนาฬิกาเพื่อซิงโครไนซ์บิตเอาต์พุตจากอุปกรณ์ส่งสัญญาณ
ไปถึงจุดสิ้นสุดการรับ
Interface 
 Figure 1. Two UARTs directly communicate with each other.
รูปที่ 1. UART สองตัวสื่อสารกันโดยตรง
สัญญาณสองสัญญาณของอุปกรณ์ UART แต่ละเครื่องมีชื่อ
 เครื่องส่ง (Tx)
 ตัวรับ (Rx)
วัตถุประสงค์หลักของสายเครื่องส่งและตัวรับสำหรับอุปกรณ์
แต่ละตัวคือเพื่อส่งและรับข้อมูลอนุกรมสำหรับการสื่อสารแบบอนุกรม
 
Figure 2. UART with data bus. 
รูปที่ 2 UART พร้อมบัสข้อมูล
UART ที่ส่งสัญญาณเชื่อมต่อกับบัสข้อมูลควบคุมที่ส่งข้อมูลในรูปแบบคู่ขนาน จากนี้ ข้อมูลจะถูกส่งไปยังสายส่ง (สาย) แบบอนุกรมทีละบิตไปยัง UART ที่รับ ในทางกลับกัน 
จะแปลงข้อมูลซีเรียลเป็นแบบขนานสำหรับอุปกรณ์ที่รับสาย UART ทำหน้าที่เป็นสื่อในการสื่อสารในการส่งและรับข้อมูลหนึ่ง
ไปยังอีกข้อมูลหนึ่ง โปรดทราบว่าอุปกรณ์ UART มีพินส่งและรับเฉพาะสำหรับการส่งหรือรับ สำหรับ UART และการสื่อสารแบบอนุกรมส่วนใหญ่ อัตราบอดจะต้องตั้งค่าเหมือนกันทั้งบน
อุปกรณ์ส่งและรับ อัตราบอดคืออัตราที่ข้อมูลถูกถ่ายโอนไปยังช่องทางการสื่อสาร ในบริบทของพอร์ตอนุกรม
อัตราบอดที่ตั้งไว้จะทำหน้าที่เป็นจำนวนบิตสูงสุดต่อวินาทีที่จะถ่ายโอน
ตารางที่ 1 สรุปสิ่งที่เราต้องรู้เกี่ยวกับ UART
 
เปิดรูปภาพ
อินเทอร์เฟซ UART ไม่ใช้สัญญาณนาฬิกาเพื่อซิงโครไนซ์อุปกรณ์เครื่องส่งและตัวรับสัญญาณ
มันส่งข้อมูลแบบอะซิงโครนัส แทนที่จะเป็นสัญญาณนาฬิกา ตัวส่งจะสร้างบิตสตรีม
ตามสัญญาณนาฬิกาในขณะที่เครื่องรับใช้สัญญาณนาฬิกาภายในเพื่อสุ่มตัวอย่าง
ข้อมูลที่เข้ามา จุดของการซิงโครไนซ์ได้รับการจัดการโดยมีอัตราบอดเท่ากัน
ในอุปกรณ์ทั้งสอง การไม่ทำเช่นนั้นอาจส่งผลต่อระยะเวลาในการส่งและรับข้อมูล
ที่อาจทำให้เกิดความคลาดเคลื่อนระหว่างการจัดการข้อมูล ความแตกต่างที่
อนุญาตของอัตราบอดสูงถึง 10% ก่อนที่จังหวะเวลาของบิตจะห่างเหินเกินไป
การส่งข้อมูล ใน UART โหมดการส่งจะอยู่ในรูปของแพ็กเก็ต
ชิ้นส่วนที่เชื่อมต่อเครื่องส่งและเครื่องรับรวมถึงการสร้างแพ็คเก็ตอนุกรมและ
ควบคุมสายฮาร์ดแวร์ทางกายภาพเหล่านั้น แพ็กเก็ตประกอบด้วยบิตเริ่มต้น
ดาต้าเฟรม พาริตีบิต และบิตหยุด
 

Figure 3. UART packet.
รูปที่ 3 แพ็กเก็ต UART
Start Bit  
โดยปกติสายส่งข้อมูล UART จะอยู่ที่ระดับไฟฟ้าแรงสูงเมื่อไม่ได้ส่งข้อมูล ในการเริ่มต้นการถ่ายโอนข้อมูล 
UART ที่ส่งสัญญาณจะดึงสายส่งจากสูงไปต่ำเป็นเวลาหนึ่ง (1) รอบนาฬิกา เมื่อ UART
ที่ได้รับตรวจพบการเปลี่ยนแปลงของแรงดันไฟฟ้าสูงไปต่ำ มันจะเริ่มอ่านบิตในกรอบข้อมูลที่ความถี่
ของอัตราบอร์ด
 
Figure 4. Start bit. 
รูปที่ 4 บิตเริ่มต้น
กรอบข้อมูล
กรอบข้อมูลประกอบด้วยข้อมูลจริงที่กำลังถ่ายโอน อาจมีความยาวได้ห้า (5) บิตสูงสุดแปด (8) บิต 
หากใช้พาริตีบิต หากไม่มีการใช้พาริตีบิต กรอบข้อมูลอาจมีความยาวได้เก้า (9) บิต ในกรณีส่วนใหญ่
ข้อมูลจะถูกส่งด้วยบิตที่มีนัยสำคัญน้อยที่สุดก่อน
 

Figure 5. Data frame.
รูปที่ 5. กรอบข้อมูล

Parity

Parity
อธิบายความเท่าเทียมกันหรือความคี่ของตัวเลข พาริตีบิตเป็นวิธีหนึ่งในการรับ UART

เพื่อบอกว่าข้อมูลใด ๆ มีการเปลี่ยนแปลงในระหว่างการส่งหรือไม่ บิตสามารถเปลี่ยนแปลงได้โดย

การแผ่รังสีแม่เหล็กไฟฟ้า อัตราบอดที่ไม่ตรงกัน หรือการถ่ายโอนข้อมูลทางไกล

หลังจากที่ UART ที่ได้รับอ่าน data frame จะนับจำนวนบิตที่มีค่า 1 และตรวจสอบว่าผลรวมเป็นเลขคู่
หรือเลขคี่ ถ้าพาริตีบิตเป็น 0 (พาริตีคู่) บิตที่ 1 หรือตรรกะสูงในกรอบข้อมูลควรรวมเป็นเลขคู่
หากพาริตีบิตเป็น 1 (พาริตีคี่) ค่า 1 บิตหรือลอจิกไฮส์ในกรอบข้อมูลควรรวมเป็นเลขคี่ เมื่อบิตพาริตีตรงกับข้อมูล UART จะรู้ว่าการส่งข้อมูลไม่มีข้อผิดพลาด แต่ถ้าพาริตีบิตเป็น 0
และผลรวมเป็นคี่ หรือพาริตีบิตเป็น 1 และผลรวมเป็นเลขคู่ UART จะรู้ว่าบิตในกรอบข้อมูลมี
การเปลี่ยนแปลง
 
 Figure 6. Parity bits.
รูปที่ 6 Parity bits

Stop Bits
ในการส่งสัญญาณการสิ้นสุดของแพ็กเก็ตข้อมูล UART ที่ส่งจะขับเคลื่อนสายส่งข้อมูลจากแรงดันไฟฟ้าต่ำไปเป็นไฟฟ้าแรงสูงในระยะเวลาหนึ่ง (1) ถึงสอง (2) บิต

 Figure 7. Stop bits.

รูปที่ 7 Stop bits

ขั้นตอนของการส่งสัญญาณ UART
ขั้นแรก: UART ที่ส่งสัญญาณได้รับข้อมูลแบบขนานจากบัสข้อมูล

Figure 8. Data bus to the transmitting UART.
                        รูปที่ 8 บัสข้อมูลไปยัง UART ที่ส่งสัญญาณ
 
ประการที่สอง: UART ที่ส่งสัญญาณจะเพิ่มบิตเริ่มต้น บิตพาริตี และบิตหยุดลงในเฟรมข้อมูล

Figure 9. UART data frame at the Tx side.

                         รูปที่ 9 กรอบข้อมูล UART ที่ด้าน Tx

ประการที่สาม: แพ็กเก็ตทั้งหมดจะถูกส่งตามลำดับโดยเริ่มจากบิตเริ่มต้นไปยังบิตหยุดจาก UART ที่ส่งไปยัง UART ที่รับ UART 
ที่รับจะสุ่มตัวอย่างสายข้อมูลที่อัตราบอดที่กำหนดค่าไว้ล่วงหน้า
Figure 10. UART transmission.
รูปที่ 10. การส่ง UART
ประการที่สี่: UART ที่ได้รับจะละทิ้งบิตเริ่มต้น บิตพาริตี และบิตหยุดจากกรอบข้อมูล
Figure 11. The UART data frame at the Rx side.
                                           รูปที่ 11 กรอบข้อมูล UART ที่ด้าน Rx  
ประการที่ห้า: UART ที่ได้รับจะแปลงข้อมูลอนุกรมกลับเป็นแบบขนานและโอนไปยังบัสข้อมูลในส่วนรับ

Figure 12. Receiving UART to data bus.
                                    รูปที่ 12. การรับ UART ไปยังบัสข้อมูล

Frame Protocol
    คุณลักษณะสำคัญประการหนึ่งที่มีอยู่ใน UART แต่ยังไม่ได้ใช้อย่างเต็มที่คือการใช้งานโปรโตคอลเฟรม การใช้งานหลักและความสำคัญของสิ่งนี้เป็นการเพิ่มคุณค่าสำหรับการรักษาความปลอดภัยและการป้องกันในแต่ละอุปกรณ์
ตัวอย่างเช่น เมื่ออุปกรณ์สองเครื่องใช้โปรโตคอลเฟรม UART เดียวกัน มีแนวโน้มว่าเมื่อเชื่อมต่อกับ UART เดียวกันโดยไม่ตรวจสอบการกำหนดค่า อุปกรณ์จะเชื่อมต่อกับพินที่แตกต่างกันซึ่งอาจทำให้ระบบทำงานผิดปกติในทางกลับกัน การนำสิ่งนี้ไปใช้เพื่อรับรองความปลอดภัย เนื่องจากจำเป็นต้องแยกวิเคราะห์ข้อมูลที่ได้รับซึ่งสอดคล้องกับโปรโตคอลเฟรมการออกแบบ โปรโตคอลเฟรมแต่ละตัวได้รับการออกแบบมาโดยเฉพาะเพื่อให้มีเอกลักษณ์และปลอดภัยในการออกแบบโปรโตคอลเฟรม นักออกแบบสามารถตั้งค่าส่วนหัวและส่วนท้ายที่ต้องการ รวมถึง CRC ให้กับอุปกรณ์ต่างๆ ในรูปที่ 13 สอง (2) ไบต์ถูกตั้งค่าเป็นส่วนหนึ่งของส่วนหัว


ประการที่สอง: ใต้แผนที่หน่วยความจำ ให้ตรวจสอบที่อยู่ UART

Figure 13. Sample UART frame protocol.

รูปที่ 13 ตัวอย่างโปรโตคอลเฟรม UART

 

จากตัวอย่าง คุณสามารถตั้งค่าส่วนหัว ตัวอย่าง และ CRC เฉพาะสำหรับอุปกรณ์ของคุณ

Header 1 (H1 is 0xAB) and Header 2 (H2 is 0xCD)
ส่วนหัวเป็นตัวระบุเฉพาะที่กำหนดว่าคุณกำลังสื่อสารกับอุปกรณ์ที่ถูกต้อง

Command (CMD) Selection
คำสั่งจะขึ้นอยู่กับรายการคำสั่งที่ออกแบบมาเพื่อสร้างการสื่อสารระหว่างอุปกรณ์สองเครื่อง
Data Length (DL) per Command
ความยาวของข้อมูลจะขึ้นอยู่กับคำสั่งที่เลือก คุณสามารถเพิ่มความยาวของข้อมูลให้สูงสุดได้ขึ้นอยู่กับคำสั่งที่เลือก ดังนั้นจึงอาจแตกต่างกันไปตามการเลือก ในกรณีดังกล่าว สามารถปรับความยาวของข้อมูลได้

Data n (Varying Data)
ข้อมูลคือเพย์โหลดที่จะถ่ายโอนจากอุปกรณ์

Trailer 1 (T1 is 0xE1) and Trailer 2 (T2 is 0xE2)
รถพ่วงเป็นข้อมูลที่เพิ่มเข้ามาหลังจากสิ้นสุดการส่ง เช่นเดียวกับส่วนหัว พวกเขาสามารถระบุได้โดยไม่ซ้ำกัน

Cyclic Redundancy Checking (CRC Formula)
สูตรการตรวจสอบความซ้ำซ้อนในการวนรอบเป็นโหมดการตรวจจับข้อผิดพลาดเพิ่มเติมเพื่อตรวจจับการเปลี่ยนแปลงข้อมูลดิบโดยไม่ได้ตั้งใจ ค่า CRC ของอุปกรณ์ส่งสัญญาณจะต้องเท่ากับการคำนวณ CRC ที่ปลายเครื่องรับเสมอ
ขอแนะนำให้เพิ่มการรักษาความปลอดภัยโดยใช้โปรโตคอลเฟรมสำหรับอุปกรณ์ UART แต่ละเครื่อง โปรโตคอลเฟรมต้องการการกำหนดค่าที่เหมือนกันทั้งบนอุปกรณ์ส่งและรับ

UART Operations
เมื่อใช้โปรโตคอลการสื่อสารฮาร์ดแวร์ใดๆ จำเป็นต้องตรวจสอบเอกสารข้อมูลและคู่มืออ้างอิงฮาร์ดแวร์ก่อน

นี่คือขั้นตอนที่ต้องปฏิบัติตาม:

ขั้นแรก: ตรวจสอบอินเทอร์เฟซแผ่นข้อมูลของอุปกรณ์
Figure 14. Microcontroller data sheet.

    รูปที่ 14. แผ่นข้อมูลไมโครคอนโทรลเลอร์
Figure 15. Microcontroller memory map.
       รูปที่ 15. แผนที่หน่วยความจำไมโครคอนโทรลเลอร์
ประการที่สาม: ตรวจสอบรายละเอียดเฉพาะสำหรับ UART PORT เช่น 
โหมดการทำงาน ความยาวของบิตข้อมูล พาริตีบิต และบิตหยุด รายละเอียดพอร์ต UART
ตัวอย่างในแผ่นข้อมูล: UART Port MCU ตัวอย่างมีพอร์ต UART แบบฟูลดูเพล็กซ์ ซึ่งเข้ากันได้กับ UART
มาตรฐานของพีซีอย่างสมบูรณ์ พอร์ต UART ให้อินเทอร์เฟซ UART แบบง่ายแก่อุปกรณ์ต่อพ่วง
หรือโฮสต์อื่น ๆ ซึ่งสนับสนุนฟูลดูเพล็กซ์, DMA และการถ่ายโอนข้อมูลอนุกรมแบบอะซิงโครนัส
พอร์ต UART รองรับบิตข้อมูลห้าถึงแปดบิต และไม่มีแพริตีคู่หรือคี่ เฟรมสิ้นสุดด้วยบิตหยุดหนึ่งและครึ่ง
หรือสองบิต
ประการที่สี่: ตรวจสอบรายละเอียดการทำงานของ UART รวมถึงการคำนวณอัตราบอด
อัตราบอดถูกกำหนดค่าโดยใช้สูตรตัวอย่างต่อไปนี้ สูตรนี้จะแตกต่างกันไปขึ้นอยู่กับไมโครคอนโทรลเลอร์

รายละเอียดตัวอย่างการดำเนินการ UART:
  • 5 to 8 data bits
  • 1, 2, or 1 and ½ stop bits
  • None, or even or odd parity
  • Programmable oversample rate by 4, 8, 16, 32
  • Baud rate = PCLK/((M + N/2048) × 2OSR + 2 × DIV 

    OSR (oversample rate)

    UART_LCR2.OSR = 0 to 3

    DIV (baud rate divider)

    UART_DIV = 1 to 65535

    M (DIVM fractional baud rate M)

    UART_FBR.DIVM = 1 to 3

    N (DIVM fractional baud rate M)

    UART_FBR.DIVN = 0 to 2047 

    ประการที่ห้า: สำหรับอัตราบอด ตรวจสอบให้แน่ใจว่าได้ตรวจสอบนาฬิกาต่อพ่วง (PCLK) ใดที่จะใช้ ในตัวอย่างนี้ มี PCLK 26 MHz และ PCLK 16 MHz ที่พร้อมใช้งาน โปรดสังเกตว่า OSR, DIV, DIVM และ DIVN แตกต่างกันไปตามอุปกรณ์

    ไม่มีคำอธิบาย
    เปิดรูปภาพ

    หก: ส่วนถัดไปคือการตรวจสอบรายละเอียดการลงทะเบียนสำหรับการกำหนดค่า UART ดูพารามิเตอร์ในการคำนวณอัตรา
    บอดเช่น UART_LCR2, UART_DIV และ UART_FBR ตารางที่ 4 จะนำไปสู่การลงทะเบียนเฉพาะที่ครอบคลุม
    ไม่มีคำอธิบาย

    เจ็ด: ภายใต้การลงทะเบียนแต่ละครั้ง ให้ตรวจสอบรายละเอียดและแทนที่ค่าเพื่อคำนวณอัตราบอด จากนั้นเริ่มใช้งาน UART


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

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


    อ้างอิง

    Basics of UART Communication.” Electronics Hub, July 2017.

    Campbell, Scott. “Basics of UART Communication.” Circuit Basics. Keim, Robert.

    Back to Basics: The Universal Asynchronous Receiver/ Transmitter.” All About Circuits, December 2016.

    What Is UART Protocol? UART Communication Explained.” Arrow.

    Eric Peňa

    Mary Legaspi
    เปิดรูปภาพ

ความคิดเห็น