บัส I2C — การกำหนด, อุปกรณ์, การถ่ายโอนข้อมูล, การกำหนดแอดเดรส

เมื่อสร้างวงจรอิเล็กทรอนิกส์ นักพัฒนาจำนวนมากต้องเผชิญกับความต้องการใช้ชิประดับกลางจำนวนมากเพื่อจับคู่ สุ่มตัวอย่าง และระบุตำแหน่งแต่ละบล็อก เพื่อลดจำนวนชิปเสริม Philips ได้เสนออินเทอร์เฟซเครือข่ายซีเรียล I2C แบบสองทิศทางสองสายย้อนกลับไปในทศวรรษที่ 1980 โดยออกแบบมาเพื่อจัดการชิปหลายตัวภายในอุปกรณ์เดียวโดยเฉพาะ

I2C Bus - การกำหนด, อุปกรณ์, การถ่ายโอนข้อมูล, การกำหนดที่อยู่

ปัจจุบัน ฟิลิปส์เพียงรายเดียวผลิตอุปกรณ์ที่เข้ากันได้กับ I2C มากกว่าร้อยรายการสำหรับอุปกรณ์อิเล็กทรอนิกส์โดยมีวัตถุประสงค์ที่หลากหลาย: หน่วยความจำ ระบบประมวลผลวิดีโอ ตัวแปลงอนาล็อกเป็นดิจิตอลและดิจิตอลเป็นอนาล็อก ไดรเวอร์แสดงผล ฯลฯ

ไอทูซีบัส

บัส I2C เป็นการดัดแปลงโปรโตคอลการแลกเปลี่ยนข้อมูลแบบอนุกรมที่สามารถส่งข้อมูลแบบอนุกรม 8 บิตในโหมด "เร็ว" ปกติที่อัตรา 100 ถึง 400 กิโลบิตต่อวินาที กระบวนการแลกเปลี่ยนข้อมูลถูกนำมาใช้ที่นี่โดยใช้สายสองเส้นเท่านั้น (ไม่นับสายทั่วไป): สาย SDA สำหรับข้อมูลและสาย SCL สำหรับการซิงโครไนซ์

บัสกลายเป็นแบบสองทิศทางเนื่องจากข้อเท็จจริงที่ว่าการลดหลั่นของเอาต์พุตของอุปกรณ์ที่เชื่อมต่อกับบัสมีตัวสะสมหรือช่องเปิดแบบเปิด ดังนั้นจึงจำลองการเดินสาย AND เป็นผลให้บัสลดจำนวนการเชื่อมต่อระหว่างชิป ทำให้เหลือพินและร่องรอยที่จำเป็นบนบอร์ดน้อยลง ผลที่ได้คือตัวบอร์ดเองนั้นเรียบง่ายขึ้น กะทัดรัดขึ้น และมีความก้าวหน้าทางเทคโนโลยีมากขึ้นในการผลิต

โปรโตคอลนี้อนุญาตให้คุณปิดใช้งานตัวถอดรหัสที่อยู่และตรรกะการเจรจาภายนอกอื่นๆ จำนวนชิปที่สามารถทำงานได้พร้อมกันบนบัส I2C ถูกจำกัดด้วยความจุ — สูงสุด 400 pF

โปรโตคอล I2C

ไอซีที่เข้ากันได้กับ I2C มีอัลกอริทึมลดสัญญาณรบกวนของฮาร์ดแวร์เพื่อให้แน่ใจว่าข้อมูลมีความสมบูรณ์แม้ในที่ที่มีสัญญาณรบกวนสูง อุปกรณ์ดังกล่าวมีส่วนต่อประสานที่ช่วยให้ไมโครเซอร์กิตสามารถสื่อสารกันได้แม้ว่าแรงดันไฟฟ้าจะต่างกันก็ตาม ในรูปด้านล่าง คุณสามารถทำความคุ้นเคยกับหลักการเชื่อมต่อไมโครวงจรหลายตัวผ่านบัสทั่วไป

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

แผนภาพการเชื่อมต่ออุปกรณ์

