คำอธิบายเกี่ยวกับ UART: มันคืออะไร ทำงานอย่างไร และทำไมจึงสำคัญ

UART คืออะไร
  • UART (Universal Asynchronous Receiver/Transmitter) ช่วยให้การสื่อสารแบบอนุกรมทำได้ง่ายและเชื่อถือได้ โดยใช้เพียงสองสายในการแปลงข้อมูลระหว่างรูปแบบขนานและอนุกรม
  • มีหลายรูปแบบ ได้แก่ TTL, RS-232 และ RS-485 ซึ่งแต่ละแบบเหมาะสำหรับแรงดันไฟฟ้า ระยะทาง และประเภทของเครือข่ายที่แตกต่างกัน โดยมีโปรโตคอลเพิ่มเติมซ้อนทับอยู่ด้านบนเพื่อเพิ่มความทนทานหรือรองรับสถานการณ์ที่มีอุปกรณ์หลายตัว
  • การทำงานที่ถูกต้องต้องอาศัยการกำหนดค่าที่เหมาะสม (อัตราการส่งข้อมูล, จำนวนบิตข้อมูล, แรงดันไฟฟ้า) และบัฟเฟอร์หรือการควบคุมการไหลเพื่อป้องกันการสูญหายของข้อมูล โดยมีแอปพลิเคชันเชิงปฏิบัติที่หลากหลาย ตั้งแต่โมดูลสำหรับผู้ใช้งานทั่วไปไปจนถึงเครือข่ายเซ็นเซอร์แบบมัลติเพล็กซ์ในระดับอุตสาหกรรม

คุณเคยสงสัยไหมว่าคอมพิวเตอร์ของคุณสื่อสารกับโมดูล GPS ชิปบลูทูธ หรือแม้แต่บางอุปกรณ์รุ่นเก่าอย่างเครื่องพิมพ์และโมเด็มได้อย่างไร?ฮีโร่ผู้ไม่ได้รับการยกย่องที่ทำให้การเชื่อมต่อเหล่านั้นเป็นไปได้ก็คือ UART หรือ Universal Asynchronous Receiver/Transmitter ในขณะที่โลกเทคโนโลยีในปัจจุบันเน้นไปที่การเชื่อมต่อ USB และไร้สายที่รวดเร็วทันใจ แต่ UART ก็ยังคงทำงานอย่างเงียบๆ ในการส่งข้อมูลแบบอนุกรมในทุกสิ่ง ตั้งแต่บอร์ดไมโครคอนโทรลเลอร์สำหรับผู้ใช้งานทั่วไปไปจนถึงระบบอุตสาหกรรมที่ซับซ้อน

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

ทำความเข้าใจพื้นฐาน: UART คืออะไร?

UART ย่อมาจาก Universal Asynchronous Receiver/Transmitterแม้ชื่อจะฟังดูน่ากลัว แต่ UART จริงๆ แล้วเป็นส่วนประกอบฮาร์ดแวร์ที่เรียบง่าย (อาจเป็นชิปเฉพาะหรือรวมอยู่ในไมโครคอนโทรลเลอร์) ที่แปลงข้อมูลระหว่างรูปแบบขนานและอนุกรม หน้าที่หลักของมันคือการส่งและรับข้อมูลอนุกรมระหว่างระบบดิจิทัลเช่น ระหว่างไมโครคอนโทรลเลอร์และเซ็นเซอร์หรืออุปกรณ์ต่อพ่วงที่เชื่อมต่ออยู่

แตกต่างจากโปรโตคอลการสื่อสารเฉพาะทาง เช่น SPI หรือ I2C UART ไม่ใช่โปรโตคอลการสื่อสารโดยตรง แต่เป็นวงจรตรรกะมันไม่ได้กำหนดโปรโตคอลการส่งข้อความหรือรูปแบบการกำหนดที่อยู่เฉพาะเจาะจง แต่กำหนดวิธีการส่งบิต: แบบอะซิงโครนัส แบบอนุกรม และในรูปแบบที่ทั้งผู้ส่งและผู้รับตกลงกัน

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

การสื่อสาร UART ทำงานอย่างไร

หน่วย UART สื่อสารแบบอะซิงโครนัส ซึ่งหมายความว่าไม่มีสายสัญญาณนาฬิกาเฉพาะที่เชื่อมต่อหน่วยต่างๆ เข้าด้วยกันแต่ข้อมูลจะถูกส่งเป็นแพ็กเก็ต และทั้งสองฝ่ายต้องตกลงกันเกี่ยวกับความเร็วในการสื่อสาร ซึ่งเรียกว่าอัตราบอด (baud rate ) นอกจากข้อมูลหลักแล้ว แต่ละแพ็กเก็ตจะมีบิตเริ่มต้น (start bit) เพื่อระบุจุดเริ่มต้น และบิตหยุด (stop bit) หนึ่งบิตขึ้นไปเพื่อระบุจุดสิ้นสุด

ต่อไปนี้คือภาพรวมทีละขั้นตอนของกระบวนการส่งข้อมูลผ่าน UART:

  • การเตรียมข้อมูล: หน่วยส่งข้อมูล UART จะรับข้อมูลแบบขนานจากแหล่งที่มา เช่น CPU แล้วประกอบเข้าเป็นแพ็กเก็ต แพ็กเก็ตนี้ประกอบด้วยบิตเริ่มต้น บิตข้อมูลจำนวนหนึ่งที่สามารถกำหนดค่าได้ (โดยทั่วไปคือ 5 ถึง 9 บิต) บิตพาริตีเสริมสำหรับตรวจสอบข้อผิดพลาด และบิตหยุดหนึ่งหรือสองบิต
  • การส่งข้อมูลแบบอนุกรม: อินเทอร์เฟซ UART ส่งข้อมูลบิตทีละบิตผ่านสาย Tx ด้วยอัตราการส่งข้อมูล (baud rate) ที่ตกลงกันไว้ล่วงหน้า
  • รับ: ตัวรับ UART จะตรวจสอบสาย Rx ของมัน เมื่อตรวจพบขอบขาลง (การเปลี่ยนจากสูงเป็นต่ำ) ของบิตเริ่มต้น มันจะทำการซิงโครไนซ์และสุ่มตัวอย่างบิตถัดไปให้สอดคล้องกับอัตรา Baud
  • การถอดรหัสข้อมูล: หลังจากได้รับบิตทั้งหมดแล้ว รวมถึงบิตพาริตีและบิตหยุด (ถ้ามี) หน่วยประมวลผล UART จะแปลงสตรีมข้อมูลแบบอนุกรมกลับเป็นข้อมูลแบบขนานและส่งไปยังอุปกรณ์รับข้อมูล

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

การแยกส่วนแพ็กเก็ตข้อมูล UART: โครงสร้างเฟรม

