I2C

Alles wat betrekking heeft op ElektroMagnetische Compatibiliteit
Plaats reactie
Bericht
Auteur
Goos
Berichten: 338
Lid geworden op: 16 nov 2011, 20:45
Roepletters: pa0sir

I2C

#1 Bericht door Goos »

Ik ben bezig om met het HMC5883L chipje een kompas te maken , het werkt keurig , maar ik heb een EMC probleempje.
telkens op 1 achterflank van de SDA puls ontstaat er een ruisbult , heel erg kort , maar hinderlijk.

Meetopstelling USB -> I2C omzetter , kompas-printje , scoop
Geel = clock vd I2C
Paars = data
groen = breedbandig afgeschermd "stroom" lusje 3 cm diameter, afgesloten met 50 Ohm. op 2 cm afstand vd USB kabel
Wit = FFT van de groene trace

Let op de steile achterflank van de laatste puls.
Op dit moment ook een korte voedingsspanningsdip van 0.5 volt. ( niet zichtbaar op de scoop )
Pull-up weerstanden 4,7 K , verandering had geen invloed

Het kompas ook nog op een arduino aangesloten , hetzelfde resultaat.
Plaatje 0 is zonder signaal
De rest is steeds verder uitvergroot
Mijn vraag is heeft iemand dit eerder gezien ? , wat was de oplossing cq oorzaak ?

gr
Goos
Bijlagen
scoop3.jpg
scoop2.jpg
scoop1.jpg
scoop0.jpg
Peilen is het omgekeerde van een antennediagram opmeten.
pa0sir

Gebruikersavatar
PE9ZZ
Berichten: 1239
Lid geworden op: 06 nov 2010, 18:00
Roepletters: PE9ZZ
Locatie: Amsterdam (JO22KI)
Contacteer:

Re: I2C

#2 Bericht door PE9ZZ »

Is die USB afgeschermd? I2C staat nou niet direct bekend als een high-speed protocol...

Tjerk, 9ZZ

Gebruikersavatar
Hans PE1KWH
Berichten: 281
Lid geworden op: 30 jul 2009, 19:32

Re: I2C

#3 Bericht door Hans PE1KWH »

Gebeurd dat alleen aan het einde van een datatransfer ?
Ik zie nl. dat eerder de SDA ook van hoog naar laag en daar gebeurt niets.

Aan het einde van de data transfer schakelt de zendende partij om van tx naar rx. De rx doet dat andersom om een ACK te kunnen geven.
Als de 2e sneller dan de 1e is kun je wel eens rare dingen gaan zien.
Misschien is je klokpuls te slap waardoor de timing ongelukkig is geworden ?

Kun je die timing instellen bij de chip ? of is die autonoom en alleen afhankelijk van de kloksnelheid ?

Goos
Berichten: 338
Lid geworden op: 16 nov 2011, 20:45
Roepletters: pa0sir

Re: I2C

#4 Bericht door Goos »

@PE9ZZ
De meeste PC hebben niet standaard een I2C naar buiten uitgevoerd, vandaar de omzetter naar USB.
Wellicht intern wel weer, maar dit weet ik niet. Ik heb met een terminal progje gewerkt voor deze chip.
Was trouwens een MCP2221
https://www.microchip.com/wwwproducts/en/MCP2221

Op het kompas-printje zelf zit ook een GPS module die via RS232 werkt. Dit geeft geen enkel probleem.

@ PE1KWH
Het gebeurt inderdaad alleen aan het einde van de datatransfer van een byte.
De steile achterflank is een soort van dirac puls waar alle frequenties in zitten sommige iets meer andere minder , vandaar een algemene verhoging in ruis en hier en daar wat bulten.
De FFT wordt berekend over het zichtbare gedeelte van de trace (de groene ) ook over het "lege" gedeelte vandaar dat er verschil in level zit bij meer of minder uitvergroten.
Timing is voor zover ik weet niet in te stellen. De data komt verder ook prima over.
Vreemde is ook dat het zowel met de omzetter gebeurt als met een arduino.
Het lijkt er inderdaad wel op of er momenteel een sluiting ontstaat doordat een van de beide te vroeg en te hard naar laag gaat.
Maar wie is verantwoordelijk ?
Ik ga morgen eens een weerstandje in de datalijn zetten. Ik heb nog een scoop kanaal over, kijken of ik de dader kan vinden.
Ik weet niet of het lukt maar in principe kan ik de I2C data ( bytes) er ook nog bij zetten echter ik ben bang dat dan de achterflank niet meer zo goed zichtbaar wordt omdat dit protocol de tijdbasis en de samples/seconde gaat overnemen.
Ben eigenlijk wel benieuwd of er nog meer mensen zijn die met dit kompas gewerkt hebben.

