ระดับ I2C ขยับ


11

ขณะนี้ฉันกำลังออกแบบวงจรที่สามารถบันทึกข้อมูลจากเซ็นเซอร์และบันทึกข้อมูลที่บันทึกไว้ใน EEPROM อุปกรณ์ทั้งสองของฉัน (EEPROM และเพื่อการทดสอบ RTC) เชื่อมต่อผ่านบัส I2C กับ PIC16F887 µC อย่างไรก็ตามช่วงการทำงานของแรงดันไฟฟ้าของอุปกรณ์ทั้งสองนั้นไม่เหมือนกัน (5v สำหรับ EEPROM, 3.3 สำหรับ RTC) และแบตเตอรี่ของฉันคือแบตเตอรี่ 9V

ดังนั้นฉันจึงออกแบบวงจรอิเล็กทรอนิกส์ที่มีตัวเปลี่ยนระดับซึ่งประกอบด้วย MOSFET สำหรับการเดินสาย SDA / SDL ยิ่งไปกว่านั้นฉันได้เพิ่มตัวควบคุมแรงดัน LM317 สองตัวเพื่อให้พลังงานแก่อุปกรณ์ (9V-> 3.3V และ 9V-> 5V) เนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญในการออกแบบสิ่งต่าง ๆ ฉันจะขอบคุณถ้าคุณสามารถดูสิ่งที่ฉันทำและบอกฉันว่าฉันทำอะไรผิดอย่างน่ากลัว!

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


สำหรับการอ้างอิง: electronics.stackexchange.com/q/708/4950
PetPaulsen

คำตอบ:


3

แม้จะมีความคิดเห็นอื่น ๆ โซลูชันเองก็ใช้ได้ ฉันเห็นปัญหาเล็กน้อยบางอย่าง

  1. ตัวต้านทานแบบดึงขึ้นบน 10k บนบัสนั้นไม่แข็งพอโดยเฉพาะถ้าคุณต้องการใช้ความเร็วบัสที่สูงขึ้น

  2. คุณต้องมีตัวเก็บประจุแยกส่วนอินพุทและเอาท์พุทบนตัวควบคุมเชิงเส้นและไอซีดิจิตอลของคุณ 100nF เป็นการเริ่มต้นที่ดีสำหรับวงจรรวมดิจิตอลและสำหรับตัวควบคุมเชิงเส้นนั้น 100nF สำหรับอินพุตและ1μFสำหรับเอาต์พุต


ขอบคุณสำหรับเคล็ดลับตัวเก็บประจุตัวแยกสัญญาณที่จริงแล้วมันจะปรากฏในแผนผังเชิงเส้นควบคุมส่วนใหญ่ แต่ฉันข้ามส่วนนี้อย่างสมบูรณ์! สำหรับตัวเก็บประจุตัวแยกสัญญาณสำหรับไอซีดิจิตอลคุณหมายถึงตัวเก็บประจุตัวหนึ่งระหว่างแรงดันอินพุตและกราวด์นั่นคือทั้งหมดใช่ไหม (เพื่อให้แน่ใจว่าฉันเข้าใจสิ่งที่คุณหมายถึง!) สิ่งสุดท้ายคุณพูดได้ว่าตัวต้านทานแบบดึงขึ้น 10k นั้นอยู่ไกลจากความแข็งพอ แต่ในแผ่นข้อมูลที่พวกเขาแนะนำและค่าเหล่านี้สำหรับความเร็วบัส 400kHz มีปัญหากับตัวเปลี่ยนระดับหรือไม่? อย่างไรก็ตามคำแนะนำนั้นดีมาก!
Al_th

1
ถูกต้อง - เก็บตัวเก็บประจุแยกตัวไว้ให้ใกล้ที่สุดกับกำลังไฟและหมุดกลับ หากมีความจุที่สำคัญในสาย I2C คุณจะต้องลดระดับการดึงเพื่อให้ขอบคม ฉันมักจะเริ่มต้นด้วย 1.8k และประเมินจากที่นั่น
Adam Lawrence

โอเคขอบคุณสำหรับทุกอย่างฉันหวังว่ามันจะช่วยให้ผู้คนเล่นกับอุปกรณ์ I2C ที่แตกต่างกัน!
Al_th

-4

ใช่คุณทำสิ่งต่าง ๆ ในแผนผังของคุณผิดอย่างน่ากลัว หากต้องการปรับระดับแรงดันไฟฟ้าของคุณอย่างถูกต้องโปรดดูที่ที่อยู่ สลาฟของI2C ที่ไม่ได้รับการยอมรับ (บางครั้ง) IC MAX3373E ใช้สำหรับเลื่อนระดับ โปรดทราบว่าตัวต้านทานแบบดึงขึ้นจะแสดงในบรรทัด SDA & SCK อย่างไรก็ตามเมื่อใช้ MAX3373E ไม่จำเป็นต้องใช้ตัวต้านทานแบบดึงขึ้นเนื่องจาก MAX3373E ได้สร้างแบบดึงขึ้นทั้งสองด้านของบรรทัด I / O นอกจากนี้ยังมี IC อื่น ๆ สำหรับเลื่อนระดับเช่นกัน คุณสามารถไปที่ Digi Key หรือ Mouser และค้นหา


5
วิธีการของ OP นั้นใช้ได้! NXP ยังมีบันทึกย่อของแอพในหัวข้อ อย่าด่วนที่จะตัดสิน
Adam Lawrence

ฉันเห็นว่าฉันไปผิดที่ สัญลักษณ์สำหรับ FET แสดงไม่ถูกต้องไดโอดหายไป
Suirnder

1
@Suirnder มีความเสี่ยงที่จะเกิดขึ้นกับการมีความรู้ที่ จำกัด มากเกินไป ฉันเชื่อว่าไม่ใช่โพสต์แรกเช่นนี้
Anindo Ghosh

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