ข้อมูลทุกส่วนที่ส่งผ่านทาง UART จะถูกบรรจุอยู่ใน 'เฟรม' หรือแพ็กเก็ต ซึ่งประกอบด้วยฟิลด์ที่แตกต่างกันหลายฟิลด์:

  • สถานะไม่ได้ใช้งาน: เมื่อไม่ได้ส่งสัญญาณ สายไฟจะคงอยู่ในระดับแรงดันไฟฟ้าสูง (ลอจิก '1' หรือที่เรียกว่า 'มาร์ค') ซึ่งมีประโยชน์สำหรับการตรวจสอบความสมบูรณ์ของสายไฟและการตรวจจับว่าอุปกรณ์ถูกถอดปลั๊กหรือทำงานผิดปกติหรือไม่
  • บิตเริ่มต้น: การส่งสัญญาณเริ่มต้นด้วยบิตเริ่มต้น ซึ่งเป็นค่าตรรกะ '0' ('ช่องว่าง') โดยส่งสัญญาณผ่านการดึงสายส่งสัญญาณลงต่ำ ตัวรับสัญญาณใช้การเปลี่ยนแปลงนี้เพื่อซิงโครไนซ์และเริ่มต้นการกำหนดเวลาบิต
  • บิตข้อมูล: บิตเหล่านี้บรรจุข้อมูลหลัก—โดยปกติจะมีขนาด 5 ถึง 9 บิต ที่พบมากที่สุดคือ 7 หรือ 8 บิต ข้อมูลเกือบทุกครั้งจะถูกส่งโดยเริ่มจากบิตที่มีค่าต่ำที่สุด (LSB) ก่อน ตัวอย่างเช่น อักขระ ASCII 'S' (เลขฐานสอง 1010011) จะถูกส่งเป็น 1 1 0 0 1 0 1
  • บิตพาริตี (ไม่บังคับ): บิตพิเศษสำหรับตรวจจับข้อผิดพลาด กำหนดค่าเป็นคู่หรือคี่ ตัวส่งข้อมูล UART จะนับจำนวน '1' ในข้อมูล บิตพาริตีจะถูกตั้งค่าเพื่อให้แน่ใจว่าผลลัพธ์ตรงกับกฎพาริตี ตัวรับ UART จะทำการตรวจสอบซ้ำ หากผลลัพธ์ไม่ตรงกัน แสดงว่ามีบิตบางส่วนเปลี่ยนแปลงระหว่างการส่ง
  • บิตหยุด: หลังจากข้อมูลและพาริตี (ถ้ามี) แล้ว บิตหยุดหนึ่งหรือสองบิตจะทำให้สายกลับสู่สถานะว่าง (สูง) ซึ่งจะทำให้ตัวรับมีเวลาประมวลผลไบต์และเตรียมพร้อมสำหรับเฟรมถัดไป

สำหรับการกำหนดค่า UART ทั่วไป (8 บิตข้อมูล ไม่มีพาริตี 1 บิตหยุด—"8N1") แต่ละเฟรมจะมี 10 บิตต่ออักขระที่ส่ง ทำให้ประสิทธิภาพของโปรโตคอลอยู่ที่ประมาณ 80%อาจฟังดูน้อยเมื่อเทียบกับประสิทธิภาพที่สูงกว่าของอีเธอร์เน็ตในการส่งแพ็กเก็ตขนาดใหญ่ แต่ UART โดดเด่นในเรื่องการแลกเปลี่ยนข้อมูลขนาดเล็กและเรียบง่าย ซึ่งเป็นจุดที่อีเธอร์เน็ตอาจสิ้นเปลืองทรัพยากร

ฮาร์ดแวร์เบื้องหลัง UART: ส่วนประกอบและฟังก์ชัน

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

องค์ประกอบภายในหลักที่พบในดีไซน์ UART ประกอบด้วย:

  • เครื่องกำเนิดสัญญาณนาฬิกา: ทำหน้าที่กำหนดจังหวะเวลาสำหรับการสุ่มตัวอย่างและการส่งข้อมูลบิต โดยปกติจะทำงานที่ความถี่ที่เป็นพหุคูณของอัตรา Baud (เช่น 8x หรือ 16x) เพื่อรับประกันการตรวจจับบิตที่แม่นยำ
  • รีจิสเตอร์แบบเลื่อน: อุปกรณ์เหล่านี้ทำหน้าที่แปลงระหว่างข้อมูลแบบขนาน (เช่น ไบต์บนบัสข้อมูล) และการส่งข้อมูลแบบอนุกรม (ทีละบิตผ่านสายส่งหรือสายรับ)
  • บัฟเฟอร์ FIFO: วงจรเหล่านี้เป็นวงจรหน่วยความจำระยะสั้นที่จัดคิวไบต์ขาเข้าและขาออก ทำให้ซีพียูสามารถอ่านหรือเขียนข้อมูลเป็นชุดๆ และลดความเสี่ยงของการล้นหรือการสูญหายของไบต์ ซึ่งมีความสำคัญอย่างยิ่งในความเร็วในการสื่อสารสูง
  • การควบคุมการส่ง/รับสัญญาณ: ตรรกะที่เริ่มต้นหรือหยุดการส่งข้อมูล จัดการการขัดจังหวะ และจัดการสัญญาณควบคุมการไหลของข้อมูล
  • การควบคุมการอ่าน/เขียน: ทำหน้าที่ประสานการแลกเปลี่ยนข้อมูลกับโปรเซสเซอร์หรือหน่วยความจำที่เชื่อมต่ออยู่ แจ้งเตือนเมื่อมีไบต์ใหม่พร้อมใช้งานหรือเมื่อการส่งข้อมูลเสร็จสมบูรณ์ และสามารถเรียกใช้งานการขัดจังหวะของระบบได้หากจำเป็น

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

UART แตกต่างจากโปรโตคอลอื่นๆ อย่างไร (SPI, I2C)

UART มักถูกเข้าใจผิดว่าเป็นบัสอนุกรมอื่นๆ เช่น SPI และ I2C แต่โครงสร้างพื้นฐานของมันแตกต่างกันอย่างสิ้นเชิง:

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

UART โดดเด่นในด้านการเชื่อมต่ออุปกรณ์ต่ออุปกรณ์โดยตรงที่เรียบง่าย ซึ่งต้องการเพียงสองจุดเชื่อมต่อเท่านั้นด้วยจำนวนสายไฟและการตั้งค่าที่น้อยที่สุด หากคุณต้องการเชื่อมต่ออุปกรณ์มากกว่าสองเครื่องหรือจัดการมาสเตอร์หลายตัว โปรโตคอลอย่าง SPI และ I2C จะเหมาะสมกว่า

โหมดการทำงานของ UART: ซิมเพล็กซ์, ฮาล์ฟ-ดูเพล็กซ์, ฟูล-ดูเพล็กซ์

