แสดงบทความที่มีป้ายกำกับ พอร์ตสื่อสาร แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ พอร์ตสื่อสาร แสดงบทความทั้งหมด

วันอาทิตย์ที่ 26 กุมภาพันธ์ พ.ศ. 2560

ตารางสรุปการเชื่อมต่อแบบ Serial communication


1-Wire I2C SMBus SPI MicroWire/PLUS? M-Bus (EN1434) CAN (ISO11898) LIN Bus
Network Concept single master, multiple slaves multiple masters, multiple slaves multiple masters, multiple slaves single master, multiple slaves single master, multiple slaves single master, multiple slaves multiple masters, multiple slaves single master, multiple slaves
Number of Signal Lines 1 (IO) 2, (SCL, SDA) 2, (SMBCLK, SMBDAT) 4, (active-low CS, SI, SO, SCK) 4, (active-low CS, DI, DO, SK) 2 (lines can be swapped) 2 (CAN_H, CAN_L, terminated) 1 (LIN)
Optional signals N/A N/A SMBSUS#, SMBALERT# N/A N/A N/A 2nd GND, Power, Shield N/A
Network Size Up to 300 m (with suitable master circuit) Limited by max. 400pF bus capacitance requirement Limited by max. 400pF bus capacitance requirement N/A (circuit board level) N/A (circuit board level) Max. 350m per segment of max. 250 slaves; max. 180nF 40m @1M bps1000m @ 50k bps (example) Up to 40m, max. 10nF total load
Network Interface open drain, resistive or active master pull-up open drain, resistive or active master pull-up open drain, resistive or active master pull-up Push-pull with tristate Push-pull with tristate M to S: voltage drive
S to M: current load
Differential open drain/source or open coll./emitter open drain, resistive master pull-up
Network Voltage From 2.8 to 6.0 V, device specific From 1.8 to 5.5V, device specific 2.7V to 5.5V From 1.8V to 5.5V, device specific From 1.8V to 5.5V, device specific ~40V VDD-VD (diode drop); ~4.5V max. 8 to 18V
Logic Thresholds Vary with network voltage Fixed level: >1.5V, >3.0 V VDD-related level: <30%, >70% of VDD <0.8V, >2.1V VDD-related level: <20% (30%), >70% of VDD (inconsistent) Fixed level: <0.8V, >2.0V; VDD-related level: <20% (30%), >70% (80%) of VDD (inconsistent) Master to slave: 24V, 36V nominalSlave to master: <1.5mA, >11mA Differential: <50mV (recessive), >1.5V (dominant); driver specification VDD-related level: <20%, >80% of VDD (driver spec.)<40%, >60% of VDD (receiver spec.)
Transmission LS bit first, half-duplex MS bit first plus Acknowledge bit, half-duplex MS bit first plus Acknowledge bit, half-duplex MS bit first, full-duplex MS bit first, full-duplex LS bit first, half-duplex, acknowledge response MS bit first, half-duplex LS bit first, half-duplex
Address Format 56 bits 7 bits, (10 bits defined but not implemented) 7 bits, (10 bits defined but not implemented) N/A N/A 8 bits (primary address), 64 bits (secondary address) Message identifier 11 bits (standard format), 29 bits (extended format) Message identifier 8 bits, including 2 parity bits
Network Inventory Automatic, supports dynamic topology change N/A; slave addresses hard-coded in firmware ARP, Address Resolution Protocol (Rev. 2.0 only) N/A; slave select (active-low CS) hard-coded in firmware N/A; slave select (active-low CS) hard-coded in firmware Automatic N/A; message-based protocol, not address based N/A; message-based protocol, not address based
Gross Data Rate Standard: ~0 to 16.3k bps Overdrive: ~0 to 142k bps) Standard: ~0 to 100k bps; Fast: ~0 to 400k bps; High-Speed: ~0 to 3.4M bps 10k to 100k bps ~0 to ~10 M bps (device specific) ~0 to ~5 M bps (device specific) 300, 2400, 9600 bps ~0 to 1M bps ~1k to ~20k bps
Access Time Standard: ~ 5.4ms Overdrive: ~0.6ms (at maximum speed) Standard: ~95?sFast: ~23?s(at maximum speed) ~95?s @ 100k bps N/A N/A Primary address, 2400 bps: 13.75ms (short frame), 27.5ms (long frame) At 1M bps 19?s (standard) or 39?s (extended) from start of frame to 1st data bit At 20k bps 1.7ms from start of frame to 1st data bit
Data Protection 8-bit and 16-bit CRC N/A PEC Packet Error Code (Rev.1.1, 2.0) N/A N/A Even parity, check sum, frames 15-bit CRC, frames, frame acknowledge Check sum, frames
Collision Detection Yes, through non-matching CRC Yes (multi-master operation only) Yes (Rev. 2.0 only) N/A N/A Yes ("medium" and "strong" collisions) Yes: CSMA/CD Yes, through check sum
Slave supply Parasitic (typical), VDD (exception) VDD only VDD only VDD only VDD only Parasitic and/or local supply VDD only, local or remote source Parasitic only

คุณสมบัติของมาตรฐานต่าง ๆ

