Π’ ΠΌΠΈΡ€Π΅ встраиваСмых систСм ΠΈ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ элСктроники слоТно Π½Π°ΠΉΡ‚ΠΈ Π±ΠΎΠ»Π΅Π΅ распространСнный стандарт ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Ρ‡Π΅ΠΌ I2C (Inter-Integrated Circuit). Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π΅Ρ‰Π΅ Π² 1982 Π³ΠΎΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Philips, стал "Π½Π΅Ρ€Π²Π½ΠΎΠΉ систСмой" для ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² устройств, связывая ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ с Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, EEPROM-ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ дисплСями. Вся магия этого интСрфСйса строится Π½Π° Π΄Π²ΡƒΡ… Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… физичСских линиях: SDA (Serial Data) ΠΈ SCL (Serial Clock).

ПониманиС Ρ„ΠΈΠ·ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ этих Π»ΠΈΠ½ΠΈΠΉ критичСски Π²Π°ΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для написания ΠΊΠΎΠ΄Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π½ΠΎ ΠΈ для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ трассировки ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚. Ошибки Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ "ΠΆΠ΅Π»Π΅Π·Π°", Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ отсутствиС ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… рСзисторов ΠΈΠ»ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°Ρ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΡˆΠΈΠ½Ρ‹, ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π² источник постоянных сбоСв ΠΈ зависаний систСмы. Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ происходит взаимодСйствиС ΠΏΠΎ этим ΠΊΠ°Π½Π°Π»Π°ΠΌ.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ UART, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΈΠΌΠ΅Π΅Ρ‚ свои Π»ΠΈΠ½ΠΈΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, здСсь всС устройства висят Π½Π° ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°Ρ…. Π­Ρ‚ΠΎ создаСт ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ условия для Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΆΠ° ΠΈ синхронизации. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎ устройство Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ТСстко Π½Π°Π²ΡΠ·Π°Ρ‚ΡŒ высокий логичСский ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° ΡˆΠΈΠ½Ρƒ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Ρ‘ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ ΠΊ Π·Π΅ΠΌΠ»Π΅. ИмСнно этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ опрСдСляСт всю Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ построСния схСмотСхники.

ЀизичСская ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π° Π»ΠΈΠ½ΠΈΠΉ SDA ΠΈ SCL

Линия SCL слуТит Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΌ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠΌ Ρ€ΠΈΡ‚ΠΌ для всСго ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π’Π΅Π΄ΡƒΡ‰Π΅Π΅ устройство (Master) Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ Π½Π° этой Π»ΠΈΠ½ΠΈΠΈ, Π° Π²Π΅Π΄ΠΎΠΌΡ‹Π΅ (Slave) просто ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ… состояниС. Однако, Π΄Π°ΠΆΠ΅ мастСр Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ контроля Π½Π°Π΄ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ напряТСния Π² любой ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ·-Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Open-Drain (ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ сток).

Линия SDA ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ нСпосрСдствСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ β€” Π±ΠΈΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΈΠ»ΠΈ шина свободна, ΠΎΠ±Π΅ Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² состоянии логичСской Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ состояниС обСспСчиваСтся внСшними ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½ΠΈΠΆΠ΅. Если Π±Ρ‹ Π½Π΅ ΠΎΠ½ΠΈ, ΠΌΡ‹ Π±Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ лишь постоянный ноль ΠΈΠ»ΠΈ "ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΉ" сигнал, ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠΌΠ΅Ρ…Π°ΠΌ.

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ состояния Π½Π° Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ сигнал находится Π² Π½ΠΈΠ·ΠΊΠΎΠΌ состоянии. Π’ΠΎ врСмя высокого уровня Π½Π° SCL Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ этого Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° (setup ΠΈ hold time) расцСниваСтся ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ ΠΊΠ°ΠΊ старт, стоп ΠΈΠ»ΠΈ ошибка ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ. Π­Ρ‚ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ часто ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΈ ΠΏΡ€ΠΈ написании Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ (bit-banging).

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Никогда Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π»ΠΈΠ½ΠΈΠ΅ΠΉ SDA ΠΈΠ»ΠΈ SCL ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ (Push-Pull) Π±Π΅Π· понимания послСдствий. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ "1" Π½Π° ΠΎΠ΄Π½ΠΎΠΌ устройствС ΠΈ "0" Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ стока ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΡŽ Π²Π½ΡƒΡ‚Ρ€ΠΈ микросхСмы ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌΡƒ Π²Ρ‹Π³ΠΎΡ€Π°Π½ΠΈΡŽ ΠΏΠΎΡ€Ρ‚Π°.