การสื่อสารผ่าน UART สามารถตั้งค่าได้ในสามโหมดพื้นฐาน โดยแต่ละโหมดตอบสนองความต้องการของแอปพลิเคชันที่แตกต่างกัน:

  • เริม: ข้อมูลเดินทางได้เพียงทิศทางเดียว คือจากตัวส่งไปยังตัวรับ ตัวรับจะไม่ส่งข้อมูลกลับมา (ลองนึกถึง GPS หรือแท็ก RFID ที่ส่งเฉพาะตำแหน่งหรือรหัสประจำตัวเท่านั้น)
  • ฮาล์ฟดูเพล็กซ์: การสื่อสารสามารถเกิดขึ้นได้ทั้งสองทาง แต่ไม่สามารถทำพร้อมกันได้ อุปกรณ์จะผลัดกันส่งและรับข้อมูล ซึ่งมักใช้ในเครือข่ายแบบบัสหรือแบบหลายจุดเชื่อมต่อ ที่ต้องหลีกเลี่ยงการชนกันของข้อมูล
  • ฟูลดูเพล็กซ์: ข้อมูลจะถูกส่งและรับพร้อมกัน โดยใช้สายไฟแยกกันสำหรับส่ง (Tx) และรับ (Rx) ทำให้สามารถสื่อสารแบบสองทางแบบเรียลไทม์ได้ เช่นเดียวกับการเชื่อมต่อระหว่างพีซีกับโมเด็ม

UART หลายตัวถูกออกแบบมาสำหรับการทำงานแบบฟูลดูเพล็กซ์ แต่โหมดการทำงานที่แน่นอนจะขึ้นอยู่กับชิปเซ็ต การเดินสาย และข้อกำหนดของแอปพลิเคชัน

ทำความเข้าใจเกี่ยวกับ UART รุ่นต่างๆ และอินเทอร์เฟซทางกายภาพ

วงจร UART เองไม่สนใจคุณสมบัติทางไฟฟ้า—มันจัดการเฉพาะระดับตรรกะเพื่อแสดงค่า '1' และ '0' เท่านั้นอย่างไรก็ตาม แรงดันไฟฟ้าและการเดินสายไฟที่จำเป็นในการส่งสัญญาณ UART เหล่านั้นผ่านการเชื่อมต่อในโลกแห่งความเป็นจริงจะแตกต่างกันไปตามการใช้งาน ต่อไปนี้คือการใช้งานที่พบได้บ่อยที่สุด:

ดูสิ่งนี้ด้วย  วิธีการติดตั้ง AdGuard Home: คู่มือฉบับสมบูรณ์ที่เข้าใจง่าย

TTL Serial (Logic-Level UART)

TTL (Transistor-Transistor Logic) serial หมายถึงการส่งสัญญาณ UART ที่แรงดันลอจิกซึ่งเข้ากันได้โดยตรงกับไมโครคอนโทรลเลอร์หรือระบบดิจิทัลโดยทั่วไป ช่วงแรงดันจะอยู่ที่ 0–5V หรือ 0–3.3V ขึ้นอยู่กับแพลตฟอร์ม 'สูง' (ลอจิก 1 หรือ 'mark') คือแรงดันที่สูงกว่า (เช่น 3.3V หรือ 5V) ในขณะที่ 'ต่ำ' (ลอจิก 0 หรือ 'space') คือ 0V

TTL UART นิยมใช้สำหรับการสื่อสารภายในบอร์ดระหว่างชิป หรือสำหรับสายเคเบิลที่สั้นมากมันง่าย ต้องการเพียงจุดอ้างอิงกราวด์ที่ใช้ร่วมกันระหว่างอุปกรณ์ทั้งสอง และไม่จำเป็นต้องใช้ตัวแปลงระดับแรงดันไฟฟ้า ตราบใดที่อุปกรณ์ทั้งสองใช้ช่วงแรงดันไฟฟ้าที่เข้ากันได้ อย่างไรก็ตาม การขาดมาตรฐานเกี่ยวกับระดับแรงดันไฟฟ้าหมายความว่า UART 5V อาจทำให้อุปกรณ์ 3.3V เสียหายได้ง่ายหากไม่มีตัวแปลงระดับแรงดันไฟฟ้า

ตัวอย่างการใช้งาน TTL UART:

  • หัวต่ออนุกรมสำหรับ Arduino หรือ Raspberry Pi (สำหรับเขียนโปรแกรมหรือดีบัก)
  • การเชื่อมต่อภายในตัวเครื่องระหว่างตัวควบคุมและโมดูลต่างๆ (GPS, Bluetooth, RFID เป็นต้น)
  • แพลตฟอร์มฮาร์ดแวร์ และ ราสเบอร์รี่ Pi เอกสารอย่างเป็นทางการระบุตำแหน่งขาสำหรับการใช้งาน TTL UART
  • อะแดปเตอร์ USB-to-TTL UART ที่ใช้ชิป FT232R หรือ CP2102

ข้อจำกัด:เนื่องจาก TTL UART เป็นแบบซิงเกิลเอนด์ (อ้างอิงกับกราวด์) และใช้ช่วงแรงดันไฟฟ้าแคบ จึงมีแนวโน้มที่จะเกิดสัญญาณรบกวนในระยะทางไกล ในกรณีส่วนใหญ่ คุณจะถูกจำกัดด้วยสายเคเบิลที่เชื่อถือได้ยาวเพียงหนึ่งหรือสองเมตรเท่านั้น หากเกินกว่านั้น ควรพิจารณาใช้ RS-232 หรือ RS-485 แทน

RS-232: มาตรฐานอนุกรมแบบคลาสสิก

RS-232 เป็นมาตรฐานอนุกรมรุ่นเก่าแก่ที่สุด ถูกกำหนดขึ้นครั้งแรกในทศวรรษ 1960 สำหรับเชื่อมต่อคอมพิวเตอร์และอุปกรณ์ต่อพ่วงเป็นโปรโตคอลที่อยู่เบื้องหลังขั้วต่อ DB9 และ DB25 ขนาดใหญ่บนอุปกรณ์รุ่นเก่าๆ โดยพื้นฐานแล้ว RS-232 ใช้การจัดเฟรมข้อมูลแบบ UART แต่มีข้อแตกต่างที่น่าสนใจอยู่บ้าง:

  • ระดับแรงดันไฟฟ้า: ระดับสัญญาณ RS-232 สูงกว่าและกลับด้านเมื่อเทียบกับ TTL ลอจิก '1' แทนด้วย -3V ถึง -12V และลอจิก '0' แทนด้วย +3V ถึง +12V
  • ปลายด้านเดียว: ต่อสายไฟหนึ่งเส้นต่อสัญญาณหนึ่งตัว โดยอ้างอิงกับกราวด์ร่วมกัน
  • ความทนทานและความยาวสายเคเบิล: แรงดันไฟฟ้าสูงของอุปกรณ์นี้ช่วยให้สามารถส่งสัญญาณได้อย่างน่าเชื่อถือในระยะทางสูงสุด 15 เมตร (ประมาณ 50 ฟุต) อัตราการส่งข้อมูลมาตรฐานโดยทั่วไปอยู่ที่ 115,200 บิตต่อวินาที แม้ว่าในระยะทางสั้นๆ จะสามารถรองรับได้ถึงไม่กี่เมกะบิตต่อวินาทีก็ตาม
  • ตัวเชื่อมต่อ: ขั้วต่อ DB9 และ DB25 แบบคลาสสิกนั้นรองรับสัญญาณหลายอย่างนอกเหนือจาก Tx, Rx และ GND เช่น RTS, CTS, DTR, DSR เป็นต้น เพื่อรองรับการควบคุมการไหลของข้อมูลด้วยฮาร์ดแวร์และแอปพลิเคชันโมเด็ม อย่างไรก็ตาม สำหรับการสื่อสารพื้นฐานนั้น จำเป็นต้องใช้เพียงสามพินเท่านั้น
  • ทิศทาง: RS-232 ช่วยให้สามารถถ่ายโอนข้อมูลแบบจุดต่อจุดและแบบสองทิศทาง (ส่งและรับพร้อมกัน) ได้ แต่รองรับได้เพียงตัวส่งและตัวรับอย่างละหนึ่งตัวต่อลิงก์เท่านั้น