RS-232, RS-423, RS-422 and RS-485
Table ข้างล่างนี้เป็นการสรุปคุณสมบัติของมาตรฐานต่าง ๆ ที่นิยมใช้กันทั่วไป
Specification
RS-232
RS-423
RS-422
RS-485
Mode of operation
Single-ended
Single-ended
Differential
Differential
Total number of drivers and receivers on one line
1Tx
1Rx
1Tx
10Rx
1Tx
10Rx
1Tx
32Rx
Maximum cable length
50Ft
4,000Ft
4,000Ft
4,000Ft
Maximum data rate
20Kbps
100Kbps
10Mbps
10Mbps
Maximum driver output voltage
+/-25V
+/-6V
-0.25V to +6V
-7V to +12V
Driver output signal level (loaded min.) Loaded
+/-5V to +/-15V
+/-3.6V
+/-2V
+/-1.5V
Driver output signal level (loaded max.) Unloaded
+/-25V
+/-6V
+/-6V
+/-6V
Driver load impedance (ohms)
3K to 7K
>=450
100
54
Max. Driver current in high Z state Power on
N/A
N/A
N/A
+/-100uA
Max. Driver current in high Z state Power off
+/-6mA @ +/-2V
+/-100uA
+/-100uA
+/-100uA
Slew rate (max.)
30V/uS
Adjustable
N/A
N/A
Receiver input voltage range
+/-15V
+/-12V
-10V to +10V
-7V to +12V
Receiver input sensitivity
+/-3V
+/-200mV
+/-200mV
+/-200mV
Receiver input resistance (ohms)
3K to 7K
4K min.
4K min.
>=12K

SPI

SPI หรือ Serial Peripheral Interface
          เป็นวิธีการสื่อสารอนุกรมแบบ Synchronous อีกรูปแบบหนึ่ง ซึ่งทำงานในรูปแบบที่ให้อุปกรณ์ตัวหนึ่งทำหน้าที่เป็น Master ในขณะที่อีกตัวหนึ่งทำหน้าที่เป็น Slave และสามารถส่งข้อมูลในโหมด Full-duplex นั่นหมายความว่า สัญญาณสามารถส่งหากันได้ระหว่าง Master และ Slave ได้อย่างต่อเนื่อง รูปแบบข้อมูลการสื่อสารหรือ Protocol ของแบบ SPI นี้ ไม่ได้มาตรฐานกำหนดตายตัว ว่าข้อมูลที่ส่งหากันต้องอยู่ในรูปแบบหรือ Format แบบไหน เป็นการคิด Protocol การสื่อสารกันเอาเอง หรือดูจาก Datasheet ของอุปกรณ์
        ยกตัวอย่างอุปกรณ์ที่ใช้การสื่อสารแบบ SPI ได้แก่ โมดูลแปลงสัญญาณอนาล็อกเป็นดิจิตอล และโมดูลแปลงสัญญาณดิจิตอลเป็นอนาล็อก การติดต่อกับหน่วยความจำ EEPROM และ FLASHโมดูลนาฬิกาดิจิตอล หรือ Real Time Clock : RTC เซ็นเซอร์วัดอุณหภูมิ และความดัน อุปกรณ์อื่น ๆ เช่น signal mixer , Potentiometer , LCD controller , USART , CAN controller , USB controller , Amplifier



             รูป 1-1 การเชื่อมต่อการสื่อสารแบบ SPI ระหว่างอุปกรณ์ Master – Slave

รูป 1‑1 แสดงการเชือมต่อการสื่อสารแบบ SPI ระหว่างอุปกรณ์ Master – Slave โดยมีสายสัญญาณ สี่เส้น หรือ Four Wire ประกอบด้วย SCLK (Serial Clock) ใช้ส่งสัญญาณนาฬิกาจากอุปกรณ์ Master ไปยังอุปกรณ์ Slave เพื่อกำหนดจังหวะการรับส่งข้อมูลMOSI (Master Out Slave In) ใช้ส่งข้อมูลจากอุปกรณ์ Master ไปยังอุปกรณ์ SlaveMISO (Master In Slave Out) ใช้รับข้อมูลจากอุปกรณ์ Slave
\SS (Slave Select) หรือ ขา CS (Chip Select) ใช้ส่งสัญญาณ Low ไปยังอุปกรณ์ Slave ที่ต้องการรับส่งข้อมูล

      อุปกรณ์ Master ทำหน้าที่เป็นตัวควบคุมการสื่อสารทั้งหมด โดยควบคุมการสื่อสารตามสัญญาณนาฬิกา และสายสัญญาณ SS ตัวมาสเตอร์จะเป็นตัวที่ตัดสินใจเลือก รับ หรือ ส่งข้อมูลไปยังอุปกรณ์ Slave สัญญาณเส้น SS หรือ Slave select ในกรณี ที่มีตัว Slave มากกว่า 1 ตัว โดยการทำให้เส้น SS มีระดับสัญญาณเป็น Low เมื่อต้องการติดต่อกับ Slave ตัวใด จากรูป 1‑2 หากต้องการติดต่อสื่อสารกับอุปกรณ์ Slave ตัวใด ก็เพียงทำให้สัญญาณ SS ของ Slave ตัวนั้น มีระดับสัญญาณเป็น Low

        รูป 1-2 การเชื่อมต่อการสื่อสารแบบ SPI ระหว่างอุปกรณ์ Master – Slave หลายตัว

      เมื่อเปรียบเทียบระหว่างการสื่อสาร SPI กับ I2C เป็นการสื่อสารอนุกรมแบบ Synchronous เหมาะสำหรับการสื่อสารข้อมูลความเร็วต่ำ เช่น หน่วยความจำ EEPROM หรือโมดูลนาฬิกาดิจิตอล

         ข้อดีของการสื่อสารแบบ SPI คือ สามารถสื่อสารแบบ Full Duplex กล่าวคือสามารถรับและส่งข้อมูลได้พร้อมๆ กัน เพราะมีสายสัญญาณรับและส่งข้อมูลโดยเฉพาะ รูปแบบการสื่อสารของ SPI ไม่ต้องกำหนด Address เพื่อระบุอุปกรณ์ที่ต้องการสื่อสารเหมือน I2C เนื่องจากใช้สายสัญญาณ SS เป็นตัวควบคุม จึงมีอัตราการรับส่งข้อมูลสูงกว่า I2C และเหมาะสำหรับการรับส่งข้อมูลแบบต่อเนื่อง หรือ Streaming อย่างไรก็ตาม หากมีอุปกรณ์ Slave หลายตัวดังรูป การสื่อสารแบบ SPI ต้องใช้สายสัญญาณมากกว่า I2C

    รูปแบบสัญญาณใน SPI BUS
