I2C na dolgih linijah

Tu bo govora o vseh mogočih mikrokontrolerjih ne glede na tip ali zgradbo

Moderator: tilz0R

I2C na dolgih linijah

OdgovorNapisal/-a s54mtb » 07 Apr 2019, 21:48

Celo popoldne sem se zezal z I2C preko dolgih linij. Na koncu se mi je najbolj obnesla varianta s pullupi (600 ohm) na obeh koncih kabla in s taktom 10kHz. Malo sem še povečal rise in fall time in stvar deluje zanesljivo in brez prenihajev.

Zanimajo me praktične izkušnje na tem področju.
Making raw materials do something useful since 1969.
Uporabniški avatar
s54mtb
 
Prispevkov: 9202
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 1253 krat
Prejel zahvalo: 3073 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 153

Re: I2C na dolgih linijah

OdgovorNapisal/-a xfce » 07 Apr 2019, 22:08

s54mtb je napisal/-a:Celo popoldne sem se zezal z I2C preko dolgih linij. Na koncu se mi je najbolj obnesla varianta s pullupi (600 ohm) na obeh koncih kabla in s taktom 10kHz. Malo sem še povečal rise in fall time in stvar deluje zanesljivo in brez prenihajev.

Zanimajo me praktične izkušnje na tem področju.



Hm, dobro, deluje. Ampak kako je pa potem v praksi, če imaš recimo 10m kabla, ki je priključen direktno na dva pina od MCU? Občutek imam, da se hitro zna zgoditi kakšna prenapetost in druge motnje... Je to sploh smiselno in dovolj zanesljivo?
Je mogoče rešitev v kakšni zaščiti?
Uporabniški avatar
xfce
 
Prispevkov: 664
Pridružen: 14 Feb 2015, 11:38
Kraj: Poljane nad Škofjo loko
Zahvalil se je: 95 krat
Prejel zahvalo: 196 krat
Uporabnika povabil: S52O
Število neizkoriščenih povabil: 39

Re: I2C na dolgih linijah

OdgovorNapisal/-a Cloud » 07 Apr 2019, 22:11

xfce je napisal/-a:
s54mtb je napisal/-a:Celo popoldne sem se zezal z I2C preko dolgih linij. Na koncu se mi je najbolj obnesla varianta s pullupi (600 ohm) na obeh koncih kabla in s taktom 10kHz. Malo sem še povečal rise in fall time in stvar deluje zanesljivo in brez prenihajev.

Zanimajo me praktične izkušnje na tem področju.



Hm, dobro, deluje. Ampak kako je pa potem v praksi, če imaš recimo 10m kabla, ki je priključen direktno na dva pina od MCU? Občutek imam, da se hitro zna zgoditi kakšna prenapetost in druge motnje... Je to sploh smiselno in dovolj zanesljivo?
Je mogoče rešitev v kakšni zaščiti?

Glede na to da imaš 600Ohm na napajanje, bi moralo to kar dovolj dobro odvajati na napajanje in posledično na claming diode
Cloud
 
Prispevkov: 1619
Pridružen: 18 Mar 2015, 08:24
Kraj: Ljubljana
Zahvalil se je: 36 krat
Prejel zahvalo: 150 krat
Uporabnika povabil: BraneZ
Število neizkoriščenih povabil: 13

Re: I2C na dolgih linijah

OdgovorNapisal/-a borisz » 08 Apr 2019, 05:32

Jaz na dolgih linijah uporabim I2C extenderje. Nekaj stane, ampak potem deluje zanesljivo tudi na 50m kabla.
https://www.poscope.com/product/poneti2cextender/
It's never too late to have a happy childhood.
Uporabniški avatar
borisz
 
Prispevkov: 3147
Pridružen: 18 Jan 2015, 12:05
Zahvalil se je: 713 krat
Prejel zahvalo: 705 krat
Uporabnika povabil: Marholt
Število neizkoriščenih povabil: 136

Re: I2C na dolgih linijah

OdgovorNapisal/-a mucek » 08 Apr 2019, 06:29

Odlicno, to sploh nisem vedel, da obstaja! ;)
... lahko pa se tudi motim ...
Uporabniški avatar
mucek
 
