มีทาส i2c มากที่สุดที่ต้นแบบ i2c สามารถขับได้หรือไม่ อะไรคือปัจจัย จำกัด ทางกายภาพ?
มีทาส i2c มากที่สุดที่ต้นแบบ i2c สามารถขับได้หรือไม่ อะไรคือปัจจัย จำกัด ทางกายภาพ?
คำตอบ:
ปัจจัย จำกัด ซอฟต์แวร์คือขนาดของที่อยู่ที่ใช้สำหรับทาส: 7 บิตหรือ 10 บิตซึ่งรองรับอุปกรณ์ 127 และ 1,023 ตามลำดับ ทางกายภาพมีข้อ จำกัด สองประการ ครั้งแรกขนาดทางกายภาพของรถบัสเพราะรถบัสมีไว้สำหรับการวิ่งระยะสั้นเท่านั้น (ส่วนอินเตอร์ IC) หากบัสมีขนาดใหญ่เกินไปจะมีเอฟเฟกต์การโหลดแบบ capacitive และความล่าช้าในการแพร่กระจายซึ่งจำเป็นต้องได้รับการจัดการ ประการที่สองอุปกรณ์บางอย่างไม่สามารถรองรับที่อยู่ I2C ได้อย่างเต็มรูปแบบ ตัวอย่างเช่นเครื่องวัดการหมุนวน MPU6050 รองรับสองที่อยู่เท่านั้นและอุปกรณ์บางเครื่องสำรองที่อยู่เฉพาะสำหรับวัตถุประสงค์พิเศษ
จำนวนสูงสุดของโหนดถูก จำกัด ด้วยพื้นที่ที่อยู่และโดยความจุบัสรวม 400 pF ซึ่ง จำกัด ระยะการสื่อสารที่ใช้งานได้จริงเพียงไม่กี่เมตร
อ่านเพิ่มเติมได้ที่I²C
การกำหนดที่อยู่ จำกัด จำนวนของอุปกรณ์ - บางอย่างสามารถใช้การระบุที่อยู่ 10 บิต (ใช้ค่อนข้างน้อย) ซึ่ง จำกัด จำนวนที่อยู่ไว้ที่ 1024 มีจำนวนที่อยู่ 'สำรอง' จำนวนหนึ่ง
I2C (เมื่อเทียบกับ "รถบัสสายสอง" หรือสิ่งที่คนอื่นต้องการที่จะเรียกรถโดยสารที่คล้ายกัน) ควรเป็นไปตาม NXP (néeฟิลิปส์) มาตรฐานUM10204 I2C บัสข้อกำหนดและคู่มือการใช้ นั่นควรเป็นเอกสารอ้างอิงหลักของคุณไม่ใช่การตีความและชุดย่อยต่าง ๆ ที่มีอยู่ในที่อื่น
จำนวนสูงสุดของอุปกรณ์จะได้รับอิทธิพลจากความสามารถของไดรฟ์ของเอาต์พุตที่อ่อนแอที่สุด (ซึ่งจะเป็นตัวกำหนดตัวต้านทานแบบดึงต่ำสุด) การเดินสายและความจุอินพุตและโหมดการทำงาน / ความถี่ ดูหัวข้อ 7.2 การใช้งานสูงกว่าค่าความจุบัสสูงสุดที่อนุญาตหากค่าความจุสูงสุดต้องเกิน:
บัส i2c ส่วนใหญ่ถูก จำกัด โดยความจุของบัส (และความเร็วดังนั้น) และที่อยู่อุปกรณ์ที่สามารถเข้าถึงได้ และพื้นที่บอร์ดกายภาพ
แต่ไม่มีขีด จำกัด สูงสุดจริงเมื่อคุณคำนึงถึงบัฟเฟอร์บัสตัวขยายตัวทำซ้ำฮับมัลติเพล็กเซอร์สวิตช์ (หรือชื่ออื่น ๆ สำหรับอุปกรณ์ที่สามารถสลับระหว่างบัสได้หลายตัว) สิ่งเหล่านี้จะเพิ่มค่าใช้จ่ายของ i2c บางส่วนซึ่งสามารถเข้าถึงได้ผ่านทางบัส i2c เดียวกัน ตัวอย่าง PCA9548A เป็นสวิตช์บัส 8 บิต
ชิปตัวเดียวนี้สามารถเพิ่มจำนวนทาส i2c (127 * 8) ได้เป็นสี่เท่าในทางทฤษฎี และ PCA9548A สามารถกำหนดค่าได้ถึง 8 ที่อยู่บนบัสเดียวดังนั้นอุปกรณ์ 8 * 8 * 127 (คณิตศาสตร์อาจปิด) และนั่นก็เป็นเพียงกับอุปกรณ์นี้และไม่มาก
ไม่มีข้อ จำกัด ทางทฤษฎีหากคุณปรับความจุ
I2C ระบุความยาวที่อยู่ 2, 7 และ 10 บิตซึ่งให้ทฤษฎีสูงสุด 128 และ 1024 ที่อยู่ที่แตกต่างกันตามลำดับ
อย่างไรก็ตามมีที่อยู่ที่สงวนไว้ไม่กี่อย่างเช่น 0x00 (การโทรทั่วไป) ซึ่งจะเป็นการ จำกัด พื้นที่ที่อยู่เพิ่มเติม
หากคุณกำลังสร้างระบบที่คุณสามารถควบคุมอุปกรณ์ I2C ได้โดยตรงคุณสามารถใช้ที่อยู่ที่สงวนไว้สำหรับการใช้งานของคุณเอง แต่ระบบจะไม่ปฏิบัติตามมาตรฐาน I2C อีกต่อไป
นอกเหนือจากการกำหนดแอดเดรสแล้วยังมีข้อ จำกัด บัสแบบฟิสิคัล อุปกรณ์แต่ละชิ้นบนรถบัสจะต้องสามารถดึงบัสต่ำได้ในช่วงเวลาหนึ่ง (ขึ้นอยู่กับความเร็วบัส) หากบัสมีความจุมากอุปกรณ์อาจไม่สามารถดึง SDA ได้เร็วพอและการดึงอาจไม่ทำให้ SDA กลับมาเร็วพอ
ในตอนนี้ปัญหาฮาร์ดแวร์สามารถแก้ไขได้ด้วยฮาร์ดแวร์ไดรเวอร์เล็กน้อย ตอนนี้ฉันกำลังทำงานเกี่ยวกับโปรเจ็กต์ที่ใช้ I2C เพื่อสื่อสารกับอุปกรณ์ต่างๆในระยะ 10 วินาที รถบัสหลักใช้ 24 โวลต์และแต่ละบอร์ดมีไดรเวอร์ที่ลดระดับลงเป็น 3.3v
ในเปลือกถั่วข้อ จำกัด ทางกายภาพของ I2C สามารถเอาชนะได้ การกำหนดที่อยู่สามารถเอาชนะได้ แต่ถ้าคุณมีการควบคุมอุปกรณ์โดยตรง
ข้อ จำกัด เบื้องต้นเกี่ยวกับจำนวนทาสที่ผู้ขับขี่สามารถขับได้โดยทั่วไปนั้นมาจากปัจจัยทางไฟฟ้าเช่นความจุของบัส, การรั่วไหล, ความแรงของการขับเป็นต้นถ้าใครสามารถสร้างทาสที่มีค่าความเป็นกาฝากเป็นศูนย์และไม่มีการรั่วไหล ด้วยร่องรอยบอร์ดความจุศูนย์แล้วความจุบัสจะไม่เป็นปัจจัย แต่ในทางปฏิบัติแล้วไม่มีข้อสันนิษฐานใด ๆ
การระบุที่อยู่ของอุปกรณ์ที่ "รู้" เกี่ยวกับกันและกันไม่ได้เป็นปัญหา มันจะเป็นการง่ายที่จะออกแบบอุปกรณ์ต่อพ่วงซึ่งจะทำให้ชิปนับพันล้านเชื่อมต่อกันโดยใช้ที่อยู่ที่อ่านหนึ่งอันและหนึ่งเขียน เพียงระบุว่าอุปกรณ์ทุกชิ้นต้องมีรหัสสี่ไบต์ที่ไม่ซ้ำกันและจำเป็นต้องฟังที่อยู่การเขียนตลอดเวลา แต่ต้องเลื่อนออกจากทุกธุรกรรมที่มีสี่ไบต์ข้อมูลที่ส่งครั้งแรกไม่ตรงกับ ID ของพวกเขา ระบุเพิ่มเติมว่าอุปกรณ์อาจตอบกลับไปยังที่อยู่ที่อ่านได้หากธุรกรรมการเขียนล่าสุดที่พวกเขาได้ยินตรงกับที่อยู่ของพวกเขาเท่านั้น
หากต้องการเพิ่มความสามารถในการให้ต้นแบบกำหนดรหัสของทาสที่เชื่อมต่อทั้งหมดหนึ่งสามารถจองช่วง ID พิเศษบางอย่างสำหรับวัตถุประสงค์ดังกล่าว ตัวอย่างเช่นหนึ่งอาจกล่าวได้ว่าถ้าไบต์แรกของรหัสคือ FF ดังนั้นสี่ไบต์ถัดไปจะเป็นรูปแบบและสี่หลังจากนั้น ID อุปกรณ์ควรยังคงเชื่อมต่ออยู่ (และรับไบต์ ID สุดท้าย) หากส่วนของ ID ที่ระบุโดยมาสก์ตรงกับที่ให้ไว้ในคำสั่ง วิธีนี้จะช่วยให้ต้นแบบสามารถระบุอุปกรณ์อย่างน้อยหนึ่งรายการที่ใช้ 64 ธุรกรรมและอุปกรณ์เพิ่มเติมที่ใช้ 62 รายการหรือน้อยกว่าในการทำธุรกรรมแต่ละรายการ อาจไม่ใช่วิธีที่เป็นไปได้ที่เร็วที่สุดในการระบุอุปกรณ์ แต่ก็ไม่ได้เลวร้ายหากได้รับพื้นที่การค้นหาของ ID อุปกรณ์หลายพันล้านรายการ
คำตอบสั้น ๆ : มันขึ้นอยู่กับ
หากคุณมีอุปกรณ์ (ทั่วไป) ที่มีที่อยู่ 7 บิตสูงสุด 104 อุปกรณ์ (ที่อยู่ 128 แห่ง - ที่อยู่ที่สงวนไว้ (0x00-0x07 และ 0xF0-0xFF ถูกสงวนไว้)) (มีข้อ จำกัด บางอย่าง) หากคุณมีอุปกรณ์ (ทั่วไปน้อยกว่า) ที่รองรับ 10 บิต การกำหนดแอดเดรสสูงสุด 1024 อุปกรณ์ (คุณสามารถผสมอุปกรณ์ 7 บิตและ 10 บิตและเข้าถึงอุปกรณ์ได้สูงสุด 1136 เครื่อง)
ตอนนี้ถึงข้อ จำกัด : อุปกรณ์ที่เรียบง่ายส่วนใหญ่สามารถกำหนดค่าให้อยู่สองถึง 8 ที่แตกต่างกันเท่านั้น คุณสามารถเอาชนะสิ่งนี้ได้โดยอุปกรณ์สั่งซื้อที่กำหนดเองซึ่งมีที่อยู่พื้นฐานที่แตกต่างกัน (แต่โดยปกติแล้วหมายความว่าคุณสั่งซื้ออุปกรณ์จำนวนต่ำสุด) นอกจากนี้ยังมีข้อ จำกัด ด้านฮาร์ดแวร์ (ส่วนใหญ่เป็นความจุบัส) แต่สามารถแก้ไขได้ด้วยไดรเวอร์ i2c พิเศษ
หากคุณต้องการเชื่อมต่ออุปกรณ์ต่าง ๆ ในระยะทางที่ไกลกว่าฉันแนะนำให้ใช้ FieldBus! I2C ใช้สำหรับการสื่อสารภายในอุปกรณ์ (เช่นชุดทีวี) ฉันใช้ I2C กับ RaspberyPi ด้วยสายเคเบิลภายนอกสูงถึง 50 ซม. (แม้จะเป็น T-Sections คุณไม่ควรมีในระบบบัส) มันทำงานได้ดีอย่างน่าประหลาดใจ
จำนวนอุปกรณ์ที่เชื่อมต่อกับบัสถูก จำกัด ด้วยความจุบัสที่อนุญาตทั้งหมด 400 pF เนื่องจากไอซีส่วนใหญ่ที่มีอินเตอร์เฟซI²Cใช้เทคโนโลยี CMOS พลังงานต่ำและความต้านทานสูงไอซีจำนวนมากจึงสามารถเชื่อมต่อกับบัสI²Cก่อนถึงความจุสูงสุด
ด้วยชิปมัลติเพล็กเซอร์ที่เพิ่มขึ้น (เช่น TCA9544A) หรือบัฟเฟอร์ (เช่น PCA9515B) คุณสามารถเอาชนะข้อ จำกัด ทั้งหมด - ทั้งความจุของบัสและการกำหนดแอดเดรส
คุณสามารถวางอุปกรณ์ 3 เครื่องที่มีที่อยู่เหมือนกันด้านหลังมัลติเพล็กเซอร์และเลือกหนึ่งในอุปกรณ์เท่านั้นสื่อสารกับมันและเลือกอุปกรณ์อื่นในภายหลัง แน่นอนว่าซอฟต์แวร์มีความซับซ้อนมากขึ้น
หากคุณมีสายไฟที่ยาวคุณสามารถวางบัฟเฟอร์ไว้ตรงกลางและเอาชนะขีด จำกัด ของความจุ