I2C

 นาย เพิ่มเกียรติ ฟักบ้านใหม่

  การเชื่อมต่ออุปกรณ์แบบ I2C ( )

      = I2C Bus ย่อมาจาก Inter Integrate Circuit Bus (IIC) นิยมเรียกสั้นๆว่า  BUS (ไอ-แสคว-ซี-บัส) เป็นการสื่อสารอนุกรม แบบซิงโครนัส (Synchronous) เพื่อใช้ ติดต่อสื่อสาร ระหว่าง ไมโครคอนโทรลเลอร์ (MCU) กับอุปกรณ์ภายนอก ซึ่งถูกพัฒนาขึ้นโดยบริษัท Philips Semiconductors โดยใช้สายสัญญาณเพียง 2 เส้นเท่านั้น คือ serial data (SDA) และสาย serial clock (SCL) ซึ่งสามารถ เชื่อมต่ออุปกรณ์ จำนวนหลายๆ ตัว เข้าด้วยกันได้ ทำให้ MCU ใช้พอร์ตเพียง 2 พอร์ตเท่านั้น

การเชื่อมต่ออุปกรณ์แบบ  BUS

      BUS ใช้สายสัญญาณ 2 เส้น คือ SCL ,SDA สำหรับติดกับอุปกร์แบบ 2 ทิศทาง โดยที่ขาสัญญาณทั้ง 2 จะต้องต่อกับตัวต้านทานแบบ pull up 2-10K เนื่องจากเอาต์พุตมีลักษณะเป็น แบบ Open Darin หรือเป็นแบบ Open Collector เพื่อให้เอาต์พุตเชื่อมต่อกันได้หลายตัว

                                     ลักษณะการการเชื่อมต่ออุปกรณ์แบบ  BUS

     การเขียน-อ่านข้อมูลกับอุปกรณ์แบบ  BUS

 


การรับ-ส่งข้อมูลแบบ  BUS MCU จะเริ่มต้นการส่งข้อมูลด้วยการ
  - ส่งสถานะเริ่มต้น (START Conditions) เพื่อแสดงการขอใช้บัส
  - แล้วตามด้วย รหัสควบคุม (Control Byte) ซึ่งประกอบ ด้วยรหัส ประจำตัวอุปกรณ์ Device ID ,Device Address ,และ Mode ในการเขียนหรืออ่านข้อมูล
  - เมื่ออุปกรณ์ รับทราบว่า MCU ต้องการ จะติดต่อด้วยก็ต้องส่งสถานะรับรู้ (Acknowledge) หรือแจ้งให้ MCU รับรู้ว่าข้อมูลที่ได้ส่งมามีความถูกต้อง
  - และเมื่อสิ้นสุดการส่งข้อมูล MCU จะต้องส่ง สถานะสิ้นสุด ( STOP Conditions) เพื่อบอกกับอุปกรณ์ว่า สิ้นสุดการใช้บัส                

 สถานะบัสว่าง   คือเมื่อบัสไม่ได้ถูกใช้งาน ทั้ง SCL และ SDA จะเป็น 1 ทั้งคู่

 การกำหนดสถานะเริ่มต้นและสถานะสิ้นสุดของ  BUS (START and STOP Conditions)

 ลักษณะการกำหนดสถานะเริ่มต้นและสถานะสิ้นสุดของ  BUS

     - เมื่อต้องการส่งข้อมูล MCU จะต้องส่งสถานะเริ่มต้น (START Conditions) คือให้ SDA เปลี่ยนจาก 1 มาเป็น 0 ในขณะที่ SCL มีค่าเป็น 1

     - เมื่อสิ้นสุดการการใช้บัส MCU จะต้องส่งสถานะสิ้นสุด ( STOP Conditions) คือให้ SDA เปลี่ยนจาก 0 มาเป็น 1ในขณะที่ SCL มีค่าเป็น 1

 รหัสควบคุมของ  BUS (Control Byte)

   

  BUS (Control Byte)

 