πŸ’‘

Для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ сигналов SDA ΠΈ SCL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осциллограф, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ логичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π° ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ выбросов напряТСния.

АрхитСктура Open-Drain ΠΈ Ρ€ΠΎΠ»ΡŒ подтяТки

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ схСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ стоком? ΠžΡ‚Π²Π΅Ρ‚ кроСтся Π² нСобходимости Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ°ΡΡ‚Π΅Ρ€Π½ΠΎΡΡ‚ΠΈ ΠΈ Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΆΠ°. Если Π±Ρ‹ устройства использовали Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ Π²Ρ‹Π΄Π°Ρ‡Ρƒ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ (Push-Pull), Ρ‚ΠΎ ситуация, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΡƒΠ·Π΅Π» Π²Ρ‹Π΄Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” ноль, ΠΏΡ€ΠΈΠ²Π΅Π»Π° Π±Ρ‹ ΠΊ ΠΏΡ€ΠΎΡ‚Π΅ΠΊΠ°Π½ΠΈΡŽ большого Ρ‚ΠΎΠΊΠ° ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ оборудования. Π’ схСмС Open-Drain транзистор Π²Ρ‹Ρ…ΠΎΠ΄Π° Π»ΠΈΠ±ΠΎ Π·Π°ΠΌΠΊΠ½ΡƒΡ‚ Π½Π° зСмлю (логичСский 0), Π»ΠΈΠ±ΠΎ Ρ€Π°Π·ΠΎΠΌΠΊΠ½ΡƒΡ‚ (высокоС сопротивлСниС).

Π§Ρ‚ΠΎΠ±Ρ‹ линия Π½Π΅ ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ Π² "висячСм" состоянии, ΠΊΠΎΠ³Π΄Π° всС транзисторы Ρ€Π°Π·ΠΎΠΌΠΊΠ½ΡƒΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ рСзисторы. Они ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ Π»ΠΈΠ½ΠΈΠΈ SDA ΠΈ SCL с источником питания (ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 3.3Π’ ΠΈΠ»ΠΈ 5Π’). Когда всС устройства ΠΌΠΎΠ»Ρ‡Π°Ρ‚, рСзисторы тянут напряТСниС Π²Π²Π΅Ρ€Ρ…, создавая Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ любоС устройство Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ноль, ΠΎΠ½ΠΎ просто ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ свой Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ транзистор, закорачивая линию Π½Π° зСмлю.

РасчСт Π½ΠΎΠΌΠΈΠ½Π°Π»Π° рСзистора β€” это баланс ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ ΠΈ энСргопотрСблСниСм. Блишком большоС сопротивлСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 10 кОм для высокоскоростных Ρ€Π΅ΠΆΠΈΠΌΠΎΠ²) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΠ»ΠΎΠ³ΠΈΠΌ Ρ„Ρ€ΠΎΠ½Ρ‚Π°ΠΌ сигнала, Ρ‡Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ частоту. Блишком ΠΌΠ°Π»ΠΎΠ΅ сопротивлСниС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1 кОм) ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Ρ‚ΠΎΠΊ потрСблСния ΠΈ создаст риск, Ρ‡Ρ‚ΠΎ слабый Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π½Π΅ смоТСт ΠΏΡ€ΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ линию Π΄ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ логичСского нуля.

  • πŸ“‰ ВысокоС сопротивлСниС: ΠœΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ рост Ρ„Ρ€ΠΎΠ½Ρ‚Π°, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ частотС, Π½ΠΈΠ·ΠΊΠΎΠ΅ энСргопотрСблСниС.
  • ⚑ НизкоС сопротивлСниС: ΠšΡ€ΡƒΡ‚ΠΎΠΉ Ρ„Ρ€ΠΎΠ½Ρ‚, высокая частота, Π½ΠΎ высокий Ρ‚ΠΎΠΊ ΠΈ риск ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π°.
  • βš–οΈ ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹Π±ΠΎΡ€: ΠžΠ±Ρ‹Ρ‡Π½ΠΎ находится Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ 1.5–4.7 кОм для стандартных скоростСй ΠΈ 200–500 Ом для Fast Mode+.
