ความเร็วสัญญาณนาฬิกาขั้นต่ำ I2C และความน่าเชื่อถือ


12

มีการกำหนดอัตรานาฬิกาขั้นต่ำโดย I2C หรือไม่ ฉันรู้ว่าอัตราสัญญาณนาฬิกาที่ใช้กันอย่างแพร่หลายคือ 100kHz และมีโหมด "เร็ว" ที่ 400kHz ที่รองรับโดยอุปกรณ์บางอย่างและโหมดที่เร็วขึ้นยังรองรับโดยอุปกรณ์อื่น ๆ (ฉันคิดว่า 1MHz?) เนื่องจากสัญญาณ SCK ถูกสร้างขึ้นโดยมาสเตอร์ฉันคิดว่าใครสามารถทำงานที่ความเร็วช้ากว่าสัญญาณใด ๆ - มีขอบเขตที่ต่ำกว่าในทางปฏิบัติหรือไม่? อุปกรณ์ทาสสนใจในเรื่องของอัตรานาฬิกามากน้อยเพียงใด (เช่นเป็นเรื่องปกติที่อุปกรณ์เหล่านั้นจะมีช่วงเวลาสั้น ๆ )? เหตุผลที่ฉันถามคือฉันสงสัยว่าอาจเรียกใช้ I2C ในระยะทางที่ยาวกว่า (เช่น 20 ฟุต) เพื่อตั้งโปรแกรม I2C EEPROMs ได้อย่างน่าเชื่อถือในการตั้งค่าเครื่องมือทดสอบการผลิต ฉันสมมติว่ามันจะไม่ทำงานอย่างน่าเชื่อถือในระยะทางนั้นในอัตราข้อมูลมาตรฐาน


โหมด Hi-Speed ​​อนุญาตให้มีความเร็วสูงสุด 3.4 MHz ความจุบัส 100 pF
stevenvh

คำตอบ:


16

ไม่ไม่มีความถี่ต่ำสุดความถี่สัญญาณนาฬิกาขั้นต่ำคือ 0 หรือ DC ดูรายละเอียดได้ที่หน้า 48

แต่คุณจะต้องใส่ใจกับเวลาที่เพิ่มขึ้นและลดลง สิ่งเหล่านี้คือ 1,000 ns และสูงสุด 300 ns, resp และสายเคเบิลยาวที่มีความจุบางส่วนจะมีผลต่อขอบโดยไม่คำนึงถึงความถี่

มันเป็นความจุนั้นพร้อมกับความต้านทานแบบดึงขึ้นซึ่งจะกำหนดเวลาที่เพิ่มขึ้น เวลาตกไม่ใช่ปัญหาเนื่องจาก FET ที่ดึงเส้นต่ำมีความต้านทานต่ำมากและค่าคงที่เวลาตกจะต่ำมากเช่นกัน ดังนั้นเราจึงเหลือเวลาเพิ่มขึ้น ในการรับเวลาเพิ่มขึ้น 1,000 ns บนสายเคเบิล 200 pF ตัวต้านทานแบบดึงขึ้นของคุณไม่ควรมีขนาดใหญ่กว่า 2.2 kΩ (เพิ่มเวลาเป็น 90% ของมูลค่าสุดท้าย)

ป้อนคำอธิบายรูปภาพที่นี่

กราฟแสดงความต้านทานแรงดึงสูงสุด (เป็นΩ) เมื่อเทียบกับความจุของสายเคเบิล (เป็น pF) เพื่อให้ได้ขอบที่สูงขึ้น 1,000 ns โปรดทราบว่าอุปกรณ์ I2C ไม่จำเป็นต้องจมมากกว่า 3 mA ดังนั้นที่ 3.3 V ความจุของบัสไม่ควรสูงกว่าประมาณ 395 pF มิฉะนั้นความต้านทานแบบดึงขึ้นจะต้องมีขนาดเล็กกว่า 1100 Ωและอนุญาตเพิ่มเติม กว่า 3 mA นั่นคือเส้นประสีเขียว สำหรับการใช้งาน 5 V ความจุที่อนุญาตคือ 260 pF สำหรับค่า pull-up 1667 ((เส้นประสีม่วง)


ใครบอกว่าอุปกรณ์ I2C สามารถเก็บได้สูงสุด 3mA อุปกรณ์ I2C ของฉันมี VOL = 0,4 V สำหรับ IOL = 20mA นี่หมายความว่ามันสามารถจมกระแสได้มากขึ้นดังนั้นตัวต้านทานแบบดึงขึ้นอาจมีขนาดเล็กลง สาเหตุที่สามารถจัดการความจุได้มากขึ้น @stevenvh
Kono

ตัวอย่างคือ Arduino ทาส พวกเขาสามารถจมได้ถึง 10mA ก่อน VOL = 0,4-0,5V ซึ่งหมายความว่าพวกเขาสามารถขับรถบัสที่โหลดสูงกว่ามาก
Kono

อุปกรณ์ I2C ส่วนใหญ่สามารถจมได้เพียง 3mA เท่านั้น แต่ในปัจจุบันมีอุปกรณ์จำนวนมากที่มีความสามารถในการจมมากขึ้น โชคดี!
Kono

4

ฉันใช้งาน I2C ที่ความเร็วประมาณ 100Hz โดยไม่มีปัญหา เช่น @stevenvh พูดแค่กังวลเกี่ยวกับความเร็วสูงสุดและความจุของสาย


2
ฉันมี i2c แบบก้าวเดียว ไม่ได้รับประกันว่าทุกอุปกรณ์ที่คุณค้นหาจะได้รับการทำเช่นนั้น แต่ไม่มีอะไรในทางเทคนิคที่จะป้องกันไม่ให้อุปกรณ์ทำงานได้ "ถึง DC"
gbarry

4

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

ตัวเลือกอื่นสมมติว่าระยะยาวเป็นส่วนหนึ่งของการตั้งค่าและไม่ใช่ผลิตภัณฑ์อาจใช้สิ่งที่จัดการกับระยะทางได้อย่างดีเช่น RS422 (หรือในทางปฏิบัติที่พูดได้แม้กระทั่ง RS232) เพื่อพูดคุยกับไมโครคอนโทรลเลอร์ที่อยู่ในขั้วต่อ ซึ่งจะพูดคุย i2c ในระยะทางค่อนข้างสั้นกับเป้าหมาย

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

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

แน่นอนคุณจะต้องทำการตรวจสอบการอ่านข้อมูลที่คุณเพิ่งตั้งโปรแกรม

เพื่อการเปรียบเทียบจอภาพ IIRC VGA มีการอ่าน ID ของ i2c (หรือว่าเป็น i2c) ซึ่งอาจยังใช้งานได้หากคุณเพิ่มสายต่อยาว 6 ฟุตเข้ากับสาย 3 หรือ 4 ฟุต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.