ในช่วงเวลาใดก็ตามของการทำงานบนบัส I2C มีเพียงอุปกรณ์เดียวเท่านั้นที่สามารถทำหน้าที่เป็นมาสเตอร์ได้ มันสร้างสัญญาณบนเส้น SCLมาสเตอร์สามารถเป็นตัวรับหลักหรือตัวส่งหลักก็ได้

โดยหลักการแล้ว บัสอนุญาตให้มีต้นแบบที่แตกต่างกันหลายตัว แต่มีข้อ จำกัด เกี่ยวกับลักษณะของการสร้างสัญญาณควบคุมและการตรวจสอบสถานะของบัส ซึ่งหมายความว่ามาสเตอร์หลายตัวสามารถเริ่มส่งสัญญาณได้ในเวลาเดียวกัน แต่ความขัดแย้งประเภทนี้จะถูกขจัดออกไปด้วยอนุญาโตตุลาการ นั่นคือวิธีที่มาสเตอร์ประพฤติตัวเมื่อตรวจพบว่าบัสถูกครอบครองโดยมาสเตอร์คนอื่น

การซิงโครไนซ์อุปกรณ์คู่หนึ่งทำให้มั่นใจได้ว่าอุปกรณ์ทั้งหมดเชื่อมต่อกับบัสโดยสร้างสายไฟ "และ" ในขั้นต้นสัญญาณ SDA และ SCL อยู่ในระดับสูง

เริ่มและหยุด

การแลกเปลี่ยนเริ่มต้นด้วยมาสเตอร์สร้างสถานะ «START»: บนสาย SDA สัญญาณจะเปลี่ยนจากสถานะสูงไปต่ำ ในขณะที่สาย SCL มีระดับสูงที่เสถียร อุปกรณ์ทั้งหมดที่เชื่อมต่อกับบัสรับรู้สถานการณ์นี้เป็นคำสั่งเพื่อเริ่มการแลกเปลี่ยน


เริ่มและหยุด - ซิงโครไนซ์สัญญาณ

ต้นแบบแต่ละตัวสร้างสัญญาณนาฬิกาแต่ละตัวบนสาย SCL เมื่อส่งข้อมูลบนบัส

การแลกเปลี่ยนจบลงด้วยการก่อตัวของสถานะ STOP โดยมาสเตอร์: บนสาย SDA สัญญาณจะเปลี่ยนจากต่ำไปสูง ในขณะที่สาย SCL มีระดับสูงที่มั่นคง

คนขับจะทำหน้าที่เป็นแหล่งกำเนิดสัญญาณ START และ STOP เสมอ ทันทีที่สัญญาณ «START» คงที่ แสดงว่าสายไม่ว่าง สายจะว่างเมื่อตรวจพบสัญญาณ STOP

การถ่ายโอนข้อมูล

ทันทีหลังจากประกาศสถานะ START มาสเตอร์จะสลับบรรทัด SCL ต่ำและส่งบิตที่สำคัญที่สุดของไบต์ข้อความแรกไปยังบรรทัด SDA จำนวนไบต์ในข้อความไม่จำกัดการเปลี่ยนแปลงบนสาย SDA จะเปิดใช้งานเฉพาะเมื่อระดับสัญญาณบนสาย SCL ต่ำ ข้อมูลถูกต้องและไม่ควรเปลี่ยนแปลงเมื่อพัลส์ซิงค์สูงเท่านั้น

การรับทราบว่าผู้รับสเลฟได้รับไบต์จากตัวส่งสัญญาณหลักแล้ว โดยการตั้งค่าบิตตอบรับพิเศษบนบรรทัด SDA หลังจากที่ได้รับบิตข้อมูลที่แปดแล้ว

การยืนยัน

ดังนั้น การส่งข้อมูล 8 บิตจากเครื่องส่งไปยังเครื่องรับจึงจบลงด้วยพัลส์พิเศษบนสาย SCL เมื่ออุปกรณ์รับไปต่ำในสาย SDA ซึ่งแสดงว่าได้รับข้อมูลทั้งหมดแล้ว

ชีพจรการตอบรับการซิงค์