πŸ“Š Π‘ ΠΊΠ°ΠΊΠΈΠΌ Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ подтяТки Π²Ρ‹ Ρ‡Π°Ρ‰Π΅ всСго ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ?
  • 1 кОм
  • 2.2 кОм
  • 4.7 кОм
  • 10 кОм ΠΈ Π±ΠΎΠ»Π΅Π΅

ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΎΠ±ΠΌΠ΅Π½Π°: Π‘Ρ‚Π°Ρ€Ρ‚, Π‘Ρ‚ΠΎΠΏ ΠΈ Π‘ΠΈΡ‚Ρ‹

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ линиям SDA ΠΈ SCL строго Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°. ОбмСн всСгда инициируСтся мастСром, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ условиС START. Π­Ρ‚ΠΎ состояниС Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½Π° Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΎΡ‚ высокого уровня ΠΊ Π½ΠΈΠ·ΠΊΠΎΠΌΡƒ Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° линия тактирования находится Π² высоком состоянии. ПослС этого шина считаСтся занятой.

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π±Π°ΠΉΡ‚Π°ΠΌΠΈ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±ΠΈΡ‚ (MSB) ΠΈΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° (8 Π±ΠΈΡ‚) ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ сторона Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ACK (Acknowledge), прСдставляСт собой дСвятый Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ, Π²ΠΎ врСмя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎζŽ₯ζ”ΆΠ½ΠΈΠΊ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ опускаСт линию SDA Π² ноль. Если ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ оставляСт линию SDA Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ (NACK).

Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ сСанс связи условиСм STOP. Оно формируСтся мастСром ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π»ΠΈΠ½ΠΈΠΈ SDA ΠΎΡ‚ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня ΠΊ высокому ΠΏΡ€ΠΈ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ Π½Π° Π»ΠΈΠ½ΠΈΠΈ SCL. ПослС этого шина освобоТдаСтся, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ мастСра (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ Π² систСмС) ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Ρ‘ для своСй ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ.

// ПсСвдокод формирования условия START

void I2C_Start() {

SDA_HIGH(); // ΠžΡ‚ΠΏΡƒΡΠΊΠ°Π΅ΠΌ линию Π΄Π°Π½Π½Ρ‹Ρ…

SCL_HIGH(); // ΠžΡ‚ΠΏΡƒΡΠΊΠ°Π΅ΠΌ линию тактирования

delay_us(5); // Π–Π΄Π΅ΠΌ установлСния уровня

SDA_LOW(); // Π€ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ START: SDA ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΏΠΎΠΊΠ° SCL = 1

delay_us(5);

SCL_LOW(); // Π—Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ ΡˆΠΈΠ½Ρƒ

}

АдрСсация ΠΈ Ρ€Π΅ΠΆΠΈΠΌΡ‹ скорости

КаТдоС Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство Π½Π° шинС I2C ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ 7-Π±ΠΈΡ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ 10-Π±ΠΈΡ‚Π½Ρ‹ΠΉ адрСс. Π’ стандартном 7-Π±ΠΈΡ‚Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ мастСр сначала ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ 7 Π±ΠΈΡ‚ адрСса, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ слСдуСт Π±ΠΈΡ‚ направлСния чтСния/записи (R/W). Волько устройство с ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΌ адрСсом отзовСтся сигналом ACK. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄ΠΎ 127 устройств Π½Π° ΠΎΠ΄Π½Ρƒ ΠΏΠ°Ρ€Ρƒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ², хотя Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΈΡ… количСство ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π΅ΠΌΠΊΠΎΡΡ‚ΡŒΡŽ ΡˆΠΈΠ½Ρ‹.