อะแดปเตอร์อย่างเช่น MAX232 มักใช้ในการแปลงระหว่างลอจิกของไมโครคอนโทรลเลอร์และแรงดันไฟฟ้าสูงกว่าแบบกลับเฟสของ RS-232ห้ามเชื่อมต่อขา Tx ของ RS-232 โดยตรงกับขา UART TTL หรือขาของไมโครคอนโทรลเลอร์ เว้นแต่คุณจะแน่ใจว่าได้ใช้ตัวแปลงระดับแรงดันไฟฟ้าแล้ว ความผิดพลาดนี้อาจทำให้ชิปแรงดันต่ำเสียหายได้อย่างรวดเร็ว!

แม้ว่า RS-232 จะดูเก่าไปแล้วในวงการพีซี แต่ก็ยังคงแพร่หลายในอุปกรณ์อุตสาหกรรม ห้องปฏิบัติการ และอุปกรณ์เครือข่ายนอกจากนี้ยังมีอะแดปเตอร์ USB-to-RS-232 หาซื้อได้ง่าย หากคุณต้องการเชื่อมต่ออุปกรณ์ต่อพ่วงแบบอนุกรมรุ่นเก่ากับคอมพิวเตอร์รุ่นใหม่

RS-485: เครื่องมือคู่ใจสำหรับงานอุตสาหกรรม

RS-485 (หรือเรียกอีกอย่างว่า EIA-485) ยกระดับการสื่อสารแบบ UART ไปอีกขั้น ทำให้เป็นที่นิยมในเครือข่ายระบบอัตโนมัติทางอุตสาหกรรมและอาคารนี่คือสิ่งที่ทำให้มันแตกต่าง:

  • บัสแบบดิฟเฟอเรนเชียล: ใช้สายไฟสองเส้น (A และ B) ที่มีแรงดันไฟฟ้าเท่ากันและตรงข้ามกัน ค่าลอจิก '1' หมายถึงแรงดันไฟฟ้าเป็นบวก (A > B) ในขณะที่ '0' หมายถึงแรงดันไฟฟ้าเป็นลบ (A < B) การส่งสัญญาณแบบสมดุลนี้ช่วยลดสัญญาณรบกวนทางไฟฟ้าได้อย่างดีเยี่ยม ทำให้เหมาะสำหรับสายเคเบิลยาวๆ แม้ในโรงงานที่มีเสียงดัง
  • ความสามารถในการส่งหลายจุดพร้อมกัน: RS-485 ไม่ได้จำกัดอยู่แค่การเชื่อมต่อแบบจุดต่อจุดเท่านั้น สายไฟเพียงคู่เดียวสามารถจ่ายไฟให้กับอุปกรณ์ได้มากถึง 32 ตัว (หรือมากกว่านั้นหากใช้ทรานซีฟเวอร์รุ่นใหม่) บนบัสเดียวกัน ทั้งตัวส่งและตัวรับสามารถเชื่อมต่อเข้าด้วยกันได้ ทำให้สามารถสร้างโทโพโลยีแบบหลายมาสเตอร์หรือมาสเตอร์/สเลฟได้
  • ห้องชุดครึ่งดูเพล็กซ์ (ทั่วไป): โหมดที่พบได้บ่อยที่สุดคือการใช้สายไฟคู่เดียวสำหรับทั้งการส่งและรับข้อมูล โดยอุปกรณ์จะประสานการผลัดกันรับส่งข้อมูลผ่านซอฟต์แวร์ การรับส่งข้อมูลแบบฟูลดูเพล็กซ์ (ใช้สายไฟสองคู่) ก็เป็นไปได้ แต่พบได้น้อยกว่าในทางปฏิบัติ
  • ระยะทางและความเร็ว: RS-485 รองรับสายเคเบิลยาวสูงสุด 1200 เมตร (~4000 ฟุต) ที่ความเร็วต่ำ (เช่น 100 kbps) และอัตราการส่งข้อมูลสูงสุด 10 Mbps (หรือมากกว่า) ผ่านสายเคเบิลสั้นๆ
  • ตัวอย่าง: ใช้กันอย่างแพร่หลายสำหรับโปรโตคอลต่างๆ เช่น Modbus RTUรวมถึง Profibus, BACnet MSTP และ DMX512 (สำหรับไฟเวที)

เนื่องจากอุปกรณ์ทั้งหมดใช้บัสร่วมกัน RS-485 จึงกำหนดให้มีเพียงอุปกรณ์เดียวเท่านั้นที่ขับเคลื่อนสายสัญญาณในแต่ละครั้งโดยทั่วไปแล้วชิป RS-485 จะมีขา 'driver enable' เพื่อควบคุมว่าเมื่อใดที่อุปกรณ์จะขับเคลื่อนสายสัญญาณและเมื่อใดที่อยู่ในสถานะไม่ได้ใช้งาน (ในโหมด "รอรับข้อมูล" ที่มีความต้านทานสูง)

การเปรียบเทียบเลเยอร์ทางกายภาพ: RS-232 เทียบกับ RS-485 เทียบกับ TTL UART