การยืนยันเป็นส่วนสำคัญของกระบวนการถ่ายโอนข้อมูล ต้นแบบสร้างพัลส์ซิงค์ เครื่องส่งสัญญาณจะส่งสถานะต่ำไปยัง SDA ในขณะที่นาฬิการับทราบทำงานอยู่ ในขณะที่พัลส์ซิงค์สูง เครื่องรับจะต้องรักษาระดับ SDA ให้ต่ำ

หากสเลฟปลายทางไม่ยอมรับแอดเดรส เช่น เนื่องจากสเลฟกำลังยุ่งอยู่ สายข้อมูลต้องอยู่ในระดับสูง จากนั้นมาสเตอร์อาจให้สัญญาณ STOP เพื่อยกเลิกการส่ง

หากการรับสัญญาณดำเนินการโดยผู้รับหลักจำเป็นต้องแจ้งเครื่องส่งสัญญาณรองหลังจากเสร็จสิ้นการส่งสัญญาณ - ไม่ใช่โดยการยืนยันไบต์สุดท้าย เครื่องส่งสเลฟจะปล่อยสายข้อมูลเพื่อให้มาสเตอร์สามารถส่งสัญญาณ STOP หรือสัญญาณ START ซ้ำได้

การซิงโครไนซ์ของอุปกรณ์นั้นมั่นใจได้จากการเชื่อมต่อกับสาย SCL นั้นทำขึ้นตามหลักการ "AND"

มาสเตอร์ไม่มีสิทธิ์แต่เพียงผู้เดียวในการควบคุมการเปลี่ยนเส้น SCL จากต่ำไปสูงหากสเลฟต้องการเวลามากขึ้นในการประมวลผลบิตที่ได้รับ มันสามารถคง SCL ให้ต่ำได้โดยอิสระจนกว่าจะพร้อมรับข้อมูลบิตถัดไป เส้น SCL ในสถานการณ์ดังกล่าวจะต่ำในช่วงเวลาของพัลส์ซิงค์ระดับต่ำที่ยาวที่สุด

อุปกรณ์ที่มีค่าต่ำสุดอย่างต่อเนื่องจะยังคงไม่มีการใช้งานจนกว่าระยะเวลาที่ยาวนานจะสิ้นสุดลง เมื่ออุปกรณ์ทั้งหมดสิ้นสุดระยะเวลาการซิงค์ต่ำ SCL จะสูงขึ้น

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

เครื่องรับสามารถใช้สัญญาณการซิงโครไนซ์เป็นวิธีการควบคุมการส่งข้อมูลในระดับบิตและไบต์

หากอุปกรณ์สามารถรับไบต์ในอัตราสูง แต่ต้องใช้เวลาระยะหนึ่งเพื่อจัดเก็บไบต์ที่ได้รับหรือเตรียมรับไบต์ถัดไป อุปกรณ์อาจคง SCL ไว้ในระดับต่ำต่อไปหลังจากได้รับและรับทราบไบต์แล้ว บังคับให้ เครื่องส่งสัญญาณเข้าสู่สถานะสแตนด์บาย

ไมโครคอนโทรลเลอร์ที่ไม่มีวงจรฮาร์ดแวร์ในตัว เช่น ที่ระดับบิต อาจทำให้ความเร็วสัญญาณนาฬิกาช้าลงโดยเพิ่มระยะเวลาของสถานะต่ำ ดังนั้น อัตราบอดของอุปกรณ์หลักจะถูกกำหนดโดยความเร็วของ อุปกรณ์ที่ช้าลง


ไอทูซีบัส

ที่อยู่

อุปกรณ์แต่ละชิ้นที่เชื่อมต่อกับบัส I2C มีที่อยู่ของโปรแกรมเฉพาะซึ่งมาสเตอร์ระบุที่อยู่โดยส่งคำสั่งเฉพาะ Microcircuits ประเภทเดียวกันนั้นมีลักษณะโดยตัวเลือกที่อยู่ซึ่งใช้งานทั้งในรูปแบบของอินพุตดิจิทัลของตัวเลือกหรือในรูปแบบอะนาล็อก ที่อยู่จะแบ่งออกเป็นช่องว่างที่อยู่ของอุปกรณ์ที่เชื่อมต่อกับบัส