รูปแบบสัญญาณ SPI มี 4 รูปแบบ แตกต่างกันที่ขอบสัญญาณนาฬิกา (Clock Polarity) และเฟส (Phase)

 - เมื่อ CPHA=0 และ CPOL=0 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น Low และจะรับ-ส่งข้อมูลที่ขอบขาขึ้นของสัญญาณนาฬิกา (Rising Edge Clock)
- เมื่อ CPHA=0 และ CPOL=1 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น High และจะรับ-ส่งข้อมูลที่ขอบขาลงของสัญญาณนาฬิกา (Falling Edge Clock)
- เมื่อ CPHA=1 และ CPOL=0 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น Low และจะรับ-ส่งข้อมูลที่ขอบขาลงของสัญญาณนาฬิกา (Falling Edge Clock)
- เมื่อ CPHA=1 และ CPOL=1 สัญญาณนาฬิกา (Clock) ในสถานะปกติจะเป็น High และจะรับ-ส่งข้อมูลที่ขอบขาขึ้นของสัญญาณนาฬิกา (Rising Edge Clock)

ดังนั้น จึงกำหนดเป็น Mode การทำงานได้ 4 โหมด คือ

o Mode 0 = CPOL=0 และ CPHA=0
o Mode 1 = CPOL=0 และ CPHA=1
o Mode 2 = CPOL=1 และ CPHA=0
o Mode 3 = CPOL=1 และ CPHA=1

ตัวอย่างการใช้งาน DAC ผ่านการสื่อสาร SPI

ในบทนี้แสดงวิธีการใช้งานการสื่อสารแบบ SPI เพื่อควบคุมอุปกรณ์ต่างๆ โดยตัวอย่างนี้ใช้ไอซี LTC1661  ของบริษัท Linear Technology โมดูลแปลงสัญญาณดิจิตอลขนาด 10 บิตเป็นสัญญาณอนาล็อก 2 ช่องสัญญาณ แม้ว่า STM32F4Discovery มี DAC ให้ใช้งานได้ 2 ช่องสัญญาณ ผู้ใช้งานสามารถใช้อุปกรณ์นี้ได้ หากต้องการเพิ่มจำนวนช่องจ่ายแรงดันอนาล็อกได้

รูป 2-1 แสดงขาของไอซี LTC1661 [2]
รูป 2‑2 แสดงการรับข้อมูลของ LTC1661 ผ่าน SPI จาก Microcontroller เพื่อต้องการปรับแรงดันไฟฟ้า เมื่อสังเกตลักษณะสัญญาณนาฬิกา เมื่ออยู่ในสถานะ Idle ค่าของสัญญาณมีสถานะ Low และอ่านบิตข้อมูลที่อยู่บน MOSI เมื่อพบขอบขาขึ้น (1st Edge Capture) ข้อมูลหนึ่งชุดมีขนาดจำนวน 16 บิต ซึ่งประกอบด้วยค่าดิจิตอล 10 บิต ที่ต้องการแปลงเป็นค่าแรงดันไฟฟ้า และ Control Code จำนวน 4 บิตสำหรับควบคุมการทำงานไอซี LTC1661ดังรูป 2‑3 สำหรับความถี่ของสัญญาณนาฬิกาสูงสุดที่ไอซี LTC1661 สามารถทำงานได้คือ 16.7 MHz

รูป 2-2 รูปแบบการสื่อสารแบบ SPI ของไอซี LTC1661

รูป 2-3 ตารางแสดงคำอธิบายของ Control Code ของไอซี LTC1661

ตารางเปรียบเทียบการสื่อสารต่างๆ



I2C

  I2C ย่อมาจาก Inter IC Communication คิดค้นโดย  Philip semiconductor  หรือ  NXP  semiconductorจุดประสงค์เพื่อรับส่งข้อมูลความเร็วต่ำระหว่างอุปกรณ์ ต่างๆ เช่นเครื่องบันทึกเสียง โทรศัพท์มือถือ  รวมถึงหน่วยความจำอย่าง EEPROM เป็นต้น การสื่อสารแบบ I2C มีจุดเด่นคือ การเชื่อมต่อกันเป็นระบบบัสและรับส่งข้อมูลระหว่างอุปกรณ์ได้เป็นจำนวนมาก โดยใช้สายสัญญาณเพียงสองเส้นดังรูป  1-1  ซึ่งสามารถลดจำนวนสายสัญญาณและขนาดของอุปกรณ์ จึงเป็นที่นิยมในระบบสมองกลฝังตัวขนาดเล็ก

รูป 1-1 การเชื่อมต่ออุปกรณ์ แบบ I2C บัส [2, p.1]

 เป็นการสื่อสารแบบอนุกรมแบบ Synchronous ด้วยสายสัญญาณเพียง 2 เส้น คือ สายสัญญาณข้อมูล SDA (Serial Data Line) และสายสัญญาณนาฬิกา SCL (Serial Clock Line) โดย I2C แบ่งการทำงานออกเป็น 4 โหมดตามความเร็วในการรับส่งข้อมูลดังนี้
        1. Normal Mode: 100Kbps
        2. Fast Mode: 400Kbps
        3. Fast Mode Plus: 1Mbps
        4. High Speed Mode: 3.4 Mbps