gr
Goos
Peilen is het omgekeerde van een antennediagram opmeten.
pa0sir

Gebruikersavatar
PE9ZZ
Berichten: 1239
Lid geworden op: 06 nov 2010, 18:00
Roepletters: PE9ZZ
Locatie: Amsterdam (JO22KI)
Contacteer:

Re: I2C

#5 Bericht door PE9ZZ »

Want die Arduino heeft wel een I2C interface? Net als Raspberry Pi? (ben niet zo thuis in Arduino, vandaar)

Zegt de datasheet van die chip hier wat over? Misschien is-ie ergens druk mee bezig na het voorlaatste I2C bit (de laatste is het stopbit meen ik me te herinneren zonder in de doc te duiken).

Tjerk, 9ZZ

Goos
Berichten: 338
Lid geworden op: 16 nov 2011, 20:45
Roepletters: pa0sir

Re: I2C

#6 Bericht door Goos »

@PE9ZZ

Zo goed ben ik er ook niet in thuis, Maar ik denk dat het niet dat het de chip is die druk bezig is, dan zie je andere dingen . Hier is het duidelijk de steile flank die de oorzaak is. Zie ook het tijdstip en de response op het lusje.
Normaal zou ik me er niet zo druk over maken als niet ergens in het HF gedeelte van een ontvanger binnen zou kunnen komen, maar de schakeling komt ongeveer 20 cm van een breedband antenne te staan , dus....
Normaal gesproken zouden het kompas en GPS ook verderop kunnen , maar dit is de enigste plek waar weinig "ijzer" in de buurt is.
Nog een pdfje van het interface-boardje en het tooltje wat ik gebruikt heb om te testen.
http://ww1.microchip.com/downloads/en/d ... 02282a.pdf

Goos
Peilen is het omgekeerde van een antennediagram opmeten.
pa0sir

PA3CQN
Berichten: 789
Lid geworden op: 10 dec 2014, 21:59
Roepletters: PA3CQN
Locatie: Groningen
Contacteer:

Re: I2C

#7 Bericht door PA3CQN »

PE9ZZ schreef:Want die Arduino heeft wel een I2C interface?
Ja, hardwarematig ingebakken in de Atmel chip.
_______________________________________________
Na jaren afwezig toch maar weer eens rondkijken.
UV-B5, RTL stick, SDRPlay2, miniwhip, magloop, X300
http://www.pa3cqn.nl
_______________________________________________

Gebruikersavatar
PE9ZZ
Berichten: 1239
Lid geworden op: 06 nov 2010, 18:00
Roepletters: PE9ZZ
Locatie: Amsterdam (JO22KI)
Contacteer:

Re: I2C

#8 Bericht door PE9ZZ »

@PA3CQN: Ik dacht al zoiets. Maar wat ik dan niet snap is dat het met die USB breakout board interface optreedt en met de Arduino dus ook. Dat zou suggereren dat het uit de kompaschip komt. Die HMC5883L dus. Begrijp niet waarom het dan zo aanwezig is op de USB kabel. Dit is een symmetrisch protocol (+D, -D) dus dat zou moeten cancelen.

Tjerk, 9ZZ

PA3CQN
Berichten: 789
Lid geworden op: 10 dec 2014, 21:59
Roepletters: PA3CQN
Locatie: Groningen
Contacteer:

Re: I2C

#9 Bericht door PA3CQN »

PE9ZZ schreef:@PA3CQN: Ik dacht al zoiets. Maar wat ik dan niet snap is dat het met die USB breakout board interface optreedt en met de Arduino dus ook. Dat zou suggereren dat het uit de kompaschip komt. Die HMC5883L dus. Begrijp niet waarom het dan zo aanwezig is op de USB kabel. Dit is een symmetrisch protocol (+D, -D) dus dat zou moeten cancelen.

Tjerk, 9ZZ
Ik denk dat het met de USB lijn niet te maken heeft, maar met de voeding.
Maar dan zou je moeten weten hoe het echt aangesloten is. De kompasprint moet 3,3 V
hebben. Dat komt eventueel uit de I2C omzetter: als je daar de USB aansluiting als voeding
gebruikt kun je met de jumper kiezen of VDD 5/3,3 volt wordt. Met de jumper op 3,3 V
zou die VDD uitgang dan naar de kompasprint moeten.
Op de scoop plaatjes zijn de I2C signalen 4 volt, dat is dus raar bij 3,3 V voeding.