โหมดปกติจะถือว่าการกำหนดแอดเดรสเจ็ดบิต การกำหนดแอดเดรสทำงานดังนี้: หลังจากคำสั่ง «START» มาสเตอร์จะส่งไบต์แรก ซึ่งกำหนดว่าอุปกรณ์สเลฟใดที่จำเป็นในการสื่อสารกับมาสเตอร์ นอกจากนี้ยังมีที่อยู่การโทรทั่วไปที่กำหนดอุปกรณ์ทั้งหมดบนบัส อุปกรณ์ทั้งหมด (ในทางทฤษฎี) ตอบสนองด้วยการรับทราบ แต่ในทางปฏิบัติสิ่งนี้หายาก

ดังนั้น เจ็ดบิตแรกของไบต์แรกคือที่อยู่สลาฟ บิตที่มีนัยสำคัญน้อยที่สุด บิตที่แปด ระบุทิศทางของการส่งข้อมูล หากมี «0» ข้อมูลจะถูกเขียนจากมาสเตอร์ไปยังทาสนี้ ถ้า «1» ข้อมูลจะถูกอ่านโดยมาสเตอร์จากสเลฟนี้

หลังจากที่มาสเตอร์ส่งที่อยู่ไบต์เสร็จแล้ว สเลฟแต่ละตัวจะเปรียบเทียบที่อยู่ของตนกับมัน ใครก็ตามที่มีที่อยู่เดียวกันจะเป็นสเลฟและถูกกำหนดให้เป็นตัวส่งสเลฟหรือตัวรับสเลฟ ขึ้นอยู่กับค่าของบิตที่มีนัยสำคัญน้อยที่สุดของไบต์แอดเดรส

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

บางครั้งพินที่มีการตั้งค่าแบบอะนาล็อกของช่วงที่อยู่ที่ตั้งโปรแกรมได้ก็เพียงพอแล้ว ตัวอย่างเช่น SAA1064 - ไดรเวอร์ไฟแสดงสถานะ LED ที่มีการใช้งานดังกล่าว ศักยภาพของพินเฉพาะจะกำหนดออฟเซ็ตของพื้นที่แอดเดรสของชิป เพื่อให้ชิปประเภทเดียวกันไม่ขัดแย้งกับการทำงานบนบัสเดียวกัน ชิปทั้งหมดที่รองรับบัส I2C มีชุดของที่อยู่ที่ผู้ผลิตระบุไว้ในเอกสารประกอบ

ชุดค่าผสม «11110XX» สงวนไว้สำหรับการกำหนดแอดเดรส 10 บิต หากเรานึกภาพการแลกเปลี่ยนข้อมูลจากคำสั่ง «START» ไปยังคำสั่ง «STOP» จะมีลักษณะดังนี้:


ที่อยู่

อนุญาตให้ใช้รูปแบบการแลกเปลี่ยนข้อมูลที่เรียบง่ายและรวมกันได้ที่นี่ รูปแบบที่รวมกันหมายความว่าระหว่าง «START» และ «STOP» มาสเตอร์และสเลฟสามารถทำหน้าที่เป็นตัวรับและตัวส่งสัญญาณ ซึ่งมีประโยชน์เช่นในการจัดการหน่วยความจำอนุกรม

ให้ข้อมูลไบต์แรกถ่ายโอนที่อยู่หน่วยความจำ จากนั้นทำซ้ำคำสั่ง «START» และอ่านที่อยู่สเลฟ ข้อมูลหน่วยความจำจะทำงาน การตัดสินใจที่จะเพิ่มหรือลดที่อยู่ที่เข้าถึงก่อนหน้านี้โดยอัตโนมัตินั้นกระทำโดยผู้พัฒนาอุปกรณ์หลังจากที่ได้ศึกษาเอกสารประกอบของชิปก่อนหน้านี้แล้ว ไม่ทางใดก็ทางหนึ่งหลังจากได้รับคำสั่ง START อุปกรณ์ทั้งหมดจะต้องกู้คืนลอจิกและเตรียมพร้อมสำหรับการตั้งชื่อที่อยู่

เราแนะนำให้คุณอ่าน:

ทำไมกระแสไฟฟ้าถึงเป็นอันตราย?