ตัวอย่างการต่อใช้งาน I2C
        จากภาพแสดงให้เห็นว่าในการใช้งาน I2C สามารถต่อใช้งานกับอุปกรณ์ได้มากกว่าหนึ่งตัวบนสายสัญญาณ 1 ชุด (2 เส้น) โดยเลือกติดต่อกับอุปกรณ์ใดได้ด้วยการกำหนดแอดเดรสทางฮาร์ดแวร์ให้กับ อุปกรณ์ตัวนั้นและต้องมีการ Pull-Up ให้กับสายสัญญาณทั้ง 2 เส้น
 ภาวะที่เกิดขึ้นบนบัส I2C 



มีด้วยกัน 5 สภาวะดังนี้
1. บัสว่าง เป็นสภาวะที่มาสเตอร์ทำให้ SDA และ SCL เป็น“1” ทั้งคู่ เพื่อที่จะเริ่มต้นการสื่อสาร
2. สภาวะเริ่มต้น Start เกิดขึ้นเมื่อมาสเตอร์ทำให้ SDA เปลี่ยนจาก“1” เป็น “0” ก่อน แล้วจึงเปลี่ยน SCL จาก “1” เป็น“0”
3. สภาวะบิตข้อมูล  เกิดขึ้นโดยตัวส่งทำให้ SDA เป็นบิตข้อมูล “0” หรือ “1” ก่อน แล้วมาสเตอร์ทำให้เกิดสัญญาณนาฬิกาขึ้นที่ SCL ตัวรับจึงรับข้อมูลในช่วงดังกล่าว
4. สภาวะบิตรับรู้ ้ ACK หรือ Acknowledge เกิดขึ้นโดยตัวส่งทำให้ SDA เป็น “1” ก่อนแล้วมาสเตอร์ทำให้เกิดสัญญาณนาฬิกาขึ้นที่ SCL เมื่อตัวรับรับรู้แล้วก็จะทำให้ SDA เป็น “0”
5. สภาวะหยุด  Stop เกิดขึ้นเมื่อมาสเตอร์ทำให้ SCL เปลี่ยนจาก“0” เป็น “1” ก่อน แล้วจึงเปลี่ยน SDA จาก “0” เป็น
“1”


รูปแบบสถานะในการรับ-ส่งข้อมูล

095
       Start เป็นสถานะที่บอกเริ่มต้นการรับ-ส่งข้อมูล โดยการเปลี่ยนสัญญาณของ SDA จาก High ไปเป็น Low โดยที่ SCL ยังคงเป็น High อยู่
       Control Byte ประกอบไปด้วย 3 ส่วน คือ
       - ID ของอุปกรณ์จำนวน 4 บิต ซึ่งถูกกำหนดมาโดยผู้ผลิต IC หรืออุปกรณ์ I2C
       - Device Address ขนาด 3 บิต สามารถกำหนดได้เองจากการจ่าย Logic หรือต่อขาให้กับ IC
       - Mode ขนาด 1 บิต ใช้กำหนดว่าเป็นการ Read หรือ Write Data กับอุปกรณ์ IC
       ACK หรือ Acknowledge เป็นบิตที่ใช้บอกว่า IC มีการตอบสนองต่อคำสั่งที่ได้รับมาแล้ว
       DATA คือ ข้อมูลที่ต้องการเขียนหรืออ่านออกมาจาก IC ขึ้นกับ Mode ที่เราได้ตั้งค่าเอาไว้
       STOP เป็นสถานะที่บอกให้อุปกรณ์รู้ว่าสิ้นสุดการรับส่งข้อมูลแล้ว โดย SDA จะเปลี่ยนจาก Low เป็น High ในขณะที่ SCL ยังเป็น High อยู่
096


การสื่อสารแบบ I2C มีรูปแบบดังรูป 1-2 และมีขั้นตอนการรับส่งข้อมูลเป็นลำดับ ดังนี้
  1. เพื่อเริ่มต้นสถานะการสื่อสารแบบ  I2C  อุปกรณ์  Master เริ่มจะส่งคำสั่ง  START  ซึ่งจะทำให้อุปกรณ์Slave ทุกตัวที่อยู่ใน Bus เตรียมพร้อมรับข้อมูลจากสายส่งข้อมูล (SDA)
  2. อุปกรณ์  Master  ส่ง  Address  ขนาด  7  บิตและตามด้วยคำสั่งอ่านหรือเขียน (Read/Write)  อีก  1บิต
  3. อุปกรณ์  Slave  ทุกตัวใน  Bus  จะตรวจสอบ  Address  ในสายส่งข้อมูลว่าตรงกับ  Address  ของตนหรือไม่หากตรงกัน  จะส่งสัญญาณ  ACK  ขนาด  1  บิต  กลับไปยังอุปกรณ์  Master เพื่อเตรียมพร้อมด่าเนินการต่อไป
  4. การรับส่งข้อมูลระหว่าง  Master และ Slave ที่ระบุ Address จะด่าเนินการอย่างต่อเนื่อง  ในกรณีที่Master  ส่งคำสั่ง  Read  อุปกรณ์  Slave  จะส่งข้อมูลเป็นชุดๆ ชุดละ  8  บิต (1  ไบต์)  เมื่ออุปกรณ์Master จะส่งสัญญาณ ACK เมื่อได้รับทุกๆ ไบต์
  5. อุปกรณ์  Master จะส่งคำสั่ง STOP เพื่อสิ้นสุดสถานะการสื่อสารแบบ I2C

 รูป 1-2 รูปแบบการสื่อสารแบบ I2C