คุณสมบัติ (Feature) อนุกรม RS-232 อนุกรม RS-485 TTL อนุกรม
การส่งสัญญาณ ตรรกะแบบปลายเดียวและกลับด้าน
(-3 ถึง -12V สำหรับ '1', +3 ถึง +12V สำหรับ '0')
ตรรกะเชิงอนุพันธ์ที่ไม่กลับด้าน
(A>B = '1', A
ตรรกะแบบซิงเกิลเอนด์ ไม่กลับเฟส
(0V ถึง Vcc โดยปกติคือ 3.3V หรือ 5V; 'สูง' = 1)
อุปกรณ์สูงสุด เครื่องส่งสัญญาณ 1 เครื่อง, เครื่องรับสัญญาณ 1 เครื่อง
แบบจุดต่อจุดเท่านั้น
บัสแบบหลายจุดเชื่อมต่อ รองรับตัวรับสัญญาณได้สูงสุด 32 ตัว (หรือมากกว่านั้น)
รองรับอุปกรณ์จำนวนมากบนบัสเดียว
เครื่องส่งสัญญาณ 1 เครื่อง, เครื่องรับสัญญาณ 1 เครื่อง
จุดต่อจุด
พิสัย ไกลสุดประมาณ 15 เมตร (50 ฟุต) ที่ความเร็วปกติ ระยะทางสูงสุดประมาณ 1200 เมตร (4000 ฟุต) ลดความเร็วลงเพื่อให้ได้ระยะทางสูงสุด สูงได้ถึงสองสามเมตร; ดีที่สุดคือต่ำกว่า 1-2 เมตร
เพื่อความน่าเชื่อถือ
อัตราการส่งข้อมูล ความเร็วสูงสุดมาตรฐานอยู่ที่ 115 kbps และอาจสูงกว่านั้นได้ในลิงก์ระยะสั้น (1 Mbps ขึ้นไป) ความเร็วสูงสุด 10 Mbps (สายระยะสั้น); 100 kbps ที่ระยะ 1200 เมตร ความเร็วสูงสุดเท่าที่ชิปจะรองรับได้ โดยทั่วไปแล้วจะสูงถึงหลายเมกะบิตต่อวินาทีบนตัวชิป
กรณีใช้งานทั่วไป พอร์ต COM ของพีซีรุ่นเก่า, อุปกรณ์ห้องปฏิบัติการ, พอร์ตการกำหนดค่าทางอุตสาหกรรม เครือข่ายอุตสาหกรรม, ระบบอัตโนมัติในอาคาร, บัสเซ็นเซอร์, ระบบไฟ DMX การสื่อสารระหว่างชิปภายในตัวเครื่อง ไมโครคอนโทรลเลอร์ โมดูล (GPS, บลูทูธ, เซ็นเซอร์)

พารามิเตอร์สำคัญสำหรับการตั้งค่า UART

เพื่อให้การสื่อสารผ่าน UART ทำงานได้ ปลายทางทั้งสองต้องตกลงกันในค่าการตั้งค่าต่อไปนี้:

  • อัตราการส่งผ่านข้อมูล: ความเร็วในการส่งข้อมูล (บิตต่อวินาที) ค่าที่ใช้กันทั่วไป: 9600, 19200, 57600, 115200 bps
  • ระดับแรงดันไฟฟ้า: แรงดันไฟฟ้าต้องตรงกันระหว่างอุปกรณ์ ตัวอย่างเช่น ต้องเป็น 3.3V ทั้งคู่ หรือ 5V ทั้งคู่ มิเช่นนั้นจะต้องใช้ตัวแปลงระดับแรงดันไฟฟ้า
  • บิตข้อมูล: ขนาดของฟิลด์ข้อมูล (อาจเป็น 5, 6, 7, 8 หรือ 9 บิต โดยปกติจะเป็น 8 บิต)
  • พาริตี้: ไม่มี, คู่ หรือ คี่ การตรวจสอบความเท่าเทียม (Parity) ช่วยเพิ่มการตรวจจับข้อผิดพลาดขั้นพื้นฐาน
  • หยุดบิต: หนึ่งหรือสองอันครับ ระบบส่วนใหญ่ใช้หนึ่งอัน
  • การควบคุมการไหล: เป็นตัวเลือกเสริม อาจเป็นฮาร์ดแวร์ (RTS/CTS) หรือซอฟต์แวร์ (XON/XOFF) ก็ได้

หากพารามิเตอร์เหล่านี้ไม่ตรงกัน การสื่อสารจะล้มเหลว ส่งผลให้ข้อมูลเสียหาย ข้อผิดพลาดในการจัดเฟรม หรือปัญหาอื่นๆนอกจากนี้ โปรดจำไว้ว่าที่อัตราการส่งข้อมูลสูงหรือสายเคเบิลที่ยาวขึ้น แม้แต่ความคลาดเคลื่อนเล็กน้อยในอัตราการส่งข้อมูลหรือระดับแรงดันไฟฟ้าก็อาจทำให้การซิงโครไนซ์ขาดหายและเกิดข้อผิดพลาดของข้อมูลได้

การใช้งาน UART ทั่วไป: UART ใช้ที่ไหนและเพราะเหตุใด

พอร์ต UART อยู่รอดมาได้ท่ามกลางการเปลี่ยนแปลงทางเทคโนโลยีมานานหลายทศวรรษ เนื่องจากความเรียบง่าย ความน่าเชื่อถือ และการสนับสนุนอย่างกว้างขวาง ทำให้พอร์ตนี้เหมาะสำหรับงานหลากหลายประเภท แม้แต่ในระบบสมัยใหม่ก็ตาม:

  • การเขียนโปรแกรมและการดีบักระบบฝังตัว (โดยใช้หัวต่อ TTL UART)
  • การเชื่อมต่อ GPS, Bluetooth, RFID และโมดูลอื่นๆ ในโครงการ DIY หรือโครงการระดับมืออาชีพ
  • พอร์ตคอนโซลสำหรับอุปกรณ์เครือข่ายและอุปกรณ์อุตสาหกรรม (ส่วนใหญ่มักผ่านทาง RS-232 หรือ RS-485)
  • การบันทึกข้อมูลด้วยเซ็นเซอร์ที่กระจายอยู่ทั่วพื้นที่ขนาดใหญ่ (RS-485 เป็นที่นิยมสำหรับเครือข่ายเซ็นเซอร์แบบหลายจุดเชื่อมต่อ)
  • ระบบไฟเวที (โปรโตคอล DMX512 ผ่าน RS-485), ระบบควบคุมอาคารอัตโนมัติ (BACnet MSTP) หรือระบบควบคุมโรงงาน (Modbus RTU transport)
  • ในสถานการณ์ใดก็ตามที่การสื่อสารแบบสองสายธรรมดาก็เพียงพอ หรือในกรณีที่ต้องการการส่งสัญญาณแบบดิฟเฟอเรนเชียลเพื่อการเชื่อมต่อที่เสถียร

จากอดีตสู่ปัจจุบัน: ประวัติโดยย่อและวิวัฒนาการของ UART

แนวคิดของการส่งข้อมูลแบบอนุกรมมีมาตั้งแต่ยุคก่อนหน้า เช่น โทรเลขและเครื่องพิมพ์ดีดโทรเลขรุ่นแรกๆโปรโตคอลอนุกรมแรกๆ เป็นแบบกลไก โดยใช้พัลส์เวลาเพื่อส่งสัญญาณตัวอักษร (เช่นเดียวกับรหัสมอร์ส) แต่ในช่วงทศวรรษ 1960-70 ระบบ UART แบบอิเล็กทรอนิกส์ได้ถือกำเนิดขึ้นเพื่อทำให้การแลกเปลี่ยนข้อมูลเป็นไปโดยอัตโนมัติและรวดเร็วขึ้นโดยไม่ต้องใช้ชิ้นส่วนที่เคลื่อนไหว

DEC (Digital Equipment Corporation) ออกแบบ UART แบบสแตนด์อะโลนตัวแรกสำหรับคอมพิวเตอร์ PDP ของตนนวัตกรรมนี้ถูกพัฒนาต่อยอดเป็นรูปแบบวงจรรวมในเวลาต่อมา โดย WD1402A ของ Western Digital (ประมาณปี 1971) เป็นหนึ่งใน UART แบบชิปเดี่ยวรุ่นแรกๆ ที่ได้รับความนิยมวิกิพีเดียได้ระบุเหตุการณ์สำคัญในการวิวัฒนาการของ UART ไว้ดังนี้:

  • เนชั่นแนล เซมิคอนดักเตอร์ 8250: ใช้ในคอมพิวเตอร์ IBM PC รุ่นแรกๆ เป็นแบบเรียบง่าย มีบัฟเฟอร์ขนาด 1 ไบต์
  • 16550/16550A: เพิ่มบัฟเฟอร์ FIFO ขนาด 16 ไบต์ ทำให้สามารถสื่อสารแบบอนุกรมความเร็วสูงได้อย่างน่าเชื่อถือโดยไม่ต้องอาศัยการทำงานของ CPU อย่างต่อเนื่อง ส่งผลให้เกิดรุ่นต่อๆ มามากมายที่มีบัฟเฟอร์ขนาดใหญ่ขึ้นและคุณสมบัติขั้นสูงขึ้น
  • UART หลายพอร์ต (DUART, QUART, OCTART): การรวม UART จำนวน 2, 4 หรือ 8 ตัวไว้ในชิปเดียว รองรับแอปพลิเคชันอนุกรมแบบหลายช่องทาง
  • ตัวแปลง USB เป็น UART: ชิปสมัยใหม่เหล่านี้ (เช่น FTDI FT232R, Cypress, ASIX AS99100 และ Exar XR series) ทำหน้าที่แปลงสัญญาณระหว่าง USB ความเร็วสูงและ UART หนึ่งตัวหรือมากกว่านั้น ทำให้เกิดคุณสมบัติ "พอร์ต COM เสมือน" ที่พบได้ทั่วไปในพีซีทุกเครื่องในปัจจุบัน
ดูสิ่งนี้ด้วย  อุปกรณ์ IoT ระบบ Android: คู่มือฉบับสมบูรณ์สำหรับการบูรณาการ ความปลอดภัย และนวัตกรรม

ซีพียูแบบฝังตัวจำนวนมากยังคงมี UART ในตัวสำหรับการเชื่อมต่อกับอุปกรณ์ต่อพ่วงและการแก้ไขข้อบกพร่องของระบบแม้ว่าพอร์ต RS-232 ทางกายภาพจะหายไปจากแล็ปท็อป แต่มาตรฐาน UART เองก็ยังคงเฟื่องฟูอยู่ภายใต้การเชื่อมต่อที่ทันสมัยกว่า

รุ่นและคุณสมบัติหลักของ UART

นี่คือภาพรวมของรุ่น UART ยอดนิยมและสิ่งที่ทำให้แต่ละรุ่นแตกต่างกัน:

  • WD1402A (ประมาณปี 1971): ชิป UART แบบชิ้นเดียวรุ่นแรกที่วางจำหน่ายทั่วไป
  • 8250 / 16450: UART รุ่นดั้งเดิมของ PC และ AT มีบัฟเฟอร์ขนาด 1 ไบต์ จำกัดความเร็วไว้ที่ระดับปานกลางโดยไม่ทำให้ข้อมูลสูญหาย
  • 16550A: หน่วยความจำ FIFO ขนาด 16 ไบต์สำหรับการส่ง/รับข้อมูล ช่วยเพิ่มอัตราการส่งข้อมูลได้อย่างมาก ลดภาระการทำงานของ CPU
  • 16650–16950/16C950: บัฟเฟอร์ขนาด 32, 64 และ 128 ไบต์, รองรับ DMA, การควบคุมการไหลของข้อมูลขั้นสูง อัตราการส่งข้อมูลสูงขึ้น (1.5 Mbps, 3 Mbps และสูงกว่า)
  • ดวาร์ท/ควอร์ต/ออกทาร์ท: มีให้เลือกทั้งแบบพอร์ตคู่ พอร์ตสี่ หรือพอร์ตแปด สำหรับการสื่อสารหลายช่องทาง ตัวอย่างเช่น รุ่น 28L194 ของ NXP (แบบสี่พอร์ต) และรุ่น XR16L788 ของ Exar (แบบแปดพอร์ต)
  • พอร์ต UART ของ PCI Express (ASIX AS99100 ซีรีส์, Exar XR17Vxxx): พอร์ต UART หลายพอร์ต พร้อมบัฟเฟอร์ขนาดใหญ่, DMA และรองรับความเร็ว 6–25 Mbps ต่อพอร์ต

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

ความท้าทายทั่วไปและการจัดการข้อผิดพลาดในการสื่อสาร UART

UART มีความน่าเชื่อถือในสถานการณ์ส่วนใหญ่ แต่มีปัญหาหลายประการที่อาจขัดขวางการสื่อสารที่ราบรื่น:

  • อัตราการส่งข้อมูลไม่ตรงกัน: หากความเร็วของเครื่องส่งและเครื่องรับแตกต่างกันเกินกว่า ~10% การสุ่มตัวอย่างบิตจะขาดความสอดคล้องกัน และข้อมูลจะสูญหายหรือถูกตีความผิดพลาด
  • ความไม่เข้ากันของระดับแรงดันไฟฟ้า: ระดับแรงดันไฟฟ้าที่ไม่ตรงกันระหว่างอุปกรณ์ (เช่น 5V กับ 3.3V) อาจทำให้การสื่อสารไม่เสถียรหรือทำลายชิ้นส่วนที่ไวต่อแรงดันไฟฟ้าได้
  • ข้อผิดพลาดของเฟรม: เกิดขึ้นเมื่อบิตหยุดที่คาดไว้หายไป ซึ่งมักเกิดจากสัญญาณรบกวน ความผิดพลาดของสายสัญญาณ หรือข้อผิดพลาดในการกำหนดค่า โดยทั่วไปแล้ว ตัวรับสัญญาณจะตั้งค่าสถานะข้อผิดพลาดในการจัดเฟรมให้กับซีพียูหลัก
  • ปริมาณข้อมูลล้น/เกินขีดจำกัด: หากอ่านไบต์ที่เข้ามาจากบัฟเฟอร์ UART ไม่เร็วพอ อาจทำให้ข้อมูลเพิ่มเติมสูญหายได้ บัฟเฟอร์ FIFO ช่วยลดปัญหานี้ได้ แต่ที่ความเร็วสูงมากหรือเมื่อซีพียูของโฮสต์ทำงานหนัก การอ่านข้อมูลเกินขีดจำกัดก็ยังคงมีความเสี่ยงอยู่
  • เสียงรบกวน/คลื่นแม่เหล็กไฟฟ้า: สัญญาณแบบซิงเกิลเอนด์ (TTL หรือ RS-232) มีความไวต่อสัญญาณรบกวน บางครั้งอาจทำให้บิตสลับตำแหน่งระหว่างการส่ง โดยเฉพาะอย่างยิ่งผ่านสายไฟที่ไม่มีฉนวนหุ้มหรือสายไฟยาว

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

การจำลอง UART ในซอฟต์แวร์ ("Bit Banging")

ไมโครคอนโทรลเลอร์บางตัวอาจมีพอร์ต UART ในตัวไม่เพียงพอ หรืออาจไม่มีเลย แต่คุณก็ยังสามารถ "จำลอง" โปรโตคอล UART ได้โดยใช้ซอฟต์แวร์!เทคนิคนี้เรียกว่า " bit-banging " ซึ่งใช้พิน I/O อเนกประสงค์และรูทีนที่กำหนดเวลาอย่างระมัดระวังเพื่อเลียนแบบจังหวะเวลาและโครงสร้างบิตของ UART

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

แพลตฟอร์มไมโครคอนโทรลเลอร์ยอดนิยมอย่าง Arduino ( หน้าเว็บ Arduino อย่างเป็นทางการ ) และ Teensy มีไลบรารีซอฟต์แวร์สำหรับการสื่อสารแบบอนุกรม Raspberry Pi Pico ที่มี Programmable I/O (PIO) ช่วยให้คุณสามารถเขียนสเตทแมชชีนแบบกำหนดเองสำหรับการจำลอง UART ในระดับฮาร์ดแวร์ได้ NXP FlexIO เป็นอีกหนึ่งโซลูชันการควบคุมบิตด้วยฮาร์ดแวร์เช่นกัน

คุณสมบัติขั้นสูงของ UART: การควบคุมการไหลและการบัฟเฟอร์

เมื่อคอมพิวเตอร์และอุปกรณ์ต่อพ่วงทำงานได้เร็วขึ้น การรับมือกับอัตราการส่งข้อมูลที่สูงขึ้นจึงนำมาซึ่งความท้าทายใหม่ๆ UART รุ่นแรกๆ มีบัฟเฟอร์เพียง 1 ไบต์ ทำให้ CPU ต้องตรวจสอบอยู่ตลอดเวลา การสูญเสียข้อมูล—"ข้อมูลเกิน"—เป็นความเสี่ยงที่เกิดขึ้นอย่างต่อเนื่องในอัตราการส่งข้อมูลที่รวดเร็ว โดยเฉพาะในระบบมัลติทาสก์ หรือเมื่อ I/O อื่นๆ เช่น ตัวควบคุมดิสก์ บล็อกการขัดจังหวะของ CPU นานกว่าหนึ่งมิลลิวินาที

การพัฒนาไปสู่บัฟเฟอร์แบบ FIFO (First-In, First-Out) ถือเป็นก้าวสำคัญ:

  • บัฟเฟอร์ขนาด 16 ไบต์, 32 ไบต์, 64 ไบต์, 128 ไบต์ และขนาดที่ใหญ่กว่านั้น ช่วยให้ CPU มีเวลามากขึ้นในการจัดการกับการขัดจังหวะและดึงข้อมูลที่รออยู่
  • ด้วยบัฟเฟอร์ขนาด 16 ไบต์ ระบบสามารถเพิ่มความเร็วจากขีดจำกัดประมาณ 9600 bps ไปเป็นมากกว่า 150 kbps ได้
  • บัฟเฟอร์ขนาดใหญ่และการรองรับ DMA ช่วยให้พอร์ตอนุกรมมีความเสถียรและสามารถส่งข้อมูลได้หลายเมกะบิตต่อวินาที (และสำหรับแอปพลิเคชันแบบกำหนดเอง อาจเร็วกว่านั้นอีก!)

กลไกควบคุมการไหลมีความสำคัญอย่างยิ่งในการป้องกันบัฟเฟอร์ล้น:

  • ฮาร์ดแวร์: สัญญาณต่างๆ เช่น RTS (Request to Send) และ CTS (Clear to Send) ใช้สำหรับหยุดและเริ่มการส่งข้อมูลระหว่างโมเด็มหรืออุปกรณ์กับโฮสต์
  • ซอฟต์แวร์: อักขระพิเศษ (XON/XOFF) ที่ส่งผ่านในระบบเครือข่ายเพื่อหยุดหรือเริ่มการไหลของข้อมูลใหม่

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

เคล็ดลับเชิงปฏิบัติ: การใช้งาน UART ในโปรเจ็กต์ของคุณ

ต่อไปนี้คือสิ่งที่คุณต้องคำนึงถึงเพื่อให้การใช้งาน UART ประสบความสำเร็จ:

  • จับคู่ความเร็วในการส่งข้อมูล (baud rate) และรูปแบบข้อมูล: อุปกรณ์ทั้งสองต้องทำงานสอดคล้องกัน มิเช่นนั้นตัวรับจะตีความเฟรมข้อมูลผิดพลาด
  • ตรวจสอบความเข้ากันได้ของแรงดันไฟฟ้า และใช้ตัวแปลงระดับแรงดัน/ตัวรับส่งสัญญาณหากจำเป็น: การเชื่อมต่อ RS-232 เข้ากับขา TTL UART โดยตรงโดยไม่มีการแปลงสัญญาณ อาจทำให้ชิปเสียหายได้ทันที
  • การแยกและการกรองสัญญาณรบกวนทางแม่เหล็กไฟฟ้า: สำหรับการใช้งานในระยะทางไกลหรือสภาพแวดล้อมที่มีสัญญาณรบกวนสูง ตัวรับส่งสัญญาณแบบดิฟเฟอเรนเชียล (RS-485) และออปโตไอโซเลเตอร์จะช่วยเพิ่มความทนทานต่อสัญญาณรบกวนได้
  • คุณภาพและความยาวของสายเคเบิล: ควรใช้สายเคเบิลแบบคู่บิดเกลียวหุ้มฉนวนสำหรับงานเชื่อมต่อภายในตัวเครื่องที่มีความยาวมากกว่าระยะสั้นๆ
  • ใช้บัฟเฟอร์ FIFO หรือการปรับแต่งซอฟต์แวร์เพื่อหลีกเลี่ยงการทำงานเกินขีดจำกัด: หากโปรเจ็กต์ของคุณรองรับความเร็วสูง โปรดตรวจสอบให้แน่ใจว่าบัฟเฟอร์มีขนาดใหญ่เพียงพอ และซีพียูหลักไม่ได้ถูกใช้งานโดยงานอื่นอยู่
  • ตรวจสอบข้อผิดพลาดด้วยเครื่องวิเคราะห์ลอจิกหรือออสซิลโลสโคป: ความไม่ตรงกันเล็กน้อยในการตั้งค่า หรือข้อผิดพลาดด้านเวลา สามารถตรวจพบและวิเคราะห์ได้ง่าย หากคุณสามารถมองเห็นภาพคลื่นสัญญาณได้

ตัวอย่างการใช้งาน UART ทั่วไปในการพัฒนาอุปกรณ์ฝังตัว

UART เป็นอินเทอร์เฟซที่นิยมใช้กันอย่างแพร่หลายสำหรับงานต่างๆ มากมาย ทั้งในวงการอิเล็กทรอนิกส์สำหรับผู้ใช้งานทั่วไปและในอุตสาหกรรมตัวอย่างสถานการณ์การใช้งานจริงบางส่วน ได้แก่:

  • การเขียนโปรแกรมและการแก้ไขข้อผิดพลาดของไมโครคอนโทรลเลอร์: บอร์ดหลายๆ รุ่นมีพอร์ต UART สำหรับอัปเดตเฟิร์มแวร์หรือตรวจสอบบันทึกการแก้ไขข้อผิดพลาด
  • เครือข่ายเซ็นเซอร์ที่ใช้ RS-485: ชุดเซ็นเซอร์แบบหลายจุดสำหรับส่งข้อมูลระยะไกล เพื่อการบันทึกข้อมูลและระบบอัตโนมัติ ใช้การจัดเฟรม UART ผ่านสายสัญญาณแบบดิฟเฟอเรนเชียล เพื่อลดสัญญาณรบกวน
  • เชื่อมต่อกับระบบคลาวด์ผ่านโมดูลเซลลูลาร์หรือ GPS: โมดูลโทรศัพท์มือถือ GPS และ Bluetooth ส่วนใหญ่สื่อสารกันผ่าน UART โดยทั่วไปผ่านทางเฮดเดอร์ TTL หรือบริดจ์ USB-UART
  • การสื่อสารระหว่างพีซีกับอุปกรณ์ และการประมวลผลแบบย้อนยุค: โมเด็ม ระบบจุดขาย อุปกรณ์ห้องปฏิบัติการ และระบบติดตั้งรุ่นเก่า ยังคงใช้การเชื่อมต่อ RS-232 สำหรับการให้บริการและการถ่ายโอนข้อมูล
  • ระบบควบคุมอุตสาหกรรมและการจัดการอาคาร: ระบบปรับอากาศ ระบบควบคุมกระบวนการผลิต ระบบแสงสว่าง และระบบควบคุมการเข้าออกจำนวนมากใช้เครือข่าย RS-485 UART เพื่อประสานงานอุปกรณ์ต่างๆ ในระยะทางหลายร้อยหรือหลายพันเมตร

ตัวอย่างการกำหนดค่าและการแก้ไขปัญหา UART

เรามาดูกันว่าโดยทั่วไปแล้วคุณจะตั้งค่าและแก้ไขปัญหาการเชื่อมต่อ UART อย่างไร:

  1. เลือกอัตราการส่งข้อมูล (baud rate): ความเร็ว 9600 bps เป็นค่าเริ่มต้นที่ใช้กันทั่วไป แต่ถ้าอุปกรณ์ทั้งสองรองรับ และสายเคเบิลของคุณสั้น คุณอาจเลือกความเร็วที่สูงกว่า เช่น 115200 bps ได้
  2. ตั้งค่าบิตข้อมูล/พาริตี/บิตหยุด: สำหรับการใช้งานสมัยใหม่ส่วนใหญ่ '8N1' (บิตข้อมูล 8 บิต ไม่มีพาริตี 1 บิตหยุด) ถือเป็นมาตรฐาน
  3. เชื่อมต่อสายไฟ: ต่อขา Rx ของอุปกรณ์ A เข้ากับขา Tx ของอุปกรณ์ B; ขา Tx ของอุปกรณ์ A เข้ากับขา Rx ของอุปกรณ์ B; ใช้สาย GND ร่วมกัน หากปลายด้านใดด้านหนึ่งมีระดับลอจิก RS-232 หรือหากใช้บัส RS-485 ให้เพิ่มทรานซีฟเวอร์ RS-232 (เช่น MAX232) หรือทรานซีฟเวอร์แบบดิฟเฟอเรนเชียล RS-485
  4. ตรวจสอบระดับอีกครั้ง: ห้ามเชื่อมต่อ RS-232 กับ TTL โดยตรง ให้ใช้อะแดปเตอร์แทน
  5. เปิดเครื่องและทดสอบ: ใช้เทอร์มินัลอนุกรมหรือเครื่องวิเคราะห์ลอจิกเพื่อตรวจสอบการแลกเปลี่ยนอักขระที่สะอาดและจัดรูปแบบอย่างถูกต้อง หากคุณเห็นเอาต์พุตที่ผิดเพี้ยน ให้ตรวจสอบอัตรา Baud และการตั้งค่า Parity ทั้งสองฝั่ง
  6. แก้ไขปัญหาข้อผิดพลาด: ข้อผิดพลาดเกี่ยวกับเฟรมหรือพาริตีมักหมายถึงความไม่ตรงกันของรูปแบบ ส่วนการสูญเสียข้อมูลหมายความว่าตัวรับไม่สามารถรับส่งข้อมูลได้ทัน ลองลดอัตราการส่งข้อมูล (baud rate) หรือเพิ่มขนาดบัฟเฟอร์ดู

ประเด็นสำคัญในการเลือกใช้โซลูชัน UART

  • สำหรับการเชื่อมต่อระยะสั้นและง่ายระหว่างชิปหรือบอร์ดสองตัว TTL UART นั้นรวดเร็ว ง่าย และต้นทุนต่ำ เพียงแต่ต้องระวังความไม่ตรงกันของแรงดันไฟฟ้า
  • สำหรับการสื่อสารแบบจุดต่อจุดที่เสถียรกับอุปกรณ์รุ่นเก่าหรือสายเคเบิลยาว RS-232 คือมาตรฐาน—โปรดตรวจสอบให้แน่ใจว่าคุณมีตัวแปลงแรงดันไฟฟ้าที่เหมาะสม
  • หากคุณต้องการความทนทาน การเดินสายเคเบิลระยะไกล หรือการเชื่อมต่อเครือข่ายแบบหลายจุด RS-485 คือคำตอบ—แต่โปรดอย่าลืมเรื่องตรรกะการเปิดใช้งานไดรเวอร์และการกำหนดแอดเดรสบัสที่เฉพาะเจาะจงด้วย

หน่วยความจำ UART รุ่นใหม่ๆ มีคุณสมบัติมากมาย เช่น การบัฟเฟอร์แบบ FIFO, DMA, การควบคุมการไหลของข้อมูล, อัตราการส่งข้อมูลสูง และหลายช่องสัญญาณ ดังนั้นควรเลือกชิปหรือไมโครคอนโทรลเลอร์ที่เหมาะสมกับความต้องการของโปรเจ็กต์ของคุณ

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

คู่มือการใช้งาน Arduino IDE: ดาวน์โหลด คุณสมบัติ และเคล็ดลับอย่างละเอียด

แสดงความคิดเห็น