Interfacing and Communication

เพื่อศึกษารูปแบบการสื่อสารของ USART (UART, I2C,SPI)

UART

UART หรือชื่อเต็ม Universal Asynchronous Receiver and Transmitter เป็นการสื่อสารข้อมูลผ่านพอร์ตอนุกรมแบบอะซิงโครนัส แบบ full-duplex ที่สามารถสื่อสารได้สองทางในเวลาเดียวกันได้ โดยการส่งข้อมูล แบบ UART ไม่จำเป็นต้องใช้ Clock ในการกำหนดจังหวะการส่งข้อมูล จะใช้การส่งแบบ กำหนด 1บิต เป็นตัวบอกการเริ่มต้นส่งข้อมูล (Start) แล้วตามด้วยข้อมูลที่ต้องการส่งและจบด้วยใช้ 1บิต จบการส่งข้อมูล (Stop) การส่งข้อมูลแบบ UART ใช้สำหรับการสื่อสารระหว่าง MCU to MCU ผ่าน Pin TX,RX และเพื่อให้สามารถส่งข้อมูลได้ไกลจึงมีการนำมาตรฐานRS232 และ RS485 มาใช้ ซึ่งทั้งสองมาตรฐานมี IC ที่ช่วยในการปรับระดับแรงดันให้กับ MCU ที่มีการสื่อสารกันผ่าน UART

RS 232

เป็นการส่งแบบอนุกรม (serial) แบบ full duplex ได้เช่นเดียวกับแบบ UART แต่การส่งผ่าน RS 232 นั้นจะไปได้ไกลกว่าเนื่องจากกำลังส่งนั้นสูงกว่า (ใช้แรงดันตั้งแต่ -15V ถึง +15V) การส่งนั้นสามารถไปได้ไกลสูงสุดที่ 15 เมตรและ bitrate สูงสุดที่ 20 Kbps

ตัวอย่าง Schematic RS232 post on M5Stack Demo Board

RS 485

เป็นการส่งแบบอนุกรม (serial) แบบ half-duplex ซึ่งหมายความว่าจะไม่สามารถรับและส่งข้อมูลในเวลาเดียวกันได้ รูปแบบการส่งข้อมูลจะถูกส่งไปยังสาย A และ B แต่ข้อมูลภายในสายจะเป็นส่วนกลับของกันและกัน

การส่งแบบสายคู่นี้ทำให้ลดสัญญาณรบกวนได้เมื่อถอดสัญญาณออกมา ทำให้สามารถส่งได้ไกลถึง 3 กิโลเมตรและมี bitrate สูงถึง 10Mbps

I2C

I2C เป็นการสื่อสารแบบอนุกรม(Serial communication bus) สามารถส่งข้อมูลแบบ half-duplex ได้ ใช้ช่อง 2 สายคือ Serial Data (SDA) สำหรับรับส่งข้อมูล และ Serial Clock (SCL) สำหรับส่งสัญญาณ clock โดยมีตัว Master จะเป็นตัวกำหนดค่าความถี่ clock ส่งไปยัง slave ตัวอื่นๆ ผ่านทางสาย SCL และข้อมูลการสื่อสารระหว่าง Master และ slave จะถูกส่งผ่านทางสาย SDA

การสื่อสารจะเป็นแบบการสื่อสารสองทางไปกลับระหว่าง Master กับ Slave ซึ่ง Master จะเป็นตัวระบุเส้นทางของข้อมูลว่าจะติดต่อกับ slave ตัวใด โดยการระบุตำแหน่ง address ของ slave ตัวนั้น ๆ แล้วทำการเริ่มรับส่งข้อมูลกัน

จากภาพด้านล่างเป็นการต่อ I2C ของอุปกรณ์หลายตัวเข้ามายัง I2C เดียวกัน สำหรับ i2C ทั้ง SDA และ SCL สองสายจำเป็นต้องต่อ Pull-up resistor ด้วยเพราะเป็น Open-drain ทั้งคู่ เพื่อให้มีสถานะเป็น High

สำหรับการทำงาน I2C เมื่อต้องการส่งข้อความจะมีชุดข้อมูลตามภาพด้านล่าง โดยในแต่ละชุดข้อความจะทำการส่งสัญญาณให้ไปยัง devices หรือ Slaves ทุกตัวที่อยู่ในสายสื่อสารวงจรเดียวกัน Slave รอรับคำสั่งจาก Master เมื่อมีการเรียก address I2C ตรงกับ address ของตัวเอง Slave ที่ address ตรงตามที่ master เรียกจะทำการส่งข้อมูลตอบกลับซึ่งมี Data frame หรือชุดข้อมูลดังตัวอย่างภาพด้านล่าง

ตัวอย่าง DiagramsReference sequence ของ DHT12

SPI

SPI ทำงานในรูปแบบที่ให้อุปกรณ์ตัวหนึ่งทำหน้าที่เป็น MASTER ในขณะที่อีกตัวหนึ่งทำหน้าที่เป็น SLAVE รูปแบบการส่งข้อมูลเป็นแบบ Full-duplex ซึ่ง MASTER และ SLAVE สามารถส่งข้อมูลไปกลับหากันได้ การสื่อสารแบบ SPI ไม่มีการกำหนดแอดเดรส แต่Master จะเป็นตัวควบคุมการส่งข้อมูลโดยเป็นกำหนดการเรียกใช้งานขา SS ที่ต้องการสื่อสาร ซึ่งขึ้นอยู่กับผู้ใช้งานเป็นคนกำหนดเอง

Logic analyzer

เป็นเครื่องมือใช้อ่านและถอดสัญญาณดิจิตอลที่มีการส่งข้อมูลที่ใช้โปรโตคอลประเภท UART, I2C, SPI, CAN เป็นต้น

แต่ละรุ่นจะมีความสามารถในอ่านค่าได้ไม่เท่ากัน โดยรุ่นที่ยกตัวอย่างมานี้คือรุ่น LA1016 เป็นรุ่นที่มี 16 channel เก็บค่า sampling rate ได้ถึง 100Hz สามารถใช้วิเคราะห์ลอจิกของโปรโตคอลต่าง ๆ ได้ดังนี้

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University