Чи можлива змішана частота I2C?


12

Припустимо, у нас є шина I 2 C 400 кГц . Є один майстер і купа рабовласницьких пристроїв. Ми хотіли б представити ще один підлеглий пристрій, але, на жаль, він працює лише до 100 кГц.

Зрозуміло, що суцільний вибір дизайну такий:

  • просто запустіть цю шину на 100 кГц
  • використовувати окремі шини для периферії 400 кГц і 100 кГц

Але питання полягає лише в злому: що робити, якщо ми використовуємо одну шину і звертаємось до пристроїв 400 кГц на 400 кГц і перемикаємо шину на 100 кГц, коли говоримо на ведомому 100 кГц?

Або міг повільний рабовласниць керувати нею у відповідь на хеш 400 кГц, який він бачить на лініях I 2 C, тому що помилково вважає, що до нього звертаються?

Чи можемо ми залежати від пристроїв, що працюють на 100 кГц, щоб все-таки достатньо добре обробити сигнал І 2 С 400 кГц, щоб надійно ігнорувати повідомлення, адресовані іншим рабам?


4
Щодо вашого останнього речення, я не думаю, що ви могли залежати від того, щоб пристрої 100 кГц могли обробляти сигнали 400 кГц.
gbmhunter

І все-таки, саме від цього ми залежимо, чи реалізуємо такий злом, тож це в основному не виникає сумніву.
Каз

Відповіді:


7

Як ви пропонуєте, робити це не є хорошою інженерною практикою. Хоча деякі пристрої найбільше ігнорують трафік, який вони не в змозі отримувати (нижня вибірка), інші пристрої можуть захаращувати шину помилковими кадрами.

Таким чином, відповідь, яку ви шукаєте, залежить від вашої специфіки вашої заявки, наприклад:

  • довжина ваших підключень I2C
  • значення підтягуючих резисторів
  • сумісність пристрою

Звичайно, важко передбачити, що станеться з пристроєм, який експлуатується поза його специфікаціями за кілька років вниз.

Інший варіант - запустити лінію відключення для повільних пристроїв або пропустити лінію годинника (за умови, що вони не можуть генерувати тактовий сигнал) через ворота AND.


10

Інший варіант, якщо у вас немає додаткової шини I2C, що виходить з вашого майстра, - використовувати перемикач I2C, наприклад PCA9543A / 43B . Покладіть раби на 400 кГц на одну гілку і раби на 100 кГц на іншу і перемкніть її за необхідності.


Якщо ви подивитеся на те, що сказав Philips (виробник), то це саме так. Вони не сумісні, і рекомендованим засобом є перемикач шини. (Це у примітці до програми).
gbarry

6

Немає гарантії, що пристрій 100 кГц не буде поводитися неналежним чином, коли піддається впливу трафіку 400 кГц - все можливе, починаючи від NACK до висячих шин.

Вам слід або запустити всю шину зі швидкістю 100 кГц, або мати окрему низькошвидкісну шину для повільної периферії.


3

Інші варіанти. Замість того, щоб мати два автобуси, ви можете просто скористатися однією додатковою лінією (простіше за допомогою програмного забезпечення / біт-I- B 2 ). Окремий рядок годинника або окремий рядок даних. Або використовуйте я 2 Ĉ буфер або я 2 перемикача C , щоб покласти , що один чіп 100MHz на свій власний сегмент, без зміни все інше.

Або просто перевірити його на одному автобусі. Цілком можливо, що чіп 100 кГц вплине на лінію. Він міг прочитати кожен 4-й біт і, нарешті, подумати, що це вирішено. Але потрібно було б побачити дійсну умову запуску, а потім прочитати кожен 4-й біт із наступних 32 біт, оскільки це точна адреса, тоді доведеться або спробувати прочитати наступні пару байтів як дійсну інформацію, щоб записати в його регістри або спробуйте вимкнути дані. Я не думаю, що це занадто ймовірна ситуація. Найкраще зробити простий провід на тестовій схемі і перевірити це.

Зазначимо дві речі, якщо це однократний ланцюг або ви робите лише кілька, досить просто ризикувати, або змінити. Якщо це товар масового виробництва, ви можете просто захотіти мати другу шину. З іншого боку, ви повинні врахувати, що чіп 100 кГц був просто створений за оригінальною специфікацією I 2 C і може дуже добре підтримувати високі тактові швидкості. Він просто не був протестований на більш високій швидкості 400 кГц.


2

Конструкція шини I2C така, що -

  1. коли на SCL виникає падаюча кромка, це може спричинити невідомий пристрій негайно стверджувати ПДД без особливої ​​мінімальної затримки;
  2. відносне впорядкування піднімаючих і спадаючих країв має вирішальне значення.

Через різницю в силі водія та ємності лінії теоретично було б можливо, що один пристрій може реагувати на дещо повільне падіння краю на SCL, керуючи SDA так швидко, що інший пристрій побачить, що ПДР впаде першим.

Можливо, можна було б визначити кілька логічних порогових значень на SCL і вказати, що для падаючої межі на SCL, яка вважається такою, що настає після краю на SDA, вона все одно повинна бути вище 2/3 VDD, коли виявлено край в SDA, але пристрій може не стверджувати SDA у відповідь на падаючу грань на SCL, поки вона не впаде нижче 1/3 VDD, але специфікація не записана такими термінами.

Натомість пристрої, які бачать майже одночасні падаючі кромки на SDA та SCL, як правило, вважають край SCL таким, що відбувся спочатку, якщо йому суттєво не передує край на SDA. Деякі реалізації I2C справляються з цим, синхронізуючи SCL і SDA з деякими зовнішніми годинниками, і вимагають, щоб падіння ПДР спостерігалося за два періоди до початку SCL, щоб вважати їх першими. Якщо швидкість операцій на SCL і SDA занадто висока відносно синхронізуючого тактового пристрою, пристрої можуть сприймати довільні послідовності сигналів високого і низького рівня на SCL і SDA; якщо одна з цих послідовностей виглядає так, що вона звертається до повільного пристрою, вона може реагувати відповідним чином, пригнічуючи будь-які інші комунікації, які можуть тривати.

Немає конкретних причин, що пристрої на шині I2C повинні були покладатися на синхронізацію із системним годинником (краще розуміти два дискретні пороги на SCL), але факт полягає в тому, що деякі пристрої насправді працюють саме так. Зауважте, що навіть якщо пристрій, обмежене внутрішніми швидкісними швидкостями, хотів співіснувати з швидкою шиною, ймовірно, доведеться як мінімум використовувати годинник, розтягуючи будь-який час, коли щось відбувається, що його може зацікавити.

Це може призвести до того, що деякі комунікації відбуватимуться повільніше, ніж могли б інакше, але погіршення швидкості, ймовірно, не буде настільки поганим, як потрібно для синхронізованого дизайну годин (фактична кількість, на яку повільний пристрій розтягує годинник, швидше за все, не буде бути настільки поганим, як кількість, на яку потрібно сповільнити годинник, щоб уникнути найгірших сценаріїв збоїв у синхронізованих блоках тактових годин).

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