Sida 1 av 2

I2C över twisted pair?

Postat: 11 maj 2016, 00:50:11
av larsson
Jag har ett par sensorer och en ATMega som är slavar på en I2C-buss, en Raspberry är mastern. Mot bättre vetande har jag totalt runt 2 meter kabel. Det funkar för det mesta, efter jag sänkte klockfrekvensen till 50 kHz. Jag läser av var tionde sekund och får kanske ett dussin missar per dygn.

Jag kikade på signalerna i skåpet och det ser inte så vackert ut, bild nedan. Gul är SDA och blå SCL. När ena signalen faller så verkar det ge gruvliga spikar hos grannen. Jag använder enbart Raspens pullup-motstånd, de ska tydligen vara på 1,8 kΩ. Har testat med lite extra pullups här och var bland sensorerna, men det gör ingen skillnad alls.

Misstänker att det blir "överhörning" mellan ledarna i den oskärmade kabeln. Funderar nu på att ersätta den med UTP/nätverks-kabel där signalerna går i egna par signal/jord. Kan det göra nytta i det här fallet, eller är det bara bortkastad möda?

(Och hur f-n blir man av med de där animerade smajlisarna när man skriver inlägg? Använder vuxna mänskor sånt..?)

Re: I2C över twisted pair?

Postat: 11 maj 2016, 06:15:25
av svanted
att bara ha jord och signal i paret gör knappast någon skillnad...
du måste ha balanserad signal i paren, alltså skapa en invers av signalen genom kabeln och sedan återskapa den i andra änden mha differensen..
då kommer alla störningar att släckas ut.
sen är paren olika långa i tp kablar så man får tidsskillnader i långa kablar, men det har knappast betydelse för 50 Hz klocka.

edit, det finns färdiga kretsar för att hantera balanserade signaler.

Re: I2C över twisted pair?

Postat: 11 maj 2016, 07:38:05
av Icecap
Att flytta signalerna så att SDL & SCL inte ligger på samma par kommer att ge mindre kapacitiv koppling mellan dom!

Vid att ha GND som andra parten i denna uppdelning ger ytterligare lite mindre koppling.

Så det vill hjälpa, frågan är bara hur mycket - men jag gissar på "nog".

Att du borde ha en annan kommunikationsform i stället är sedan en annan sak.

Re: I2C över twisted pair?

Postat: 11 maj 2016, 11:08:20
av larsson
Jo, jag vet att I2C inte är rätt metod för längre avstånd, men det är frestande att försöka först. I det här fallet vägde bekvämligheten tyngst, skönt att slippa ytterligare hård- och/eller mjukvara för att konvertera protokoll. Nu kommer straffet, haha... Får göra mig omaket att byta ut kabeln och se om det hjälper.

Läste nåt annat tips, ett par seriemotstånd kan tydligen dämpa spikarna, och det låter väl rimligt. Ska nog prova det först, enklare att åstadkomma. Framgick inte exakt var de skulle stoppas in, eller värdet på dem, men det är ju enkelt att testa.

Re: I2C över twisted pair?

Postat: 11 maj 2016, 11:57:40
av elshorto
Seriemotstånd på utgångarna (typ 100ohm) och en kondensator till jord direkt efter för att ta bort de högsta frekvenserna. Din bild visar ju att den snabba fallande flanken ger en kraftig överhörning medans den långsamma stigande inte är något större problem.

Jag brukar köra TP vid liknande kablage. Det finns ju andra störningar som kan ställa till det också.

Och bara för att jävlas :badgrin:

Re: I2C över twisted pair?

Postat: 11 maj 2016, 13:18:03
av lillahuset
Jag tycker signalerna ser snygga ut. Att det "ringer" på fallande flank spelar ju ingen roll eftersom SDA samplas när SCL är hög. :happy:

Re: I2C över twisted pair?

Postat: 11 maj 2016, 16:02:11
av elshorto
Kolla mitt i bilden, när SDA går låg. Ringningarna på SCL ser ut att vara stora nog att klocka en gång extra. :humm:

Re: I2C över twisted pair?

Postat: 11 maj 2016, 16:32:13
av prototypen
Tvinnat par med ena jord gör stor skillnad.
Jag kan ha 50-75 meter kabel med 9-10 signaler åt båda håll och det läcker inte över.
Har visserligen lite tuffare drivning än OC.

Protte

Re: I2C över twisted pair?

Postat: 11 maj 2016, 16:40:12
av larsson
Ja, vertikalskalan på den blå kanalen är 2V/div så spikarna är ju ett par, tre V-pp. Med Vcc på 3,3 Volt känns det lite för mycket. Ska prova med seriemotstånd i helgen. Om det inte blir för fint väder, dårå...

Ger det ingen framgång så blir det vridna par, tycks ju funka för ett par av er i alla fall.

Å tack ska ni ha för de fina emotikonerna...

Re: I2C över twisted pair?

Postat: 11 maj 2016, 17:14:56
av prototypen
Har du olika signaler i ett par så är det :(
Men halvbalanserat med GND i ena tåten är bra mycket bättre :vissla:
Balanserat är ju alltid bättre :tumupp:
Visst kan du prova med seriemotstånd och kondensator :shock: , det blir ett filter som inte släpper genom höga frekvenser som en ringning är. :!:
Du får prova dig fram till hur mycket avrundning av signalen det tål :cry:
Bara för att du inte gillar :D så har jag på pin kiv :evil: lagt till en och annan.
Nu har jag nog använt fler :badgrin: än jag gjort det senaste året för jag är vuxen.

Protte :happy:

Re: I2C över twisted pair?

Postat: 11 maj 2016, 17:18:12
av lillahuset
Glöm inte att I2C är väääääääldiiiiiiiigt lååååååångsaaaaaaaam. Det är avsiktligt för att systemen ska bli "snorbilliga". Det handlar inte om flanktriggning här.

Edit: :wacko: :D

Re: I2C över twisted pair?

Postat: 11 maj 2016, 19:23:56
av xxargs
I2C byggdes för internkommunikation inom apparatlådor som TV-apparater mm. i långsam takt - inte att det skulle koppla ihop mellan olika apparater och ej heller för hög hastighet eller att behöva ta hänsyn till transmissionsegenskaper på kablar.

Så fort man går upp i hastighet och/eller längre kablar så måste man snart bekymra sig om transmissionsegenskaperna på använda kablar och hur dessa skall matcha mot driver/receiver och där är I2C liksom många andra TTL-baserade och CMOS-baserade gränsnitt väldigt dåligt rustad för.

Re: I2C över twisted pair?

Postat: 11 maj 2016, 21:06:03
av mankan

Re: I2C över twisted pair?

Postat: 11 maj 2016, 21:19:58
av lillahuset
Jo visst, men jag har svårt att tro att en "riktigt" gjord I2C-krets har problem eftersom SDA samplas på SCL hög som definieras av pull-up.

Re: I2C över twisted pair?

Postat: 11 maj 2016, 22:55:55
av RoPa
En fråga, var mäter du?
Vid RPi eller vid sensorn 2m ut på kabeln?