Яку адресу I2C мені вибрати?


16

Тепер я знаю, щоб мати зарезервовану для себе адресу I2C, ви повинні заплатити людям I2C деякі гроші. Але я не хочу цього робити.

Я прошу поради щодо того, яку адресу я повинен обрати для свого раба і майстра MCU для мого проекту. На дошці також буде EEPROM. Тому я уникатиму використовувати адресу EEPROM. Планую майстер підключити до широкого спектру датчиків, включаючи гіроскопи та акселерометри, а можливо, і додаткові пристрої пам'яті. Чи є блоки адрес, від яких я повинен залишатися подалі? Я думав просто використовувати 0x00 для господаря і 0x01 для раба, тому що вони, здається, використовуються рідко.

Інше питання: чи було б поганою ідеєю змішувати 10-бітні пристрої та 7-бітні пристрої на одній шині? Я розглядав можливість того, щоб мої MCU спілкувалися з 10-бітовою адресацією, але тільки використовуючи 7-бітові адреси для датчиків.


1
@ W5VO. Так, поруч із карткою SD люди бажають лише 3000 доларів.
Thomas O

1
@ThomasO, вам не потрібно платити їм, щоб отримати зарезервовану адресу, як ідентифікатор, вам не потрібно платити за це, щоб зробити пристрій, вони продають послугу. SDcard вони застосовують свою інтелектуальну власність, вони можуть сказати вам це зробити або вибрати іншу технологію.
Кортук

1
@ThomasO, я зазначав, що в цьому випадку ви щось платите. Також дві тисячі - це не багато в реальному продукті.
Кортук

1
@Thomas O 3000 доларів насправді дуже розумно для продуктів. Це крапля відра для будь-якої компанії, що виробляє продукцію.
Kellenjb

2
@reemrevnivek, але власник патенту вирішив, що вони швидше вимагатимуть цього та змусять відкрите обладнання не мати можливості дозволити користування та вимагати сплати цього гонорару. як власник патенту вони мають таке право. Я до тих пір, поки не зміниться закон, збираюся переконатися, що це зрозуміло. Я хотів би реконструювати патент та авторські права, але поки вони не стануть, це захист та винагорода інженерів, які мають хороші ідеї.
Кортук

Відповіді:


13

По-перше, не використовуйте 0x00 та 0x01, вони зарезервовані! У таблиці 3 специфікації шини I2C перераховані зарезервовані адреси (та причини, чому це відбувається):

Раб-добавник 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 Ідентифікатор пристрою
 1111 0XX X 10-бітова адресованість підлеглого

Ви також повинні триматися подалі від 0x00, оскільки це не має крайових переходів, і це може бути умовою помилки (і це важко налагодити).

Крім цього, я б сказав "Просто зробіть його конфігурацією". Якщо ви хочете мати можливість підключити найрізноманітніші датчики, ви можете або заплатити NXP за адресу, або надати їй регульовані адреси. Модифікації програмного забезпечення повинні бути очевидними, якщо ви хочете поширити вихідний код. Апаратний варіант для перемикання одного або двох бітів обраної вами адреси (перемички припою на цифрових штифтах) є дешевим і простим, або ж драбинна мережа резисторів із перемичками, підключеними до штифта A / D, може дати вам повний контроль над обладнанням.


1
+1 для налаштування адреси. Я бачив це на рабах, які будуть мати одне й те саме в одному автобусі.
Kellenjb

Так, я думав про настроювані адреси. Його можна оновити, змінивши налаштування в системі меню. Важливим є те, що потрібно додати засоби захисту, щоб хтось не міняв адресу, а головний MCU втрачав зв'язок з веденим, тому потрібно встановити якийсь протокол, який скидає адреси (наприклад, через 5 секунд немає зв’язку, тому скидання адреси .)
Томас О

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, використовуваних до цього часу?

Відповідь: Ні. NXP Semiconductors не видають цей список усіх раніше присвоєних ведених адрес, оскільки це єдиний спосіб, який ми можемо гарантувати, що список залишається актуальним, і кожна призначена адреса є унікальною. Якщо цей список буде доступний, ліцензіати I²C-шини почнуть самі вибирати ведені адреси, і центральний список незабаром стане неповним, що може призвести до вирішення конфліктів. Встановлений принцип, який добре зарекомендував себе, полягає в тому, що кожен ліцензіат відправляє запит адреси підлеглого на один контакт в межах NXP Semiconductors, який потім розподіляє адресу підлеглого на основі єдиного головного списку.

Від http://www.nxp.com/products/interface_control/i2c/faq/

Тепер, якщо все буде внутрішнім у вашому проекті, немає ніяких причин ви не можете просто вибрати будь-яку потрібну вам адресу, доки вона не суперечить тому, що ви плануєте підключити.


Незвичайні міркування: не маючи цього списку, вони гарантують актуалізацію списку ...: - /
Федеріко Руссо

Прості міркування: вони хочуть гарантувати, що кожен, хто виділяє посвідчення особи, матиме справді оновлений список; наявність застарілих копій списку, що плаває, підірве цю мету.
supercat

1
@Federico У них є список, вони просто не публікують його, щоб люди змушені переглядати їх, щоб переконатися, що список актуальний. Якщо список був опублікований, було б багато людей, які вибирають невикористану адресу, то що відбувається, коли хтось належним чином зарезервує цю адресу?
Kellenjb

FWIW: SELGUIDE.PDF знаходиться в Internet Archive посиланням
HiTechHiTouch

1

Як говорить Kellenjb, ви не отримаєте повного списку невільничих адрес пристроїв.

Однак є кілька зарезервованих адрес, які ви не можете використовувати (наприклад, 0x00 - це загальна адреса виклику).

Список тут

Змішування 10 та 7 бітової адреси добре, доки 7-бітові раби підкоряються стандарту I2C та ігнорують 10-бітові адреси.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.