Prispevkov: 1482
Pridružen: 18 Jan 2015, 20:20
Kraj: Ljubljana
Zahvalil se je: 58 krat
Prejel zahvalo: 432 krat
Uporabnika povabil: s54mtb
Število neizkoriščenih povabil: 80

Re: I2C na dolgih linijah

OdgovorNapisal/-a javr » 08 Apr 2019, 10:15

sicer o I2C nimam pojma, so pa v bivši firmi neke računalniške povezave delovale preko tokovnih zank po včasih tudi, ohmsko gledano, zelo slabih telefonskih kablih
___
Uporabniški avatar
javr
 
Prispevkov: 1271
Pridružen: 17 Jan 2015, 21:06
Zahvalil se je: 65 krat
Prejel zahvalo: 103 krat
Uporabnika povabil: forest70
Število neizkoriščenih povabil: 23

Re: I2C na dolgih linijah

OdgovorNapisal/-a marko » 08 Apr 2019, 11:22

V kakšnem okolju pa to uporabljaš?
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 979
Pridružen: 18 Jan 2015, 01:00
Zahvalil se je: 113 krat
Prejel zahvalo: 123 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 66

Re: I2C na dolgih linijah

OdgovorNapisal/-a s54mtb » 08 Apr 2019, 11:49

Gre za prototip za projekt PoPri, kjer tri osnovnošolke rabijo IoT merilnk porabe energije in temperature. Okolje je "gospodinjsko".
Making raw materials do something useful since 1969.
Uporabniški avatar
s54mtb
 
Prispevkov: 9202
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 1253 krat
Prejel zahvalo: 3073 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 153

Re: I2C na dolgih linijah

OdgovorNapisal/-a borisz » 08 Apr 2019, 12:02

Marko,
PCA9600 gre do 50m s CAT5 kablom. Uporabljamo ga našem I2C extenderju: https://www.poscope.com/product/poneti2cextender/
P82B715 je pa bolj na steroidih.
It's never too late to have a happy childhood.
Uporabniški avatar
borisz
 
Prispevkov: 3147
Pridružen: 18 Jan 2015, 12:05
Zahvalil se je: 713 krat
Prejel zahvalo: 705 krat
Uporabnika povabil: Marholt
Število neizkoriščenih povabil: 136

Re: I2C na dolgih linijah

OdgovorNapisal/-a TilenS » 08 Apr 2019, 14:58

Kadarkoli gre I2C povezava izven vezja obvezno buffer. Z P82 imaš tudi opcije diferencialne komunikacije sem testiral klasično povezavo z 100kHz (vsaj kolikor se spomnim) na 130m UTP kabla in dejansko nisem zaznal nekih posebnih težav.
TilenS
 
Prispevkov: 342
Pridružen: 04 Feb 2015, 23:40
Zahvalil se je: 0 krat
Prejel zahvalo: 47 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 9

Re: I2C na dolgih linijah

OdgovorNapisal/-a zanka » 08 Apr 2019, 15:30

s54mtb je napisal/-a:Gre za prototip za projekt PoPri, kjer tri osnovnošolke rabijo IoT merilnk porabe energije in temperature. Okolje je "gospodinjsko".

Čemu ne 485, ki je temu namenjen?
Uporabniški avatar
zanka
 
Prispevkov: 2078
Pridružen: 17 Mar 2016, 00:16
Kraj: Krško
Zahvalil se je: 101 krat
Prejel zahvalo: 183 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 35

Re: I2C na dolgih linijah

OdgovorNapisal/-a borisz » 08 Apr 2019, 15:34

Če imaš senzor na I2C, je enostavneje uporabiti I2C extender.
It's never too late to have a happy childhood.
Uporabniški avatar
borisz
 
Prispevkov: 3147
Pridružen: 18 Jan 2015, 12:05
Zahvalil se je: 713 krat
Prejel zahvalo: 705 krat
Uporabnika povabil: Marholt
Število neizkoriščenih povabil: 136

Re: I2C na dolgih linijah

OdgovorNapisal/-a tilz0R » 08 Apr 2019, 20:06

