Thaimicrotron.com : Home
 
การเชื่อมต่ออุปกรณ์แบบ 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
 
 
     
  การรับ-ส่งข้อมูลแบบ 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 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