การเข้าถึงแบบ 7 บิต(7-bit addressing)






      ข้อมูลไบต์แรกที่เกิดขึ้นหลังจากสภาวะเริ่มต้นคือ ข้อมูลที่ใช้อ้างอุปกรณ์ที่ต้องการติดต่อโดยมีรูปแบบแสดงในรูป
      ใน 7 บิตบนรวมทั้งบิต LSB ด้วยจะเป็นข้อมูลแอดเดรสของอุปกรณ์สเลฟที่ต้องการติดต่อ โดยแบ่งเป็น บิตกำหนดแอดเดรสคงที่(fix address bit) จำนวน 4 บิต ซึ่งข้อมูลนี้อุปกรณ์แต่ละตัวจะถูกกำหนดมาจากผู้ผลิต ไม่สามารถเปลี่ยนแปลงแก้ไขได้ ถัดมาอีก 3 บิตเป็นบิตกำหนดแอดเดรสที่สามารถโปรแกรมได้(programmable address bit) โดยผู้ใช้งานต้องกำหนดสถานะลอจิกให้แก่ขา A0-A2 ของอุปกรณ์ที่มีการเชื่อมต่อแบบบัส I2C ส่วนในบิต LSB ที่ใช้กำหนดการอ่านหรือเขียนข้อมูลกับอุปกรณ์สเลฟตัวนั้น ๆ หากบิต LSB เป็น "0" หมายถึงต้องการเขียนข้อมูลไปยังอุปกรณ์นั้น ถ้าเป็น "1" จะเป็นการอ่านข้อมูลจากอุปกรณ์สเลฟ
      ข้อมูลในไบท์ต่อมาคือ ข้อมูลควบคุม(control byte) ในอุปกรณ์แต่ละตัวจะมีการกำหนดข้อมูลควบคุมที่แตกต่างกันไป ยกตัวอย่างเช่น ไอซีเมมโมรีของทีวีตระกูล 24Cxx จะต้องส่งข้อมูลแอดเดรสของหน่วยความจำก่อนที่จะทำการส่งข้อมูลไป
      ข้อมูลในไบท์ต่อมาคือ ข้อมูลที่ทำการถ่ายทอดจริง(data)
หลังจากการถ่ายทอดข้อมูลในแต่ละไบท์ อุปกรณ์สเลฟที่ได้รับการติดต่อต้องส่งสัญญาณรับรู้ตอบกลับมาด้วยทุกครั้ง
การเข้าถึงแบบ 10 บิต(10-bit addressing)



      จะมีข้อมูลเพิ่มเติิมขึ้นมาเล็กน้อย โดยในไบท์แรกหลักจากสภาวะเริ่มต้น ต้องกำหนดให้ 5 บิตบนมีข้อมูลเป็น 11110 ส่วนอีก 2 บิตถัดมาเป็นบิตแอดเดรสของอุปกรณ์ที่ต้องการติดต่อ ในบิต LSB ของข้อมูลไบท์แรกยังคงเป็นการกำหนดว่า ต้องการอ่านหรือเขียนข้อมูลกับอุปกรณ์สเลฟตัวที่ต้องการติดต่อด้วย ข้อมูลไบท์ต่อมาเป็นข้อมูลแอดเดรสในไบท์ที่ 2 ของอุปกรณ์ที่ต้องการติดต่อด้วย ข้อมูลไบท์ถัดไปจึงเป็นข้อมูลควบคุม ข้อมูลหลังจากนี้ก็จะเป็นข้อมูลจริงที่ใช้ในการติดต่อ
