Чи є якісь остаточні вказівки щодо вивільнення I2C? Не шукає "СТАНДАРТ"


16

EDIT: Це повторювалося декілька разів, тому ставимо це зверху: Так, добре відомо, що не існує "стандарту" для міжроздільних пристроїв I2C, але, безумовно, ця спільнота може сформувати список "керівних" пунктів для створення такі взаємозв'язки, засновані на поведінці сигналу, мінімізації шуму та зменшення ризику через неправильні з'єднання.


Як я розумію, NXP визначив стандарт I2C, не визначаючи роз'єму для роз'ємів I2C. Єдиним керівництвом від NXP, здається, є згадка про розміщення Ground та / або Vss між SDA та SCL, якщо Vss / Gnd переноситься через з'єднання.

Купівля різних модулів I2C залишила у мене безліч роз'ємів I2C, і трохи завдання відстежувати різні маленькі перемикання стрічок-кабелів, які я повинен був зробити для них.

напр

  • Моно-OLED модуль: SCL, SDA, GND, 5 В (очевидно, не ідеально, оскільки годинник та дані знаходяться поруч.
  • Щит датчика для Arduino: SDA, SCL, GND, 5V (знову не ідеально, плюс переключений SCL / SDA)
  • Кольоровий РК-модуль: SCL, GND, 5V, SDA (Так!)
  • Повторювач без назви I2C: SCL, 5V, GND, SDA (ой, вони переключили шнури живлення! Майже випустили чарівний дим.)

Отже, моє запитання таке :
Чи є остаточне / авторитетне керівництво щодо послідовності розтину 4-контактних роз'ємів I2C для використання, де і Vss, і GND повинні переноситися від хоста до пристрою?

Якщо цього не відбувається, чи є який-небудь каталог, який би не був повним, модулів / пристроїв I2C, що перелічують кожну з виправлених файлів?

Уточнення: Шукайте вказівок, таких як "поставити Vss ближче до SCL, тому що ...", а не визначеного стандарту, який явно не існує.


3
Звідси питання.
Anindo Ghosh

1
З вашого власного запитання зрозуміло, що немає стандарту ... а якщо і був, то, очевидно, люди не дотримуються цього. Ви застрягли, роблячи лайки. : P
Тобі Лоуренс

1
@AnindoGhosh хе. Якби це я, я, певно, відкинув би попередньо куплені модулі та прокатав власні плати розбиття зі стандартизованою шпилькою, використовуючи поляризований заголовок. Можливо, щось на зразок 6 штифтів, із GND поруч із SDA, SCL та 5V ..., а потім за допомогою кабелю з трьома скрученими парами, щоб тримати землю біля кожного сигналу, щоб зменшити шум та відхилити перешкоди.
Тобі Лоуренс

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

1
@ExcitingProjects Ні, вони праві щодо того, що вони кажуть, I2C не призначений для цього, і, очевидно, стикається з декількома проблемами у взаємодії між пристроями. Це просто випадковість, коли дизайнери модулів вирішили поїхати з I2C. Я також був би "ображений", якби мав вибір.
Анніндо Гош

Відповіді:


16

Нещодавно я прокатав свій власний, наскільки йде роз'єм I2C. Сам роз'єм не дуже важливий, зараз я просто використовую заголовок кроком 100 мільйонів (зазвичай це жінка на борту, так що це не так покір, коли він не підключений), але будь-який роз'єм 4plus штифтів зробить. Крім того, я використовую P82B715від TI як розширювач шини I2C. Це долає проблеми ємності, пов’язані із запуском довгих скидів I2C, які, як кажуть люди, спочатку не призначені для I2C. Я спробував багато різних комбінацій, як, наприклад, у наведених вами прикладах, і я помітив, що різниці в роботі не спостерігаються. Я вважаю, що це тому, що I2C є відносно повільним, втручання між SDA та SCL не є великою проблемою. В основному час підйому напруг (коли будуть виникати перешкоди) на шині набагато менше, ніж бітова довжина. Отже, це може бути не тим, що ви хочете почути, але це дає більше варіантів. Особисто я пішов з [VCC, SDA, GND, SCL], щоб його легко переправити до / з цієї мікросхеми, а також захистити від змішування VCC / GND, коли підключено назад.


2
+1 + Прийняти. Дякую, мабуть, найбільш реально реалізовану відповідь на даний момент, "існує міжпристрій I2C, ось як я його використовую і чому". Уникнення змішування VCC / GND є корисним. Хороший момент щодо того, щоб уникнути заголовків шпильок для покей на борту, я випадково зірвав пару шпильок з деяких сенсорних модулів.
Anindo Ghosh

Це лише відповідь, яка справді корисна, і якщо у мене достатньо репутації, я б дав бонус @Samuel за це, і мені подобається це питання, тому що у мене є безліч модулів I2C і я буду будувати модулі I2C через день після цього керівництва.
ExcitingProjects

11

Коли вона була вперше встановлена, шина I2C (Inter-Integrated Circuit) призначена тільки для підключення мікросхем на одній збірці друкованої плати. Його ніколи не передбачалося використовувати на кабелях для з'єднання декількох плат разом, а отже, ніяких роз'ємів для цієї мети не було визначено.

Єдиний "стандартний" зовнішній інтерфейс на базі I2C, про який я знаю, - це недовговічний ACCESS.bus для підключення пристроїв користувальницького інтерфейсу до комп'ютерів та канал даних VESA Display Data, який використовується для отримання інформації монітора через роз'єми VGA, DVI та HDMI.


Я розумію, що початкове призначення було іншим, але оскільки I2C зараз використовується для безлічі модулів, підключених до кабелю, я сподіваюся, що хтось створив базу даних для спільної роботи для документування вивірок, використовуваних різними продуктами, особливо для багатьох продуктів, що обслуговують ринки Arduino та інших мікроконтролерів.
Anindo Ghosh

4

Ні стандартного роз'єму, ні стандартного з'єднувача. Стандарт I2C не реально піддається цьому. Він задається на рівні шини, а не на рівні пристрою. Наприклад, коли ви хочете підключити пристрій I2C, чи знаєте ви за стандартом, чи є перемикачі на хості чи на пристрої ?? Ні. Багато інших речей, яких ви теж не знаєте, як, наприклад, де є ваші кабельні ємності, яким повинен бути Vcc ....

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

Підсумок, якщо ви шукаєте портативність та стабільність у ваших взаємозв'язках, I2C та SPI - це не те, де потрібно шукати.


3
Що робити, якщо хтось шукає настанову для створення власного пристрою, який би працював із (і подобається) всіма цими іншими модулями для 'duino'? Там є ринок, не бачите сенсу ігнорувати його. До речі, підключення потрібні на хості та необов'язково на пристрої, відповідно до специфікації.
Anindo Ghosh

5
"Приємна" річ у стандартах полягає в тому, що їх так багато на вибір! Ви вибираєте стандарт із чітко визначеним роз'ємом, як-от MIDI, USB, RS232 (окрім цих дурних речей з нульовим модемом) та вбудовуєте перекладача у свій власний пристрій. Іншим варіантом є формування робочої групи зі стандартів через стандарти org, наприклад IEEE. "Необов'язкові" підтяжки на пристрої впливають на поведінку всієї шини, точно роблячи мою думку. MIDI оптично ізолює кожен пристрій стандартно, тому сумісні пристрої не викликають цих проблем
Скотт Сейдман,

1
+1 за смішний, але дуже правдивий пункт про стандарти! :-)
Anindo Ghosh