รหัสควบคุมของ  BUS ประกอบด้วยรหัสประจำตัวของอุปกรณ์ (Device ID) ประกอบด้วยบิต 1-7 และบิต 0 เป็นบิตควบคุมการเขียนอ่าน

- รหัสประจำตัวของอุปกรณ์ ประกอบด้วยรหัสประจำตัวจากผู้ผลิต Product ID 4 บิต (บิต 4-7) ที่เปลี่ยนแปลงแก้ไขไม่ได้ และ Device Address 3 บิต (บิต 1-3) ซึ่งผู้ใช้ สามารถ กำหนด เองได้ รวมแลัวเป็นรหัส 7 บิท ใช้ระบุตัวอุปกรณ์ ที่ต่ออยู่บนบัส จะมีค่าซ้ำกันไม่ได้ 

- บิตควบคุมการเขียนอ่าน (Mode) บิต 0 เมื่อ MCU ต้องการเขียนข้อมูลไปยังอุปกรณ์ก็กำหนดให้บิตนี้เป็น 0 และเมื่อต้องการ อ่านข้อมูล จากอุปกรณ์ ก็กำหนดให้บิตนี้เป็น 1

ช่วงเวลารับส่งบิตข้อมูลของ I2C BUS

 

 การรับส่งบิตข้อมูลของ  BUS

 

- สะภาวะการรับ-ส่งข้อมูล จะกระทำในขณะที่ขา SCL เป็น 1

- สะภาวะการเปลี่ยนแปลงข้อมูล จะกระทำในขณะที่ขา SCL เป็น 0

 

1-Wire

    1-Wire เป็นระบบบัสการสื่อสารของอุปกรณ์ที่ออกแบบโดย Dallas Semiconductor Corp. ซึ่งให้ข้อมูลความเร็วต่ำ (16.3 kbit / s [1]) การส่งสัญญาณและจ่ายไฟเหนือตัวนำเดียว 1-Wire มีแนวคิดคล้ายกับI²C แต่มีอัตราข้อมูลที่ต่ำกว่าและมีช่วงที่ยาวกว่า โดยทั่วไปจะใช้เพื่อสื่อสารกับอุปกรณ์ขนาดเล็กราคาไม่แพงเช่นเครื่องวัดอุณหภูมิดิจิตอลและเครื่องมือวัดสภาพอากาศ เครือข่ายของอุปกรณ์ 1-Wire ที่มีอุปกรณ์หลักที่เกี่ยวข้องเรียกว่า MicroLAN คุณลักษณะที่โดดเด่นอย่างหนึ่งของบัสคือความเป็นไปได้ในการใช้สายไฟเพียงสองสาย - ข้อมูลและพื้นดิน เพื่อให้บรรลุสิ่งนี้อุปกรณ์ 1-Wire จะรวมตัวเก็บประจุ 800 pF เพื่อเก็บประจุและจ่ายพลังงานให้กับอุปกรณ์ในช่วงที่สายข้อมูลทำงานอยู่

ตัวอย่างการสื่อสารกับอุปกรณ์  

    สัญญาณต่อไปนี้สร้างขึ้นโดย FPGA ซึ่งเป็นหลักสำหรับการสื่อสารกับชิป DS2432 (EEPROM) และวัดด้วยเครื่องวิเคราะห์ตรรกะ ลอจิกสูงบนเอาต์พุต 1-Wire หมายความว่าเอาต์พุตของ FPGA อยู่ในโหมดไตรสถานะและอุปกรณ์ 1-Wire สามารถดึงบัสให้ต่ำได้ ต่ำหมายถึง FPGA ดึงบัสลง อินพุต 1-Wire คือสัญญาณบัสที่วัดได้ ในช่วงเวลาตัวอย่างอินพุตสูง FPGA จะสุ่มตัวอย่างอินพุตสำหรับตรวจจับการตอบสนองของอุปกรณ์และรับบิต 

 1-Wire-Protocol.png

ความคิดเห็น