БпСцификация I2C опрСдСляСт нСсколько Ρ€Π΅ΠΆΠΈΠΌΠΎΠ² скорости, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° трСбования ΠΊ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ рСзисторам ΠΈ качСству трассировки:

  • 🐒 Standard-mode (Sm): Π΄ΠΎ 100 ΠΊΠ±ΠΈΡ‚/с. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ совмСстимый ΠΈ устойчивый ΠΊ ΠΏΠΎΠΌΠ΅Ρ…Π°ΠΌ.
  • πŸš€ Fast-mode (Fm): Π΄ΠΎ 400 ΠΊΠ±ΠΈΡ‚/с. Π‘Π°ΠΌΡ‹ΠΉ распространСнный Ρ€Π΅ΠΆΠΈΠΌ для соврСмСнных сСнсоров ΠΈ дисплССв.
  • ⚑ Fast-mode Plus (Fm+): Π΄ΠΎ 1 ΠœΠ±ΠΈΡ‚/с. Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ расчСта рСзисторов ΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… Π»ΠΈΠ½ΠΈΠΉ.
  • πŸ”₯ High-speed mode (Hs): Π΄ΠΎ 3.4 ΠœΠ±ΠΈΡ‚/с. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Π΅ слова ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΆΠ°.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ Π½Π° высокиС скорости (Π²Ρ‹ΡˆΠ΅ 400 ΠΊΠ“Ρ†) врСмя нарастания сигнала становится критичСским ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ. Π”Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° ΠΈ большая паразитная Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ "ΡΠΌΠ°Π·Π°Ρ‚ΡŒ" ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ Π² синусоиды, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкам чтСния. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях часто приходится ΡΠ½ΠΈΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠΈΠ½Π°Π» ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… рСзисторов ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π±ΡƒΡ„Π΅Ρ€Ρ‹ ΡˆΠΈΠ½Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Clock Stretching?

Π­Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Π΅Π΄ΠΎΠΌΠΎΠΌΡƒ устройству ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ. Если Slave Π½Π΅ Π³ΠΎΡ‚ΠΎΠ² ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠ½ Π΄Π΅Ρ€ΠΆΠΈΡ‚ линию SCL Π² Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, заставляя Master ΠΆΠ΄Π°Ρ‚ΡŒ. Master Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π°ΠΊΡ‚, ΠΏΠΎΠΊΠ° SCL Π½Π΅ отпустит Π²Π΅Π΄ΠΎΠΌΡ‹ΠΉ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ диагностика

НСсмотря Π½Π° простоту ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΎΡ‚Π»Π°Π΄ΠΊΠ° I2C часто прСвращаСтся Π² Π³ΠΎΠ»ΠΎΠ²Π½ΡƒΡŽ боль. Бамая распространСнная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” отсутствиС ACK. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ устройство Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ адрСс, Π»ΠΈΠ±ΠΎ Π»ΠΈΠ½ΠΈΠΈ SDA/SCL ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Π½Ρ‹ мСстами. Π’Π°ΠΊΠΆΠ΅ частой ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ являСтся отсутствиС подтяТки ΠΈΠ»ΠΈ слишком высокоС сопротивлСниС рСзисторов.

Π”Ρ€ΡƒΠ³ΠΎΠΉ сцСнарий β€” "зависаниС" ΡˆΠΈΠ½Ρ‹. Π­Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство застрСваСт Π² состоянии оТидания ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ линию SDA Π² Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, блокируя вСсь интСрфСйс. Π’ Ρ‚Π°ΠΊΠΈΡ… случаях мастСру ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ восстановлСния ΡˆΠΈΠ½Ρ‹, Π²Ρ‹Π΄Π°Π² Π΄ΠΎ 9 Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π½Π° SCL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Slave Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

Для диагностики ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ осциллограф. ЛогичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ логичСскиС ΡƒΡ€ΠΎΠ²Π½ΠΈ, Π½ΠΎ Π½Π΅ расскаТСт ΠΎ качСствС сигнала. На осциллограммС Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΈΠ΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ с быстрыми Ρ„Ρ€ΠΎΠ½Ρ‚Π°ΠΌΠΈ. Если Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π·Π°Π²Π°Π»Π΅Π½Π½Ρ‹Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΈΠ΅ Ρ„Ρ€ΠΎΠ½Ρ‚Ρ‹ β€” это прямая Π΄ΠΎΡ€ΠΎΠ³Π° ΠΊ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅.