4

Багато людей використовують якийсь роз'єм для передачі I²C сигналів та живлення між двома друкованими платами. Наприклад,

Деякі загальні поради щодо перенесення сигналів I²C на більші відстані:

ps: Я бачу, що взаємозв’язок Wikipedia: I²C Circuit пов'язане з цим питанням.


3

Хоча не існує стандартного роз’єму I²C або роз'єму, є досить багато місць, де використовується ²C, які є стандартизованими. Можливо, такі модулі пам'яті (DIMM, SO-DIMM), відеороз'єми ( DDC у DVI , VGA ) та SM-Bus (так, їх веб-сторінка схожа на те, що дитина зробила в середині 90-х). Зокрема, роз'єм SM-шини має ключ і містить лише I²C та потужність, але SM-Bus встановлює додаткові обмеження, тому технічно не кожен пристрій I²C повинен бути підключений до фактичної SM-шини. Ще декілька фірмових вилок є, наприклад, датчики Lego NXT.


Це з огляду на те, що не існує стандарту ... Те, на що я сподіваюся, - це канонічна колекція керівних принципів, які потім можуть дотримуватися дизайнери пристроїв. Наприклад, у SMBus зовнішня лінія має лінію + 5 В, тоді як NXP рекомендує обидва + V і GND знаходитись між слідами сигналу. Який шлях краще, і чому?
Аніндо Гош

2

Немає стандарту.

Немає загальної практики.

Щодо питання щодо вирішення питання, що робити:

  1. Тримайте сигнали на одній дошці так, як вони мали бути в першу чергу. Лінії IIC мають досить високий імпеданс, є односхилим, і тому чутливі до шуму і не будуть добре закінчувати лінії електропередачі. IIC просто не призначений для виходу з борту.

  2. Якщо ви все-таки збираєтеся виїхати з борту, тримайте автобус недовго. Мабуть, кілька дюймів. Метр і більше справді просить неприємностей.

  3. Тримайте від бортових ліній подалі від джерел шуму. Наприклад, не обмотуйте їх навколо двигуна і навіть не намагайтеся підійти до нього.

  4. Використовуйте роз'єм, який не можна підключити назад. Якщо хтось може підключити її назад, хтось зробить.

  5. Стрічковий кабель, мабуть, найпростіший у використанні. Вам потрібно три дроти мінімум, SCL, SDA та земля. Додавання сили - це, мабуть, хороша ідея. У будь-якому випадку переконайтеся, що заземлюючий провід знаходиться між SCL та SDA, щоб уникнути перехресних переговорів. Провід живлення не повинен бути галасливим, тому наклейте його на одну сторону, не важливо, яка.

  6. Після возитися з роз'ємами та переслідувати потенційні проблеми, зрозумійте, що точка 1 насправді була єдиною, яку вам потрібно було знати.


Тож ми повинні поставити голову в пісок для всіх сотень речей I2C, які люди виготовляли та продавали для початківців ардуїно та інших мікроконтролерів?
ExcitingProjects

1

Як зазвичай для будь-якого допиту, запитуючи про те, чому щось [nt] стандартизовано:
На щастя, зарядка була вирішена тепер, коли ми всі стандартизовані на mini-USB.  [Або це мікро-USB?  Лайно.
Від XKCD


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

1
@AnindoGhosh - я не бачу, як це має значення. Якщо ви заміните стандарт на керівний текст у вищезгаданому коміксі, це однаково справедливо. Будь-яка ситуація, коли існує кілька способів зробити щось, в цілому призводить до того, що багато людей роблять цю річ багато способів. Навіть якщо це не формальний «стандарт».
Вонор Коннор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.