ฉันควรเลือกที่อยู่ I2C ใด


16

ตอนนี้ฉันรู้แล้วว่าจะต้องมีที่อยู่ I2C สำรองไว้สำหรับตัวคุณเองคุณต้องจ่ายเงินให้กับคนของ I2C แต่ฉันไม่ต้องการทำสิ่งนี้

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

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


1
@ W5VO ใช่ถัดจากคนการ์ด SD ต้องการเพียง $ 3,000 เท่านั้น
โทมัสโอ

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

1
@ThomasO ฉันกำลังชี้ให้เห็นว่ามีบางสิ่งที่คุณจ่ายในกรณีนี้ นอกจากนี้สองพันไม่มากในผลิตภัณฑ์จริง
Kortuk

1
@Thomas O $ 3,000 จริง ๆ แล้วสมเหตุสมผลมากสำหรับผลิตภัณฑ์ นี่คือการลดลงของถังสำหรับ บริษัท ที่ทำผลิตภัณฑ์
Kellenjb

2
@reemrevnivek แต่ผู้ถือสิทธิบัตรเลือกว่าพวกเขาต้องการที่จะใช้และทำให้ฮาร์ดแวร์แบบเปิดไม่สามารถใช้งานได้และต้องจ่ายค่าธรรมเนียมนี้ ในฐานะผู้ถือสิทธิบัตรพวกเขามีสิทธิ์นั้น ฉันจนกว่าจะมีการเปลี่ยนแปลงกฎหมายเพื่อให้แน่ใจว่าสิ่งนี้ชัดเจน ฉันต้องการยกเครื่องสิทธิบัตรและลิขสิทธิ์ แต่จนกว่าพวกเขาจะเป็นเช่นนี้นี่คือวิธีที่วิศวกรที่มีความคิดที่ดีได้รับการคุ้มครองและให้รางวัล
Kortuk

คำตอบ:


13

ก่อนอื่นอย่าใช้ 0x00 และ 0x01 สิ่งเหล่านั้นสงวนไว้! ตารางที่ 3 ของข้อมูลจำเพาะของบัส I2Cแสดงที่อยู่ที่สงวนไว้ (และสาเหตุที่ทำให้):

Slave addr คำอธิบาย R / W
 0000 000 0 ที่อยู่สำหรับการโทรทั่วไป
 0000 000 1 ไบต์เริ่มต้น
 0000 001 ที่อยู่ X CBUS
 0000 010 X สงวนไว้สำหรับรูปแบบบัสที่แตกต่างกัน
 0000 011 X สงวนไว้สำหรับใช้ในอนาคต
 0000 รหัสต้นแบบ 1XX X Hs- โหมด
 1111 1XX 1 ID อุปกรณ์
 1111 0XX X 10-bit address address

คุณควรหลีกเลี่ยงการใช้ 0x00 เนื่องจากไม่มีการเปลี่ยนขอบและอาจเป็นเงื่อนไขข้อผิดพลาด (และเป็นการยากที่จะดีบัก)

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


1
+1 สำหรับที่อยู่ที่กำหนดค่าได้ ฉันเคยเห็นสิ่งนี้บนทาสที่จะมีหลายอย่างในรถบัสเดียวกัน
Kellenjb

ใช่ฉันกำลังคิดถึงที่อยู่ที่กำหนดค่าได้ สามารถอัปเดตได้โดยเปลี่ยนการตั้งค่าจากระบบเมนู สิ่งสำคัญคือต้องเพิ่มการป้องกันเพื่อป้องกันไม่ให้ผู้อื่นเปลี่ยนที่อยู่และ MCU หลักที่สูญเสียการติดต่อสื่อสารกับ Slave ดังนั้นจึงจำเป็นต้องสร้างโปรโตคอลบางประเภทซึ่งรีเซ็ตที่อยู่ (เช่นหลังจาก 5 วินาทีไม่มีการสื่อสารดังนั้นจึงรีเซ็ตที่อยู่ .)
โทมัส O

16

เลือกอุปกรณ์ที่คุณจะไม่ใช้ในเชิงบวกในการออกแบบของคุณและใช้เป็นที่อยู่ I2C ตัวอย่างเช่นหากคุณไม่ต้องการ RTC คุณสามารถใช้ 0xA2 และ 0xA3 ซึ่งใช้โดย NXP PCF8563 (และอาจเป็น RTC อื่น ๆ )


ฉันชอบสิ่งนี้ฉลาดมาก
NickHalden

แต่น่าเสียดายที่อุปกรณ์บางส่วนยังคงยังคงปะทะกันสำหรับอินสแตนซ์ST STCN75และTI DAC8571หรือMicrochip 24AA025E48และTI ADC121C027
Xcodo

10

นี่คือรายการของที่อยู่ที่จัดสรร ณ ปี 1999: http://www.nxp.com/acrobat_download2/selectionguides/SELGUIDE.PDF

พวกเขาจะไม่ปล่อยรายการแบบเต็มด้วยเหตุผลนี้:

ถาม: เป็นไปได้ไหมที่จะรับรายการที่อยู่I²C-slave ทั้งหมดที่ใช้จนถึงปัจจุบัน

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

จากhttp://www.nxp.com/products/interface_control/i2c/faq/

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


เหตุผลที่แปลก: โดยไม่มีรายการพวกเขาให้แน่ใจว่าจะทำให้รายการทันสมัย ​​... : - /
Federico Russo

เหตุผลง่ายๆ: พวกเขาต้องการให้แน่ใจว่าทุกคนที่จัดสรร ID จะมีรายการที่เป็นปัจจุบันอย่างแท้จริง การมีสำเนาที่ล้าสมัยของรายการที่ลอยอยู่รอบ ๆ นั้นจะส่งผลเสียต่อเป้าหมายนั้น
supercat

1
@Federico พวกเขามีรายการ แต่พวกเขาไม่ได้เผยแพร่เพื่อให้ผู้คนถูกบังคับให้ผ่านพวกเขาเพื่อให้แน่ใจว่ารายการนั้นทันสมัย หากมีการเผยแพร่รายการผู้คนจำนวนมากที่เลือกที่อยู่ที่ไม่ได้ใช้จะเกิดอะไรขึ้นเมื่อมีคนจองที่อยู่นั้นอย่างถูกต้อง
Kellenjb

FWIW: SELGUIDE.PDF อยู่ในลิงค์
HiTechHiTouch

1

ในฐานะที่เป็น Kellenjb บอกว่าคุณจะไม่ได้รับรายชื่อที่อยู่อุปกรณ์ทาสทั้งหมด

อย่างไรก็ตามมีที่อยู่ที่สงวนไว้หลายแห่งซึ่งคุณไม่สามารถใช้งานได้ (ตัวอย่างเช่น 0x00 คือที่อยู่สำหรับการโทรทั่วไป)

รายการอยู่ที่นี่

การรวมที่อยู่ 10 และ 7 บิตนั้นใช้ได้ตราบใดที่ทาส 7 บิตปฏิบัติตามมาตรฐาน I2C และละเว้นที่อยู่ 10 บิต

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