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
การรับ-ส่งข้อมูลแบบ | ||||||||||||||||||
- ส่งสถานะเริ่มต้น (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 จะสุ่มตัวอย่างอินพุตสำหรับตรวจจับการตอบสนองของอุปกรณ์และรับบิต
ความคิดเห็น
แสดงความคิดเห็น