เช่นเดียวกัน กับการเข้าถึงแบบ 7 บิตหลังจากถ่ายทอดข้อมูลครบทุกไบท์ ต้องมีสภาวะรับรู้เกิดขึ้น เพื่อให้ขบวนการถ่ายทอดข้อมูลสามารถดำเนินต่อไปได้

  ลำดับการทำงาน (Timing Diagram) ก็จะเริ่มต้นด้งนี้ครับ

   1. ในสภาวะที่ยังไม่เริ่มทำงาน  อุปกรณ์ทุกตัวจะมีแรงดันระดับสูง (H) 

   2. เมื่อเริ่มจะส่งข้อมูล  SDA จะลดลงไปที่ระดับแรงดันศูนย์  (L)  ในขณะที่ SCL ยังอยู่ที่ ็H  จะเห็นในช่องที่แรงเงาสีเหลืองซ้ายสุด  โดย SCL จะค้างที่ H นาน 0.6 ไมโครวินาที (tHDSTA: Hold Time to Start Condition)  ผ่านช่วงเวลานี้ไปเป็นอันรู้กันว่า Master จะเริ่มสั่งการ  (แต่ตอนนี้ยังไม่รู้นะครับว่าจะสั่ง Slave ตัวไหน เพราะอาจมีหลายตัวต่ออยู่บนบัส)

   3. ตอนนี้ SCL จะลงไปที่ L  จาก นั้น ระหว่างที่รอสัญญาณขาขึ้นของ Clock แรกอีก 1.3 ไมโครวินาที SDA จะเริ่มกำหนดค่า Bit แรก  โดย Master จะส่งค่าบิตแรกไปพร้อมกับสัญญาณ Clock  และไอซีที่เป็น Slave บนบัสจะเริ่มอ่านค่าในจังหวะที่ SCL เป็น H

   4. จากนั้นก็จะเป็นอย่างนี้ไปอีกเพื่อส่งค่า Address ของไอซีที่ต้องการจะติดต่อด้วยไปรวมทั้งสิ้น 7 บิตและตามด้วยบิตที่ 8 ซึ่งจะระบุว่าจะสั่งให้ Slave รอคำสั่ง (Write ระบุโดย SDA เป็น H) หรือจะรออ่านค่าที่ส่งมาจาก Slave (Read ระบุค่าโดย SDA เป็น L)

  5. บิตที่ 9 จะเป็นการตอบรับจาก Slave ที่มี Address ตรงกับที่ Master ส่งไป  ถ้ามี Slave ตอบรับ (Acknoledge) โดยการดึงสัญญาณ SDA ลง L  ก็แปลได้ว่ามี Slave พร้อมจะสื่อสารด้วย  แต่ถ้าไม่มี คือ SDA ค้างที่ H แปลว่า (Not Acknowledge)  Master ไม่มีใครคุยด้วย 

 6. หลังจาก Acknowledge กันเรียบร้อย (สมมุติว่ามีสัญญาณตอบรับ) จะเป็นช่วงเวลาที่ SCL ถูกดึงลง L เป็นเวลาสั้นๆ และ SDA จะถูกปล่อยว่าง  ก่อนที่ Slave ที่ติดต่อด้วยจะเริ่มส่งค่า Bit แรกมาที่ SDA

 7. จากนั้นสัญญาณ SCL จาก Master จะปล่อยออกมาเพื่ออ่านค่าสัญญาณบนสาย SDA ในจังหวะที่ SCL เป็น H และรับค่าเช่นนี้ไปเรื่อยๆ จน Data ครบ 8 บิตแรก ตามจังหวะสัญญาณ SCL

 8. เมื่อ Data ครบ 8 บิตแรกแล้ว Master จะให้สัญญาณ Acknowledge โดยดึงสัญญาณเป็น L เพื่อแสดงให้ Slave รู้ว่า Master จะรอ Data อีก 8 บิตต่อไป  (ในกรณีที่ข้อมูลที่ Slave ต้องการส่งเป็นแบบ 16 บิต)

 9. จะกลับเข้าการทำงานในข้อ 6 และอ่านข้อมูลไปจนครบบิตที่ 9 - 16

10. จากนั้นเมื่อถึงจังหวะการ Acknowledge ในบิตที่ 9  คราวนี้ Slave ไม่ต้องการส่งข้อมูลต่อแล้ว เพราะครบ 16 บิตแล้ว  Slave จะ ไม่ตอบสนองแล้ว สาย SDA จะถูกปล่อยให้เป็น H 

11. จากนั้น Master จะรู้แล้วว่าข้อมูลมาครบถ้วน 16 บิต Master ก็จะสั่งหยุดโดยการส่งสัญญาณ ขาขึ้นในสาย SDA พร้อมๆกับ SCL เป็น H  ก็เป็นอันรู้กันว่าคือ Stop bit หมายถึงส่งข้อมูลครบ Byte แรก ซึ่งเป็น Address ของ Slave ตัวที่ Master ต้องการคุยด้วย  


 มันก็เข้าใจยากอยู่ครับ ลองอ่านดูช้าๆ และดูรูป timing diagram ด้านบนประกอบนะครับ
 ทีนี้ถ้าต้องการอ่านคู่มือจริง ต้นตำหรับจาก NXP Semiconductor ก็ไปที่นี่เลยครับ
สังเกตอีกนิดจะเห็นว่า สัญญาณ Start และ Stop จะส่งโดย Master เท่านั้น  โดย Start คือ ให้ SDA เปลี่ยนจาก H เป็น L ในจังหวะที่ SCL เป็น H  ส่วนการ Stop ก็คิอให้ SDA เปลี่ยนจาก L เป็น H ในจังหวะที่ SCL เป็น H    และที่ว่ามาทั้งหมด Master จะเป็นตัวปล่อยสัญญาณ SCL ครับ
 อ่านแล้วคงจะรู้สึกยาก  ก็ไม่ต้องกังวลครับ เพราะเราไม่ต้องเขียนโปรแกรมที่คุมสัญญาณแต่ละเส้นเอง  Arduino เขาทำ Library ที่ชื่อว่า Wire มาให้แล้ว  สบายครับ เราแค่เลือก Address ของอุปกรณ์ให้ถูก แล้วปล่อยให้ Wire.h จัดการส่ง รับค่าให้เราครับ   
  Library ที่ชื่อ wire.h ก็ไม่ต้องไปหา download ให้ยุ่งครับ มันมีอยู่แล้วใน Arduino IDE  เรียกใช้กันได้เลย เพียงแค่ Add ชื่อไว้ตอนเริ่มต้น Sketch ที่จะใช้ก็เท่านั้น  รายละเอียดวิธีใช้งาน Library wire.h ก็ดดูได้ที่นี่ครับ
  Functions ต่างๆ ของ wire.h ก็ดูตามนี้เลยครับ
ทีนี้ I2C หรือ TWI บนบอร์ด Arduino นั้น ก็ต้องเรียกให้ถูกขาที่เขากำหนดนะครับ (ไม่สามารถ Assign เป็นขาอื่นๆ)  ลองดูรายละเอียดตามนีครับ
Board I2C / TWI pins
Uno,Ethernet A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1SCL1

วันพฤหัสบดีที่ 23 กุมภาพันธ์ พ.ศ. 2560