zanka je napisal/-a:
s54mtb je napisal/-a:Gre za prototip za projekt PoPri, kjer tri osnovnošolke rabijo IoT merilnk porabe energije in temperature. Okolje je "gospodinjsko".

Čemu ne 485, ki je temu namenjen?

I2C senzor na RS-485 rabi (skoraj zagotovo) še en MCU :)
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1633
Pridružen: 17 Jan 2015, 23:12
Kraj: Črnomelj
Zahvalil se je: 211 krat
Prejel zahvalo: 405 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: I2C na dolgih linijah

OdgovorNapisal/-a zanka » 08 Apr 2019, 20:54

Menda so ARM-i poceni ;)
Uporabniški avatar
zanka
 
Prispevkov: 2078
Pridružen: 17 Mar 2016, 00:16
Kraj: Krško
Zahvalil se je: 101 krat
Prejel zahvalo: 183 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 35

Re: I2C na dolgih linijah

OdgovorNapisal/-a borisz » 08 Apr 2019, 21:11

So, ampak rabiš še RS485 vmesnik, ki stane toliko kot I2C extender.
It's never too late to have a happy childhood.
Uporabniški avatar
borisz
 
Prispevkov: 3147
Pridružen: 18 Jan 2015, 12:05
Zahvalil se je: 713 krat
Prejel zahvalo: 705 krat
Uporabnika povabil: Marholt
Število neizkoriščenih povabil: 136

Re: I2C na dolgih linijah

OdgovorNapisal/-a s54mtb » 08 Apr 2019, 21:14

Saj to sem tudi naredil pred časom, celo protokol sem se "zmislil" na osnovi HDLC:
https://e.pavlin.si/2016/06/04/hdlc-lik ... via-rs485/

ampak vzel sem, kar sem imel pri roki in je zahtevalo še najmanj truda. Vse ostalo bi bilo daljše od pol dneva "telovadbe".

Sem pa vesel, da se je razvila debata in da pristavi vsak svoje praktične (ok, tudi komercialne) izkušnje.

LP,
M.
Making raw materials do something useful since 1969.
Uporabniški avatar
s54mtb
 
Prispevkov: 9202
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 1253 krat
Prejel zahvalo: 3073 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 153

Re: I2C na dolgih linijah

OdgovorNapisal/-a marko » 09 Apr 2019, 05:34

Ko že govorimo o praktičnih izkušnjah :)

Jaz imam zelo slabe izkušnje z I2C in ga niti približno ne bi uporabil v komercialnem produktu. HW s temi senzorji me je hecal do onemoglosti. Če me res ne bi kdo prisilil, oz. da bi res obstajal nek senzor samo v I2C konfiguraciji, bi ga namontiral, sicer absolutno ne. Je to bilo sicer že nekaj časa nazaj in v RTOS okolju to sicer ne bi bil več tak problem, ampak meni se je I2C bus konstantno obešal. SDA (mislim da) je šel v LOW in ga je bilo težko obuditi. Sam protokol je napisan tako, da se ti lahko zaklene cel bus in potem moraš z 100 in enim načinom to poskušat resetirat. Vse naprave "crknejo". Ne rečem, vem da je bil najbrž HW design problem, ampak po N (dragih) poskusih, ni bilo več ekonomsko smotrno, da nadaljujem. Na istem vezju, sem potem uporabil samo SPI senzor in problemi so magično izginili in se niso nikoli več pojavili. Zame je to bil game over za I2C.
Za zunanje komunikacije pa uporabljam izključno CAN.
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 979
Pridružen: 18 Jan 2015, 01:00
Zahvalil se je: 113 krat
Prejel zahvalo: 123 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 66

Re: I2C na dolgih linijah

OdgovorNapisal/-a borisz » 09 Apr 2019, 05:50

Marko, lahko je bil problem tudi v programu. I2C, če je pravilno uporabljen, je zelo zanesljiv.
It's never too late to have a happy childhood.
Uporabniški avatar
borisz
 
Prispevkov: 3147
Pridružen: 18 Jan 2015, 12:05
Zahvalil se je: 713 krat
Prejel zahvalo: 705 krat
Uporabnika povabil: Marholt
Število neizkoriščenih povabil: 136

Re: I2C na dolgih linijah