β˜‘οΈ Диагностика ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ I2C

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ: 0 / 5

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ характСристик интСрфСйсов

Π§Ρ‚ΠΎΠ±Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ мСсто I2C Π² экосистСмС интСрфСйсов, ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ популярными ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ SPI ΠΈ UART. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ свои прСимущСства ΠΈ нСдостатки, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ примСнСния.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ I2C (SDA/SCL) SPI UART
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π»ΠΈΠ½ΠΈΠΉ 2 (плюс GND) 3 + N (CS Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ устройство) 2 (TX/RX)
Вопология ΠœΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ°ΡΡ‚Π΅Ρ€, ΠœΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡Π΅Ρ‡Π½Π°Ρ Один мастСр, ΠœΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡Π΅Ρ‡Π½Π°Ρ (Ρ‡Π΅Ρ€Π΅Π· CS) Π’ΠΎΡ‡ΠΊΠ°-Ρ‚ΠΎΡ‡ΠΊΠ°
Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π΄ΠΎ 3.4 ΠœΠ±ΠΈΡ‚/с Π΄ΠΎ 50+ ΠœΠ±ΠΈΡ‚/с Π΄ΠΎ 2-3 ΠœΠ±ΠΈΡ‚/с
ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ (ACK) Π•ΡΡ‚ΡŒ (Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅) НСт (Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°) НСт (трСбуСтся ПО)

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, I2C Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π² экономии Π²Ρ‹Π²ΠΎΠ΄ΠΎΠ² ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° ΠΈ возмоТности ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ мноТСства устройств Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ Π²Ρ‹Π±ΠΎΡ€Π°. Однако, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов Π΄Π°Π½Π½Ρ‹Ρ…, SPI Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π·Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ Π»ΠΈΠ΄Π΅Ρ€ΠΎΠΌ. UART ΠΆΠ΅ остаСтся ΠΊΠΎΡ€ΠΎΠ»Π΅ΠΌ простой двустороннСй связи ΠΌΠ΅ΠΆΠ΄Ρƒ двумя устройствами.

πŸ’‘

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒ I2C, SPI ΠΈ UART зависит Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ скорости, Π½ΠΎ ΠΈ ΠΎΡ‚ количСства доступных ΠΏΠΈΠ½ΠΎΠ² ΠΈ Ρ‚ΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ устройств Π² вашСй систСмС.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΌΠΎΠ½Ρ‚Π°ΠΆΡƒ

ΠŸΡ€ΠΈ Ρ€Π°Π·Π²ΠΎΠ΄ΠΊΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ SDA ΠΈ SCL максимально ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΊΠ»Π°Π΄ΠΊΠΈ этих трасс ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ высокочастотным сигналам ΠΈΠ»ΠΈ линиям питания, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ пСрСкрСстныС Π½Π°Π²ΠΎΠ΄ΠΊΠΈ. Если Π΄Π»ΠΈΠ½Π° Π»ΠΈΠ½ΠΈΠΉ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 20-30 см, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎθ€ƒθ™‘ΡƒΠΉΡ‚Π΅ использованиС Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΡˆΠΈΠ½Ρ‹ ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅ сопротивлСния подтяТки.

Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ соСдинСниС Π·Π΅ΠΌΠ»ΠΈ (GND) ΠΌΠ΅ΠΆΠ΄Ρƒ всСми устройствами. Π Π°Π·Π½ΠΈΡ†Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΠΎΠ² Π·Π΅ΠΌΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ логичСскиС ΡƒΡ€ΠΎΠ²Π½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π½Π΅Π²Π΅Ρ€Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ…Π°ΠΎΡ‚ΠΈΡ‡Π½Ρ‹Π΅ ошибки связи. Π’ ΡˆΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹Ρ… условиях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ использованиС ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… I2C-ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Π»Π΅ΠΉ.

ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с Ρ€Π°Π·Π½Ρ‹ΠΌ напряТСниСм питания (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 3.3Π’ ΠΈ 5Π’) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ согласоватСли ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ. Π₯отя ΠΌΠ½ΠΎΠ³ΠΈΠ΅ соврСмСнныС ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ‚Π½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Ρ‹ (5V tolerant), ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° это Π±Π΅Π· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ производитСля β€” рискованная стратСгия.

