1_RVpSLbCi9mERgyj9ZvjNOg333

I²C คืออะไร ? ทำไมชื่อไม่คุ้นเลย และการสื่อสาร I²C ระหว่างอุปกรณ์

I²C ย่อมาจาก Inter Integrate Circuit (IIC) แต่นิยมเรียกว่า I²C มากกว่า เป็นการสื่อสารอนุกรมแบบ synchronous เพื่อใช้สื่อสารข้อมูลระหว่างอุปกรณ์ความเร็วต่ำ ²C มีความโดดเด่นที่การเชื่อมต่อกันเป็นระบบบัสแบบรับและส่งข้อมูล

ซึ่งสามารถเชื่อมต่อกับอุปกรณ์จำนวนมากได้โดยใช้สายเพียงแค่ 2 เส้น ทำให้ลดจำนวนของสายไฟและขนาดของอุปกรณ์ไปได้ จึงทำให้เป็นการสื่อสารที่นิยมสำหรับระบบฝังตัว(embedded system)ขนาดเล็ก

อย่างที่เห็นในภาพที่ 1 สาย 2 เส้นที่จะเชื่อมต่อระหว่างอุปกรณ์คือ SCL และ SDA

  • สาย SCL จะส่งสัญญาณนาฬิกา เพื่อบอกว่าข้อมูลที่จะรับ/ส่ง จะทำที่ความถี่เท่าใด
  • สาย SDA จะใช้ในการส่งสัญญาณเพียงอย่างเดียว
ภาพที่ 1 แสดงการเชื่อมต่ออุปกรณ์แบบ I²C

อุปกรณ์ตัวใด ๆ ก็สามารถที่จะเป็น Master หรือ Slave ก็ได้ แต่โดยปกติแล้วเราจะให้อุปกรณ์ที่ สามารถสั่งการได้เป็น Master เพื่อเป็นตัวกลางในการสื่อสาร ทั้งรับข้อมูลและส่งข้อมูลให้อุปกรณ์อื่น ๆ

เราก็คงพอจะเรียนรู้ถึงหลักการคร่าว ๆ ของ I²C กันแล้วใช่ไหมครับ ทีนี้เราคงอยากรู้ว่าหน้าตาของข้อมูลเป็นยังไง เลื่อนลงไปดูต่อไปกันเลย

หน้าตาของข้อมูลเป็นยังไงกันนะ

การเขียนข้อมูลจากฝั่งของ Master โดยให้ Slave เป็นฝั่งรับข้อมูล

  • แรกเริ่ม Master จะส่งสัญญาณ START เพื่อให้ Slave ทุกตัวรอรับข้อมูล
  • 7 บิตแรกจะเป็น address ของ Slave ที่จะเรียกใช้ ตัวที่จะทำงานคือตัวที่ address ตรงกันกับตัวของมันเท่านั้น
  • สัญญาณการอ่าน/เขียน เพื่อบอก Slave ว่าข้อมูลที่ Master ส่งมาต้องอ่านหรือเป็นสัญญาณบอกเพื่อให้เขียนข้อมูลกลับไป (0 คือให้อ่าน 1 คือให้ส่งข้อมูลกลับไป)
  • เมื่อ Slave ทุกตัวได้รับข้อมูลจะตรวจสอบ address ว่าตรงกับของตนหรือไม่ ถ้าตรงกันก็จะส่งสัญญาณ ACK กลับไปให้ Master เพื่อบอกว่า address ที่เรียกมีการเชื่อมต่ออยู่ เพราะอุปกรณ์ที่ address ไม่ตรงกันจะส่งสัญญาณ NACK กลับไป ซึ่งมีความหมายว่าไม่ต้องทำอะไร
  • ในขั้นถัดไปจากนี้จะเป็นการส่งสัญญาณมาให้ทีละ 8 bit(1 byte) หลังจากโอนข้อมูลแต่ละ 1 byte Slave จะต้องตอบสนองด้วยสัญญาณ ACK เพื่อให้รู้ว่าการส่งข้อมูลไม่ผิดพลาดหรือสูญหาย (หากไม่ส่งกลับ Master จะส่งข้อมูลชุดเดิมมาใหม่)
  • เมื่อ Master ส่งข้อมูลเสร็จสิ้นก็จะส่งสัญญาณ STOP มาให้ Slave รู้
ภาพที่ 2 แสดงข้อมูลการเขียน I²C แบบสมบูรณ์

การเขียนข้อมูลจากฝั่งของ Slave ให้ Master เป็นฝั่งรับข้อมูล

  • ขั้นตอนช่วงแรกก็จะคล้ายกับการอ่านข้อมูล เพียงแค่ bit ที่บอกการอ่าน/เขียน นั้นจะแตกต่างกันเพราะทำคนละหน้าที่
  • ส่งสัญญาณ ACK กลับไปเพื่อบอกว่าอุปกรณ์ address ที่เรียกมีอยู่ในการเชื่อมต่อ
  • ส่วนของข้อมูลตรงนี้ Slave จะเป็นคนเขียนกลับไปให้ Master ดูได้จากเส้น Data Transmitter เราจะเห็นว่า Slave จะส่งข้อมูลกลับไปให้ Master 8 bit
  • เมื่อครบ 8 bit แล้ว Master จะต้องส่งสัญญาณตอบสนองต่อการส่งแต่ละ byte ด้วยสัญญาณ ACK แต่เมื่อ Master ไม่ต้องการข้อมูลแล้ว หลัง byte สุดท้าย Master จะต้องส่งสัญญาณ NACK กลับมา
  • สุดท้าย Master จะส่งสัญญาณ STOP มาเพื่อสิ้นสุดการส่งด้วย
ภาพที่ 3 แสดงข้อมูลการอ่าน I²C แบบสมบูรณ์

ตัวอย่างอุปกรณ์ที่ใช้การสื่อสารแบบ I²C

ตอนนี้เราก็คงจะมองภาพรวมของ I²C ได้กันบ้างแล้ว ส่วนเรื่องถัดไปจะเป็นอะไรนั้น ต้องมาติดตามดูกันนะครับ

อ่านต่อ : การสื่อสารข้อมูลระหว่างอุปกรณ์

Share this post