OdgovorNapisal/-a marko » 09 Apr 2019, 06:13

Uporabljal sem hardverski I2C. Opcija za to je torej samo če je AVR imel hardwerski bug, ampak tega nisem preverjal.
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 979
Pridružen: 18 Jan 2015, 01:00
Zahvalil se je: 113 krat
Prejel zahvalo: 123 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 66

Re: I2C na dolgih linijah

OdgovorNapisal/-a bluel » 09 Apr 2019, 07:09

Jaz sem uporabljal i2c tudi na 30m kablih, brez ekstenderjev, le malo filtrov in zascite pred uC in je slo brez problemov.
bluel
 
Prispevkov: 63
Pridružen: 22 Jan 2015, 09:50
Kraj: Kreplje JN65WR
Zahvalil se je: 27 krat
Prejel zahvalo: 14 krat
Uporabnika povabil: sYsop
Število neizkoriščenih povabil: 4

Re: I2C na dolgih linijah

OdgovorNapisal/-a s54mtb » 09 Apr 2019, 08:03

Najprej je treba vedeti, kaj i2c sploh je: "inter integrated circuit" komunikacija, kot že ime pove. Tam tudi deluje in se obnaša v specifikacijah. Kadar je aplikacija izven tega, npr z dolgimi "žnorami", je treba vedeti kaj to pomeni. Linija, ki ima le open-drain izhod rabi pullup. Če je poleg še C ib L od kabla, postanejo pravokotni signali vse kaj drugega kot pravokotni.

Najhuje, kar se lahko zgodi je, da eden od poslušalcev potegne eno od linij na GND. Komercialnih aplikacij z I2C je neskončno. Tudi bugov je lahko veliko, zato je poleg pisanja driverjev potrebno prebrati tudi " errata" dokumente, saj eni celo proizvajamo izdelke z vgrajenim bugom (priloga).
Priponke
IDT_ZSC31050-Application-Note-I2C-Reset_APN_20160601.pdf
(290.82 KiB) Prenešeno 30 krat
Making raw materials do something useful since 1969.
Uporabniški avatar
s54mtb
 
Prispevkov: 9202
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 1253 krat
Prejel zahvalo: 3073 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 153

Re: I2C na dolgih linijah

OdgovorNapisal/-a marko » 09 Apr 2019, 17:43

Jaz sem znotraj vezja imel težave (avtomobilska elektronika). Da bi spravljal i2c izven vezja, mi niti približno ne pade na misel :)
Če ti v življenju ne gre in si nesrečen, se spomni na lastnike Renaultov.
marko
 
Prispevkov: 979
Pridružen: 18 Jan 2015, 01:00
Zahvalil se je: 113 krat
Prejel zahvalo: 123 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 66

Re: I2C na dolgih linijah

OdgovorNapisal/-a PrimozL » 09 Apr 2019, 23:23

Z I2C imam dve zanimivi izkušnji.

Prva je bila v kolegovem sistemu avtomatizacije kurilnice. Razdalje do senzorjev so do 10 metrov. Ko nič ni delalo, kot bi moralo, so bili ukrepi na las podobni Maretovim (nižanje pull-up uporov na obeh straneh linije, nižanje hitrosti komunikacije do 20 kHz). Že skoraj 10 let dela brez težav.

Druga izkušnja je bila pri I2C povezavi preko treh vezij, ki je bila izvedena s ploščatimi kabli. Pa še pretvorniki nivoja z "boosterji", ki generirajo tokovne konice, so bili vmes. Presluh je povzročil ogromno težav. Rešitev je bila v uporabi pretvornikov nivoja brez "boosterja" ter s prerazporeditvijo signalov v ploščatih kablih, da je bila med SCL in SDA masa, na njihovi zunanji strani pa napajanje (drugače ni šlo). Največja težava presluha na I2C je, da je v času, ko je tranzistor zaprt, linija zaključena z relativno visoko impedanco in kot taka "pobere" iz okolice prav vse, kar se da.
PrimozL
 
Prispevkov: 272
Pridružen: 19 Jan 2015, 01:49
Kraj: Okolica Vipave
Zahvalil se je: 40 krat
Prejel zahvalo: 76 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 18