Ik begrijp ook de 4k7 pullup niet, want er zitten ook al 2k2 pullups op de MCP2221.

Als ik daarbij neem dat met de Arduino ( standaard 5 V I2C ) hetzelfde gebeurt denk ik
dat de kompas chip met 5 volt ipv 3,3 V wordt gevoed. Ook omdat het probleem zich voordoet
precies wanneer SDA wisselt van IN/OUT.

Goos kan daarop het antwoord geven?
_______________________________________________
Na jaren afwezig toch maar weer eens rondkijken.
UV-B5, RTL stick, SDRPlay2, miniwhip, magloop, X300
http://www.pa3cqn.nl
_______________________________________________

Gebruikersavatar
Hans PE1KWH
Berichten: 281
Lid geworden op: 30 jul 2009, 19:32

Re: I2C

#10 Bericht door Hans PE1KWH »

Ik heb zo'n chip aan een RM186 LoRa module geknoopt, zal morgen eens kijken hoe dat er uit ziet als ik ff tijd heb ( op QRL ).
Het ding werkt goed voor zover ik weet.

Goos
Berichten: 338
Lid geworden op: 16 nov 2011, 20:45
Roepletters: pa0sir

Re: I2C

#11 Bericht door Goos »

Ik heb nog even gekeken naar wat andere apparatuur waar I2C in zit.
u-Controler met RDS chip via I2C . Hier zag je dat de timing veel nauwkeuriger is dan bij de Arduino.
Spurious enz kon ik niet meten op dezelfde manier, maar het zag er allemaal veel netter uit.
Trouwens nog wel weer even naar de Arduino gekeken, met het voorbeeld progje , begon me ook op te vallen dat de achterflank vd data heel erg kort op de flank vd clock zit.

@PE1KWH Had je nog tijd gehad om te kijken ?

gr
Goos
Peilen is het omgekeerde van een antennediagram opmeten.
pa0sir

Gebruikersavatar
Hans PE1KWH
Berichten: 281
Lid geworden op: 30 jul 2009, 19:32

Re: I2C

#12 Bericht door Hans PE1KWH »

Ik heb inderdaad gekeken en wat scoopplaatjes genomen.
IMG_6474.JPG
Dit is de request vanuit de controller naar de magnetometer.
IMG_6473.JPG
Dit is het laatste databyte vanuit de magnetometer naar de controller, met Nack i.v.m. single read.

Je ziet bij mij geen ringing op de data lijn ( onderste ). Wel zie je veel steilere flanken bij dezelfde kloksnelheid van 400 kHz.
Controller is een Laird RM186 LoRa module.
Pull=up is 4k7 met parallel daaraan waarschijnlijk 2k2 op het break-out boardje.
Chip is een DA 5883 ( volgens opdruk op chip ) = HMC5883L als het goed is.
IMG_6476.JPG

Goos
Berichten: 338
Lid geworden op: 16 nov 2011, 20:45
Roepletters: pa0sir

Re: I2C

#13 Bericht door Goos »

Bedankt Hans voor het meten.

Bij mij was op de datalijn ook geen ringing te zien , alleen op de groene trace.
Dit was de response op het hoogfrequent oppicklusje. De FFT was ook van deze trace.
Je ziet dat bij mij ,op scoopplaatje3, de impuls op het lusje exact samenvalt met die achterflank
Hetzelfde spectrum was ook te zien met een antennetje op een spectrumanalyser en een tijdje maxhold. ( zodoende kwam ik er achter)
Alleen dan kun je niet de "dader" isoleren.
De scoop van het werk ( kan hem zelf niet betalen ) is een geweldige tool om dit soort dingen te pin-pointen. Ik zal hem missen als ik met pensioen ga.

Jou metingen bevestigen in ieder geval de steile flank. Ik ga nog eens kijken of ik nog meer spullen heb waar I2C in zit. Tot nu toe ben ik die steile fank nog niet tegengekomen.
Een neef van mij heeft bij NXP chips ontworpen , die kwam het ook onbekend voor.

In ieder geval iedereen bedankt voor het meedenken.

Goos
Peilen is het omgekeerde van een antennediagram opmeten.
pa0sir

Plaats reactie