⚠️ Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ устройств с Ρ€Π°Π·Π½Ρ‹ΠΌ напряТСниСм питания (Vcc) ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… логичСскиС ΡƒΡ€ΠΎΠ²Π½ΠΈ совмСстимы. ΠŸΠΎΠ΄Π°Ρ‡Π° 5Π’ Π½Π° Π²Ρ…ΠΎΠ΄ 3.3Π’ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Π±Π΅Π· ΡΠΎΠ³Π»Π°ΡΡƒΡŽΡ‰Π΅ΠΉ схСмы Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ ΠΈΠ· строя.

Как Π½Π°ΠΉΡ‚ΠΈ адрСс устройства Π½Π° шинС I2C, Ссли я Π½Π΅ знаю Π΅Π³ΠΎ?

БущСствуСт нСсколько способов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” Π½Π°ΠΉΡ‚ΠΈ Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚ Π½Π° микросСнсор. Π’Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сканСр ΡˆΠΈΠ½Ρ‹ I2C. Π­Ρ‚ΠΎ нСбольшая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для Arduino ΠΈΠ»ΠΈ ESP, которая ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ адрСса ΠΎΡ‚ 1 Π΄ΠΎ 127 ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΎΡ‚Π²Π΅Ρ‚ ACK. Π’Ρ€Π΅Ρ‚ΠΈΠΉ способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ логичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ адрСс ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΈ стартС систСмы, Ссли мастСр ΡƒΠΆΠ΅ настроСн.

МоТно Π»ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ Π΄Π²Π° мастСра I2C вмСстС?

Π”Π°, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° I2C ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ°ΡΡ‚Π΅Ρ€Π½ΠΎΡΡ‚ΡŒ. Однако для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΆΠ°. Если Π΄Π²Π° мастСра Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚ΠΎΡ‚, ΠΊΡ‚ΠΎ Π²Ρ‹Π΄Π°Π΅Ρ‚ "0" Π² Π±ΠΈΡ‚, Π³Π΄Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ‹Π΄Π°Π΅Ρ‚ "1", ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π°Ρ€Π±ΠΈΡ‚Ρ€Π°ΠΆ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ "0" ΠΏΠΎΠ±Π΅ΠΆΠ΄Π°Π΅Ρ‚ Π½Π° шинС) ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ, пСрСйдя Π² Ρ€Π΅ΠΆΠΈΠΌ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΡ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация этого слоТна, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ аппаратная ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π² МК.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠΎΠΉ I2C Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ Π½Π°Π³Ρ€Π΅Π²Π΅?

Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° влияСт Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΈ сопротивлСниС Π΄ΠΎΡ€ΠΎΠΆΠ΅ΠΊ. ΠŸΡ€ΠΈ Π½Π°Π³Ρ€Π΅Π²Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π² сочСтании с высоким Π½ΠΎΠΌΠΈΠ½Π°Π»ΠΎΠΌ ΠΏΠΎΠ΄Ρ‚ΡΠ³ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… рСзисторов ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π»ΠΈΠ½ΠΈΠΈ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΠ³ΠΎ логичСского нуля. Π’Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΏΠ»ΠΎΠ²ΠΎΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π² Ρ€Π°Π·ΡŠΠ΅ΠΌΠ°Ρ…. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π½ΠΎΠΌΠΈΠ½Π°Π» подтяТки.

Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли SDA застрял Π² Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅?

Π­Ρ‚ΠΎ классичСский случай зависания ΡˆΠΈΠ½Ρ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ сброс: Π²Ρ‹Π΄Π°ΠΉΡ‚Π΅ 9 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π½Π° линию SCL (Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π°), игнорируя SDA. Π­Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Π΄ΠΎΠΌΠΎΠ΅ устройство Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΈ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ линию. Если Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ β€” ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠ³ΠΎ устройства.