Re: I2C na dolgih linijah

OdgovorNapisal/-a SamoBr » 10 Apr 2019, 01:04

i2C je bil narejen za komunikacijo znotraj škatle od televizorja. In tam dela odlično.
SamoBr
 
Prispevkov: 2798
Pridružen: 14 Jun 2015, 13:45
Zahvalil se je: 129 krat
Prejel zahvalo: 251 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 48

Re: I2C na dolgih linijah

OdgovorNapisal/-a s55m » 10 Apr 2019, 12:02

S kočijo se je odlično peljati po Lipici. Do Dunaja pa raje izberite avto.
The human emotional side is what allows believing in something, even when the science is totally wrong.
Uporabniški avatar
s55m
 
Prispevkov: 449
Pridružen: 17 Jan 2015, 20:56
Kraj: Milford MA
Zahvalil se je: 65 krat
Prejel zahvalo: 122 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 26

Re: I2C na dolgih linijah

OdgovorNapisal/-a VolkD » 10 Apr 2019, 20:22

s55m je napisal/-a:S kočijo se je odlično peljati po Lipici. Do Dunaja pa raje izberite avto.
In to pove nekdo, ki je v Plovdivu! :_rolling
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 32191
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 6298 krat
Prejel zahvalo: 4051 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: I2C na dolgih linijah

OdgovorNapisal/-a PrimozL » 10 Apr 2019, 22:56

s55m je napisal/-a:S kočijo se je odlično peljati po Lipici. Do Dunaja pa raje izberite avto.

Dobra. To je bil sicer še vedno bolj izlet do Divače ali Kozine, ampak ja - čista zloraba I2C glede na to, čemu je namenjen.
PrimozL
 
Prispevkov: 272
Pridružen: 19 Jan 2015, 01:49
Kraj: Okolica Vipave
Zahvalil se je: 40 krat
Prejel zahvalo: 76 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 18

Re: I2C na dolgih linijah

OdgovorNapisal/-a s55m » 19 Apr 2019, 20:50

PrimozL je napisal/-a:
s55m je napisal/-a:S kočijo se je odlično peljati po Lipici. Do Dunaja pa raje izberite avto.

Dobra. To je bil sicer še vedno bolj izlet do Divače ali Kozine, ampak ja - čista zloraba I2C glede na to, čemu je namenjen.


Plovdiv? Update man, update :)
The human emotional side is what allows believing in something, even when the science is totally wrong.
Uporabniški avatar
s55m
 
Prispevkov: 449
Pridružen: 17 Jan 2015, 20:56
Kraj: Milford MA
Zahvalil se je: 65 krat
Prejel zahvalo: 122 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 26

Re: I2C na dolgih linijah

OdgovorNapisal/-a VolkD » 19 Apr 2019, 21:53

s55m je napisal/-a:Plovdiv? Update man, update :)
Ah ja, predmestje Bostona.
Dokler bodo ljudje mislili, da živali ne čutijo bolečine, bodo živali čutile, da ljudje ne mislijowww.S5tech.net
Uporabniški avatar
VolkD
Administratorji strani
 
Prispevkov: 32191
Pridružen: 29 Dec 2014, 19:49
Kraj: Kačiče (Divača)
Zahvalil se je: 6298 krat
Prejel zahvalo: 4051 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: I2C na dolgih linijah

OdgovorNapisal/-a s54mtb » 19 Apr 2019, 22:36

VolkD je napisal/-a:
s55m je napisal/-a:Plovdiv? Update man, update :)
Ah ja, predmestje Bostona.


Da ni Boston predmestje Plovdiva :)
Making raw materials do something useful since 1969.
Uporabniški avatar
s54mtb
 
Prispevkov: 9202
Pridružen: 15 Jan 2015, 00:10
Zahvalil se je: 1253 krat
Prejel zahvalo: 3073 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 153

Re: I2C na dolgih linijah

OdgovorNapisal/-a Dorijan » 19 Apr 2019, 23:14

Dorijan
 
Prispevkov: 648
Pridružen: 20 Jan 2015, 23:09
Zahvalil se je: 2 krat
Prejel zahvalo: 101 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 19


Vrni se na Hardware

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost