คำถามติดแท็ก i2c

I²C (Inter-Integrated Circuit) เป็นบัสอนุกรมหลายตัวที่คิดค้นโดย Philips (ตอนนี้ NXP) สำหรับการสื่อสารระหว่างไอซีบน PCB เดียวกันนั่นคือระยะทางสั้น ๆ

2
การใช้ I2C ที่ซ้ำซ้อนใน avionics ยานอวกาศ
ฉันเพิ่งอ่านรายงานเกี่ยวกับโครงการพัฒนา avionics JPL x2000 ซึ่งพัฒนาแพลตฟอร์ม avionics แบบแยกส่วนโดยใช้ silicon เชิงพาณิชย์เพื่อลดต้นทุนและพลังงาน พวกเขาเลือกใช้สถาปัตยกรรมของสองโปรโตคอลที่ซ้ำซ้อนซึ่งเชื่อมโยงอุปกรณ์อิเล็กทรอนิกส์ทั้งหมดในยานอวกาศ ความเร็วสูง 1394 บัสใช้สำหรับข้อมูลขนาดใหญ่ในขณะที่บัส I2C (ที่ 100khz) ใช้สำหรับควบคุมแบนด์วิดท์ต่ำ นี่คือการกำหนดค่าเป็นรถบัสหลายหลักที่ทุกโหนดสามารถสื่อสารกับแต่ละอื่น ๆ ฉันไม่ได้ใช้ I2C มากกว่าเซ็นเซอร์เดียว แต่จากสิ่งที่ฉันเข้าใจมีข้อ จำกัด เกี่ยวกับระยะทางที่ร้ายแรง ฉันอยู่ในยานอวกาศอาจมีชุดสายไฟยาวมาก นอกจากจะมีสองบัส I2C ซ้ำซ้อนอุปกรณ์แต่ละคนมี ASIC ที่กำหนดเองที่ให้แยกระหว่างรถบัสและชิปหลักภาพที่นี่และที่นี่ ชิพนี้อาจให้การปรับสภาพบางอย่างเช่นกัน? ทุกคนสามารถอธิบายได้หรือไม่ว่าทำไมพวกเขาถึงเลือกใช้โปรโตคอลที่ออกแบบมาเพื่อการสื่อสารภายในหนึ่ง PCB สำหรับการสื่อสารภายในยานพาหนะขนาดใหญ่ ฉันรู้ว่าอาจไม่ใช่คำตอบที่แน่นอน แต่ฉันสนใจที่จะฟังเกี่ยวกับปัจจัยที่เป็นตัวเลือกประเภทนั้น
10 i2c  protocol 

1
อัตราการฆ่า I2C คืออะไร
ฉันกำหนดค่า I 2 C บน PIC18 โดยใช้ฟังก์ชั่นในตัวของคอมไพเลอร์ C18 ดังที่อธิบายไว้ในส่วนที่ 2.4 ของเอกสาร : void OpenI2C2( unsigned char sync_mode, unsigned char slew ); slewผมไม่แน่ใจว่าสิ่งที่ฉันควรจะทำอย่างไรกับ ฉันสามารถเลือกจากสองตัวเลือกที่กำหนดไว้ในi2c.h: SLEW_OFF: อัตราการฆ่าไม่ทำงานสำหรับโหมด 100 kHz SLEW_ON: เปิดใช้งานอัตรา Slew สำหรับโหมด 400 kHz ในแผ่นข้อมูลในการลงทะเบียน 15-1 หน้า 257 ทั้งสองตัวเลือกมีการอธิบายรายละเอียดเพิ่มเติมเล็กน้อย: 1 = การควบคุมอัตราการเลื่อนไม่ทำงานสำหรับโหมดความเร็วมาตรฐาน (100 kHz และ 1 MHz) 0 = เปิดใช้งานการควบคุมอัตราสโลว์สำหรับโหมดความเร็วสูง (400 …
10 pic  c  i2c  software  c18 

2
การคำนวณตัวต้านทาน I2C pullup
ฉันกำลังพยายามขับจอแสดงผล LCD I2C นี้ด้วยไมโครคอนโทรลเลอร์ATxmega16A4U อุปกรณ์ทั้งสองจะแสดงรายการเพื่อทำงานกับความถี่สัญญาณนาฬิกา I2C สูงถึง 400 kHz อุปกรณ์สองชิ้นเป็นอุปกรณ์เดียวในบัส I2C อย่างไรก็ตามการคำนวณหาขอบเขตตัวต้านทานแบบดึงขึ้นให้ค่าที่ค่อนข้างแปลก การคำนวณค่าตัวต้านทานการดึงต่ำสุดของ I2C: Rm ฉันn= Vc c - 0.43 เมตร= 966.7 ΩRม.ผมn=Vคค-0.43ม.A=966.7Ω\begin{equation} R_{min} = \frac{Vcc - 0.4}{3mA} = 966.7 \Omega \end{equation} ดูที่เอกสารข้อมูลทางเทคนิคของ uC ในหน้า 92 แสดงรายการค่าความจุขาเข้าสูงสุดของ 10pF อย่างไรก็ตามสำหรับ LCD มันมีหน้า 8 สิ่งที่เรียกว่าCapacitive load represent by each bus lineป้ายชื่อเป็น Cb …
10 i2c  pullup 

4
ความล้มเหลวในการอ่าน / เขียน I2C ภายใต้ภาระการขัดจังหวะอย่างหนัก
ในระบบของฉันฉันใช้ I2C และฉันรู้ว่ามีภาระมากขัดจังหวะ (จากแหล่งอื่น ๆ ) การสื่อสาร I2C หยุดชะงักได้อย่างง่ายดาย นี่เป็นพฤติกรรมที่คาดหวังสำหรับ I2C หรือไม่ ฉันคาดว่าจะมีการโหลดอินเตอร์รัปต์ แต่ก็ยังใช้ได้เนื่องจาก I2C ไม่ใช่เวลาที่สำคัญสำหรับอินเตอร์เฟซที่สำคัญนาฬิกามีข้อมูล ปรับปรุง: โปรเซสเซอร์คือ STM32 อินเตอร์รัปต์เกิดจาก ADC ฉันไม่สามารถปิดการใช้อินเตอร์รัปต์ในระหว่างการอ่านเหตุการณ์ได้ดังนั้นฉันต้องหาวิธีแก้ปัญหาที่ทำให้การสื่อสาร i2c มีเสถียรภาพมากขึ้น STM32 เป็นอุปกรณ์ตัวหลักและตัวต่อเป็นอุปกรณ์อื่น (accelerometer) Update2: เมื่อฉันเชื่อมต่อตัววิเคราะห์เชิงตรรกะกับนาฬิกาด้วยสายเคเบิลเล็ก ๆ บินปัญหาจะหายไป ที่น่าสนใจคือไม่มีการขัดจังหวะการโหลดอ่านการเขียนได้ดีเมื่อมีการขัดจังหวะการโหลดจะไม่ทำงาน อย่างไรก็ตามถ้าฉันแนบโพรบเข้ากับนาฬิกาการอ่านเขียนจะทำงานภายใต้อินเตอร์รัปต์โหลดเช่นกัน ฉันคิดว่ามีปัญหาเรื่องความจุอยู่ที่ไหนซักแห่ง
10 i2c 

4
การสื่อสารนี้เป็นI²Cหรือไม่
ฉันต้องการถอดรหัสการสื่อสารระหว่างอุปกรณ์สองเครื่อง แต่ฉันไม่มีข้อมูลเกี่ยวกับอุปกรณ์เหล่านี้ ทั้งหมดที่ฉันรู้คือจำเป็นต้องใช้สายสี่เส้น (GND, VCC และการสื่อสารสองสาย) ฉันสงสัยว่ามันคือI²Cการสื่อสาร ฉันพยายามที่จะถอดรหัสด้วยเครื่องมือถอดรหัสออสซิลโลสโคป แต่ฉันก็ไม่แน่ใจ ฉันไม่สามารถระบุองค์ประกอบของการสื่อสารI²Cได้อย่างเหมาะสมเมื่อฉันตรวจสอบรูปคลื่น เมื่อดูที่รูปคลื่นฉันได้ตั้งสมมติฐานดังต่อไปนี้และอาจมีคนช่วยได้ นี่คือสมมติฐานของฉัน: ทุกอย่างทำให้เชื่อว่านาฬิกาเป็นสัญญาณสีน้ำเงินและข้อมูลเป็นสัญญาณสีแดง ดูเหมือนว่านาฬิกาจะกลับด้านเนื่องจากสถานะไม่ได้ใช้งานอยู่ในระดับสูง ฉันไม่แน่ใจว่าสัญญาณข้อมูลกลับด้านด้วยหรือไม่ แต่ดูเหมือนว่าจะเป็นเช่นนั้น สมมติฐานของฉันถูกต้องหรือไม่ ในรูปสุดท้ายตัวเลขที่มีหมายเลข 5 ระบุไว้ในวงกลมและมีส่วนหนึ่งของสัญญาณ ฉันไม่สามารถระบุบิตเริ่มต้น ack และ stop ใครสามารถระบุองค์ประกอบเหล่านี้เพียงแค่ดูที่รูป? [แก้ไข] บางคนถามฉันเกี่ยวกับอุปกรณ์ที่อยู่ในการสื่อสาร การสื่อสารอยู่ระหว่างกุญแจรถและเครื่องมือที่ฉันไม่ได้รับอนุญาตให้พูด แต่ฉันพยายามทำวิศวกรรมย้อนกลับบนมัน

1
I2C ใช้งานได้เมื่อโพรบหรือโหลดด้วย 1Mohm เท่านั้น
ฉันพยายามแก้ไขปัญหาการสื่อสารระหว่าง msp430fr5847 (หลัก) และเซ็นเซอร์ทาสที่มีชิป I2C ที่ไม่รู้จัก (ส่วนหนึ่งของเซ็นเซอร์อุตสาหกรรม) ฉันมีปัญหากับเซ็นเซอร์รุ่นใหม่ที่ข้อมูลของฉันถูกส่งกลับด้วยศูนย์ทั้งหมด แต่เมื่อพยายามแก้ไขปัญหาด้วย Saleae logic pro ของฉัน (2Mohm, 10pf) หรือออสซิลโลสโคปของฉัน (10Mohm, 50pf) ระบบทำงานได้อย่างสมบูรณ์แบบ เข็ม SDA การแก้ไขปัญหาเพิ่มเติมวงจรทำงานอย่างถูกต้องหากฉันเพิ่มตัวต้านทาน 1Mohm ระหว่าง SDA และกราวด์ แต่ไม่ทำงานหากเพิ่มตัวเก็บประจุ 10pf หรือ 100pf เท่านั้น ฉันใช้ตัวต้านทานแบบดึงขึ้น 4.7k กับราง 3.3v ของฉัน สิ่งที่อาจทำให้เกิดปัญหานี้และสิ่งที่สามารถทำได้เพื่อแก้ไขปัญหาโดยไม่แก้ไขปัญหาโดยไม่ได้ตั้งใจ แก้ไข: 19/07/2017 นี่คือการติดตามขอบเขตอย่างรวดเร็วของสัญญาณของฉัน สิ่งอื่นที่ฉันลืมพูดถึงคือการตรวจสอบ SDA เพียงอย่างเดียวเท่านั้นทำให้บอร์ดทำงานได้การตรวจสอบ SCL หรือสายขัดจังหวะของฉันไม่สามารถทำงานได้อย่างถูกต้อง แก้ไข: 21/07/2017 พล็อตหนาขึ้นปรากฏว่าการเชื่อมต่อออสซิลโลสโคปที่แตกต่างกันทำให้วงจรทำงานไม่ถูกต้องและจะเห็นได้ว่าความแตกต่างเพียงอย่างเดียวคือ ACK ไม่ได้ถูกส่ง …

2
MCP3424, วิธีอ่านช่องสัญญาณแบบขนาน?
เกี่ยวกับคำถามนี้ ฉันไม่มีพื้นฐานด้านวิศวกรรมอิเล็กทรอนิกส์และนี่เป็นหนึ่งในความท้าทายครั้งแรกของฉันในการสื่อสารผ่าน I2C และการเขียนลงทะเบียนดังนั้นโปรดอย่าสันนิษฐานความรู้จากด้านข้างของฉันมากเกินไป ฉันกำลังเขียนโปรแกรม Arduino เมื่อถามถึงส่วนประกอบ / ชิปอิเล็กทรอนิกส์เฉพาะฉันคิดว่าผู้คนไม่สามารถทดลอง / ทดสอบเพื่อให้คำตอบที่ถูกต้อง ฉันคาดหวังว่าผู้คนจะไม่รู้จักองค์ประกอบนี้ด้วยซ้ำ ดังนั้นฉันจะพยายามเพิ่มข้อมูลมากในคำถามนี้ โปรดแจ้งให้เราทราบหากคุณต้องการข้อมูลเพิ่มเติม ส่วนประกอบมีสี่ ADC ฉันใช้ส่วนประกอบ 4 แชนเนล MCP3424 ( แผ่นข้อมูล ) มันมาในสองแพ็คเกจ ฉันกำลังใช้ MCP3424 E / SL เวอร์ชัน SOIC 4 แชนเนลไม่ใช่เวอร์ชัน MCP3422 หรือ MCP3423 2 ฉันเชื่อว่ามันมี ADC สี่ตัว บน RS-Online ดูเหมือนว่ารุ่น E / SL มี 4 ADC ( …
9 arduino  adc  i2c 

2
วิธีจัดการกับตัวต้านทานแบบดึงขึ้นหลายตัวในโมดูล
ฉันกำลังคิดที่จะทำโมดูลสำหรับคณะกรรมการพัฒนาที่ฉันทำเมื่อไม่กี่วันที่ผ่านมาซึ่งจะรวมถึงอินเตอร์เฟส spi / i2c ปัญหาคือฉันไม่ได้รวมตัวต้านทานแบบดึงขึ้นในหมุด MCU ในกระดานหลักและคิดที่จะเพิ่มพวกเขาในโมดูลเพื่อให้พวกเขา "ทั่วไป" มากขึ้นเพื่อให้ผู้ใช้ทุกคนสามารถใช้พวกเขาโดยไม่ต้องเพิ่มตัวต้านทานพิเศษใน บอร์ดต้นแบบ แต่แล้วฉันก็ประสบปัญหาต่อไป ถ้าฉันเพิ่มตัวต้านทานแบบดึงขึ้นในโมดูลพิเศษและฉันเชื่อมต่อตัวอย่างสองโมดูลขึ้นไปในบัสเดียวกันฉันจะได้ตัวต้านทานเหล่านั้นขนานกันดังนั้นความต้านทานจะลดลงและจะไม่ทำหน้าที่ของมันให้สำเร็จ แต่ถ้าฉันเพิ่มตัวต้านทานแบบดึงขึ้นลงในกระดานหลักฉันจะมีหมุดเหล่านั้นใน MCU อยู่ตลอดเวลาที่ใช้งานต่ำ ดังนั้นคำถามหลักคือ: วิธีการเชื่อมต่อโมดูลหลายตัวกับบัสเดียวกันที่มีตัวต้านทานแบบดึงขึ้นแต่ละตัว แต่ไม่ได้ต่อขนานกันเมื่อคุณมีมากกว่าหนึ่งโมดูล เป็นไปได้ไหม หรือทางออกที่ดีที่สุดที่นี่คือเปิดใช้งานตัวต้านทานแบบดึงขึ้นใน MCU และไม่รวมไว้ในโมดูลหรือไม่ Thanks.-

5
การชนบิต I2C EEPROM: เขียนดี แต่ถ้าบิตแรกไม่ได้ถูกตั้งค่า
ขณะนี้ฉันกำลังทำงานเกี่ยวกับโครงการ I2C EEPROM โดยใช้การทุบบิตเพื่อขับ SDA และ SCL ฟังก์ชั่นการอ่านของฉันทำงานได้ดี แต่เมื่อใดก็ตามที่ฉันเขียนไบต์ใด ๆ ด้วย "1" นำหน้าฉันจะอ่าน FF ย้อนกลับเสมอ แม้ว่าไบต์จะถูกโปรแกรมด้วยอย่างอื่นมาก่อน นำ "0" สมบูรณ์แบบ มันไม่ใช่รูทีนการอ่านของฉัน อย่างที่ฉันเห็นในขอบเขตมันจะคืนค่า FF ฉันกำลังมองหาคำแนะนำเกี่ยวกับสาเหตุที่อาจเป็นเช่นนี้ มีอะไรที่ชัดเจนหรือไม่ที่ฉันอาจคิดถึงซึ่งอาจทำให้เกิดปัญหาได้ [ฉันไม่สามารถโพสต์รหัสได้ - บริษัท เป็นความลับ ... :(] ทุกรูปคลื่นที่ฉันดูตรงตามสเปคอย่างแน่นอน ฉัน decoupling EEPROM pull ups ของฉันคือ 2.2k ดังนั้นภายในสเป็ค ฉันกำลังตอกบัตรอยู่ที่ประมาณ 500 Hz ในต้นแบบนี้ ชิปกำลังส่ง ACK ไปยังแต่ละไบต์ของฉันดังนั้นจึงรับรู้ได้ แต่มันไม่ทำงาน ... ฉันใช้ Microchip …
9 i2c  eeprom 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.