RS-422 and RS-485 Standards Overview and System


             มาตรฐาน RS-422 หรือ RS-422-A ถูกกำหนดขึ้นโดยสมาคมผู้ประกอบการอุตสาหกรรมอิเล็กทรอนิกส์หรือ EIA เช่นเดียวกันกับมาตรฐาน RS-232 โดยมีจุดมุ่งหมายที่จะแก้ปัญหาเรื่องความยาวของสายสื่อสารโดยใช้การส่งสัญญาณแบบผลต่าง (Differential) แทนที่จะใช้การส่งสัญญาณแบบอ้างอิงกับจุดกราวนด์ (หรือสายดิน) เช่นเดียวกันกับ RS-232 การส่งสัญญาณแบบ Differential นี้ช่วยลดปัญหาสัญญาณรบกวนจาก 2 ปัจจัยด้วยกัน ได้แก่ ปัญหาแรงดันกราวนด์ 2 ฝั่งสายไม่เท่ากัน อันเกิดจากกระแสไฟฟ้าที่ไหลในสายกราวนด์ที่ยาวมากๆ ก่อให้เกิดความต่างศักดิ์ และปัญหาสัญญาณรบกวนที่เกิดจากแม่เหล็กไฟฟ้าเหนี่ยวนำในสาย โดยหากสายไฟที่ใช้ถูกตีเกลียวและวางไว้ใกล้กัน เมื่อมีแรงดันเหนี่ยวนำจะปรากฏแรงดันรบกวนบนสายทั้งสองเท่าๆ กันเป็นผลให้ ตัวรับที่อ่านความต่างศักดิ์ระหว่างสายอ่านข้อมูลได้เช่นเดิม ทั้งสองปัจจัยนี้เองเป็นสาเหตุที่ทำให้ความต้านทานต่อสัญญาณรบกวนของการสื่อสารแบบ RS-232 ด้อยกว่า RS-422) ตามมาตรฐานRS-422 นี้จะใช้สายสัญญาณทั้งหมด 4 เส้น (2 เส้นสำหรับการส่งสัญญาณ และอีก 2 เส้นสำหรับรับสัญญาณ) และสามารถใช้ความยาวสายสัญญาณได้ถึง 4,000 ฟุต (หรือ 1.2 กม.) ที่ความเร็ว 100,000 บิทต่อวินาที และการสื่อสารเป็นแบบ 2 ทางพร้อมกัน (Full Duplex)



                มาตรฐาน RS-485 กำหนดโดยสมาคมผู้ประกอบการอุตสาหกรรมอิเล็กทรอนิกส์หรือ EIA เป็นมาตรฐานการเชื่อมต่อสัญญาณแบบอนุกรม (Serial Communication) มีลักษณะการเชื่อมต่อเป็นแบบหลายจุด (Multi-point) หรือ Multi-drop สายสัญญาณที่ใช้มีทั้งแบบที่เป็น 2 สายและแบบที่เป็น 4 สาย การต่อแบบหลายจุดนี้ทำให้สามารถมองสายสัญญาณเป็นบัสนำสัญญาณได้ (Signal Bus) จำนวนคอมพิวเตอร์หรืออุปกรณ์ที่สามารถอยู่บน RS-485 บัสหนึ่งถูกกำหนดไว้ที่ 32 ตัว ในกรณีที่ต้องการเพิ่มจะต้องมีตัวทวนสัญญาณ (Signal Repeater) หรือใช้ตัวส่ง-รับสัญญาณที่มีอิมพิแดนซ์ (ความต้านทานเสมือน) สูงขึ้น ซึ่งเราอาจเพิ่มจำนวนจุดเชื่อมต่อขึ้นได้ถึง 128 จุด ความยาวของสายสัญญาณตามมาตรฐาน RS-485 นี้สามารถยาวได้ถึง 1.2 กม เช่นเดียวกับมาตรฐาน RS-422 แต่การสื่อสารจะเป็นแบบสองทางไม่พร้อมกัน (Half Duplex) มีเพียงคอมพิวเตอร์หรืออุปกรณ์ตัวเดียวเท่านั้นที่สามารถส่งสัญญาณออกได้ ณ เวลาหนึ่งๆ ส่วนที่เหลือจะเป็นผู้รับสัญญาณ หรือผู้ฟัง



                ในระบบเครือข่าย  RS-422/485 นั้นไม่มีข้อกำหนดในหัวข้อรูปแบบการเชื่อมต่อ การออกแบบการเชื่อมต่อมักขึ้นอยู่กับความต้องการของระบบ

                ระบบ 2 สาย และ 4 สาย (Two-wire and Four-wire System)
ระบบ RS-422  ใช้ 1 คู่สายสำหรับแต่ละสัญญาณ เช่น 1 คู่สายสำหรับสายส่ง , 1 คู่สายสำหรับสายรับ และในบางกรณีอาจมี 1 คู่สายทำหน้าที่ควบคุมการทำ tri-state ( handshake line ) ในการทำ tri-stated ของ RS-485 มีความสามารถทำให้การรับ-ส่งข้อมูลผ่านสายสัญญาณคู่เดียวกันได้หรือมีลักษณะการสื่อสารแบบ Half-duplex

                รูปแบบการเชื่อมต่อในลักษณะ 2 สายจะช่วยลดค่าใช้จ่ายในการเชื่อมต่อระบบได้เนื่องจากใช้สายน้อยกว่า(สายสัญญาณ 2 สายและสายกราวด์ 1 สาย) ในการต่อแบบ 2 สายของอุปกรณ์ RS-485 จะมีข้อกำหนดการเชื่อมต่อทั้งแบบภายในและภายนอก ในการเชื่อมต่อภายในจะมีขั้วต่อ A และ B (ในบางครั้งแทนด้วย  และ + ) ให้ทำการเชื่อมต่อเข้ากับสายส่ง
                รูปแบบการเชื่อมต่อแบบ 4 สายจะมีขั้ว A และ B ทั้งที่ตัวส่งและตัวรับ ผู้ใช้สามารถส่งข้อมูลให้กับตัวรับโดยผ่านสาย 2 เส้นและส่งข้อมูลกลับผ่านสายอีก 2 สาย สายกราวด์ยังเป็นสายที่มีความสำคัญต่อระบบจำเป็นต้องใช้เป็นจุดอ้างอิงในการรักษาระดับแรงดันคอมมอนหรือ Vcm  (แรงดันที่วัดระหว่างสายสัญญาณแต่ละเส้นเทียบกับสายกราวด์) ระบบสามารถทนแรงดันคอมมอนได้ที่ค่าหนึ่ง ดังนั้นจำเป็นต้องรักษาแรงดันดังกล่าวให้อยู่ในช่วงที่อุปกรณ์รับได้ ถ้าไม่มีสายกราวด์ในระบบจะทำให้เกิดสัญญาณรบกวน ( noise ) และระบบจะไม่มีความมั่นคง

                - การเชื่อมต่อ RS422 แบบ Full Duplex เป็นการรับส่งข้อมูลแบบ 2 ทิศทาง สามารถรับส่งได้พร้อมกันตลอดเวลา
โดยแต่ละชุดจะมีสายสัญญาณชุดละ 2 คู่ ( 4 เส้น ) ลักษณะการรับส่งคล้ายกับการพูดคุยโทรศัพท์ทั่วไป โดยต่อสัญญาณจากวงจรรับเข้ากับวงจรส่งของทั้ง 2 ฝ่าย แต่ในการรับส่งแบบนี้จะใช้กับอุปกรณ์แบบ “Point-to-Point”คือมีตัวต้นทางและปลายทางอย่างละ 1 ตัว เหตุผลที่ใช้การสื่อสารแบบ RS422ก็เพื่อเพิ่มระยะทางการรับส่งให้ได้ไกลมากขึ้น โดยไม่ต้องดัดแปลงแก้ไขโปรแกรมเลย


การต่อสาย RS422 แบบ Full Duplex

          การเชื่อมต่อ RS422 แบบ Simplex เป็นการรับส่งข้อมูลแบบทิศทางเดียว โดยกําหนดทิศทางไว้คงที่ โดยทิศทาง
นั้นอาจเป็นรับเข้าอย่างเดียวหรือส่งออกอย่างเดียว ซึ่งวิธีนี้จะใช้สายสัญญาณ 1 คู่ ( 2 เส้น ) ข้อดีที่พิเศษคือ วงจรทางด้านภาคส่ง 1 ชุด สามารถต่อเข้ากับวงจรทางด้านรับได้มากถึง 32 ชุด โดยใช้สายเพียงคู่เดียว


การต่อสาย RS422 แบบ Simplex




การต่อสาย RS422 แบบรับหลายตัวพร้อมกัน

การเชื่อมต่อแบบ RS485
          จะต่อกันแบบขนานทั้งระบบ วิธีการต่อแบบนี้ต้องมีการจัดอันดับความสําคัญของอุปกรณ์ที่ต่ออยู่ในระบบ คือ ให้มีอุปกรณ์ทําหน้าที่เป็นตัวแม่่ (Master) 1 ตัว สําหรับทําหน้าที่เป็นตัวกลางในการรับส่งข้อมูลเองทั้งหมด หรือเป็นเพียงการจัดลําดับการรับส่งให้กับอุปกรณ์ตัวอื่นๆ ส่วนตัวลูก (Slave) ในครั้งแรกต้องกําหนดให้เป็นการรับข้อมูลไว้ตลอดเวลา ตัวแม่จะทําหน้าที่ Scan ตัวลูกทีละตัว เพื่อตรวจสอบว่ามีข้อมูลที่ต้องการส่งหรือไม่ ถ้ามีต้องส่งถึงตัวใด  แล้วตัวแม่จึงสั่งให้อุปกรณ์ตัวที่ระบุนั้นคอยรับข้อมูลโดยตรงเอง แล้วตัวแม่จะเปลี่ยนทิศทางมาเป็นรับข้อมูลเพื่อปล่อยสายสัญญาณให้ว่าง เพื่อที่อุปกรณ์ทั้งสองตัวที่ได้รับอนุญาตจะได้รับส่งข้อมูลกันต่อไป เมื่อทั้งคู่ทําการรับส่งข้อมูลกันเสร็จแล้ว ตัวลูกต้องส่งคําสั่งมาบอกตัวแม่่ให้ทราบว่า เสร็จแล้ว เพื่อตัวแม่จะได้ Scan ตัวอื่นต่อไป


การต่อสาย RS485 แบบขนาน

          ต่อกันแบบ Point-to-Point วิธีนี้ใช้รับส่งข้อมูลระหว่างอุปกรณ์ 2 ตัว ใช้สายสัญญาณ 1 คู่ โดยอุปกรณ์ทั้ง2 ตัวต้องควบคุมทิศทางให้เป็นทั้งรับและส่ง โดยการสื่อสารต้องมีข้อกําหนดการรับส่งข้อมูลด้วย ซึ่งอุปกรณ์ทั้ง 2 ตัวนี้ต้องผลัดกันรับผลัดกันส่งข้อมูล ไม่สามารถรับส่งในเวลาเดียวกันได้


การต่อสาย RS485 แบบ Point –to-Point

ข้อมูลอ้างอิง : B&B Electronic.