|
|
Meten en analyseren van I²C-signalen
Introductie
I²C (Inter-Integrated Circuit) is een seriële bus, die gebruikt wordt om gegevens uit te wisselen met lage-snelheid
randapparatuur.
I²C gebruikt twee bi-directionele lijnen, seriële data (SDA) en seriële klok (SCL).
Specifieke spanningen die gebruikt worden zijn +3.3 Volt of +5 Volt.
De meest gangbare I²C-bus-modes zijn de 400 kbit/sec fast mode, de 100 kbit/s standard mode en de 10 kbit/s
low-speed mode.
Een high speed mode van 3.4 Mbit/sec is ook beschikbaar.
I²C gebruikt een 10 bits adresruimte met 16 gereserveerde adressen, wat inhoudt dat maximaal 1008 nodes op dezelfde
bus kunnen communiceren.
Twee typen nodes zijn mogelijk: master en slave.
I²C-apparaten gebruiken een speciaal protocol om met elkaar te communiceren.
Als apparaten op een I²C-bus niet goed communiceren, is er waarschijnlijk iets fout en moet die fout opgespoord
worden.
Meten van de elektrische eigenschappen van de twee signalen in de I²C-bus gaat eenvoudig met een oscilloscooop.
Maar, wanneer de elektrische parameters allemaal juist zijn, moeten de signalen geanalyseerd worden om te kijken
of het communicatieprotocol juist is geïmplementeerd.
Benodigdheden
Meten
Voor het meten van I²C-signalen is een meetinstrument met tenminste twee ingangskanalen vereist.
De maximale frequentie op een I²C-bus hangt af van het bus-type, het instrument moet tenminste twee keer zo snel
bemonsteren als de maximale snelheid van de bus, op beide kanalen tegelijkertijd, maar vijf tot tien maal
sneller heeft de voorkeur.
Voor een 100 kbit/sec bus houdt dat in dat op bij voorkeur 1 MHz bemonsterd wordt, op beide kanalen tegelijk.
I²C gebruikt of 3.3 Volt of 5 Volt signalen, dus het instrument moet minimaal in staat zijn spanningen van 0
tot 5 volt te meten.
Omdat een gegevensoverdracht lang kan duren, is een grote recordlengte gewenst voor het opnemen van de communicatie.
De Handyscope HS3, Handyscope HS4 en de Handyscope HS4 DIFF zijn geschikte instrumenten voor het meten van I²C-signalen.
Analyseren
Om het communicatieprotocol in de gemeten signalen te analyseren, moeten de diverse pulsen in beide signalen
en hun volgorde onderzocht worden en omgezet worden naar I²C-commando's.
De TiePie engineering Multi Channel software is in staat het I²C
communicatieprotocol te analyseren, met behulp van de I²C analyzer.
In dit voorbeeld wordt een Handyscope HS4 gebruikt om I²C-signalen te meten van een I²C EEPROM die benaderd
wordt.
Instellen van de hardware
Allereerst wordt de Handyscope HS4 aangesloten op de computer en de Multi Channel software gestart.
Dan wordt Ch1 op het Serial Clock-signaal van de I²C-bus en Ch2 op het Serial Data-signaal van de I²C-bus
aangesloten.
De massa-aansluitingen van de twee ingangskanalen moeten op dezelfde massa als die de I²C bus gebruikt
aangesloten worden.
Instellen van de software
Instellen van de ingangskanalen
Omdat maar twee kanalen gebruikt worden om de I²C-signalen te meten, kunnen Ch3 en Ch4 van de Handyscope HS4
uit de grafiek verwijderd worden.
Ch1 wordt gebruikt om het Serial Clock-signaal (SCL) te meten en Ch2 om het Serial Data-signaal (SDA) te meten.
Om het herkennen van de signalen te vereenvoudigen, kunnen beide een beschrijvende naam (alias) krijgen.
klik, om de alias van een kanaal te veranderen, met de rechter muisknop op het kanaal in het objectscherm en
selecteer Stel alias in... en vul de gewenste waarde in. Geef Ch1 als alias "SCL" en Ch2 "SDA".
I²C-signalen liggen tussen 0 Volt en +3.3 Volt of +5 Volt.
Zet de ingangskoppeling van de beide kanalen op "DC" en de ingangsgevoeligheid van de beide kanalen op
"8 Volt" volle schaal. Op deze manier kunnen beide systemen goed gemeten worden.
Instellen van de tijdbasis
De I²C signalen in ons voorbeeld zijn gemeten op een 100 kbit/sec bus en kunnen daarom frequenties tot 100 kHz
bevatten. Dat houdt in dat de minimaal vereiste samplefrequentie 200 kHz is. Dit resulteert echter in slechts
2 samples per periode, net genoeg om het signaal te herkennen, maar niet voldoende om het goed te analyseren.
Zet daarom de samplefrequentie op tenminste 1 MHz.
Omdat I²C-communicatie verscheidene miliseconden kan duren, is een grote recordlengte gewenst, om zoveel mogelijk
van de communicatie te vangen.
In dit voorbeeld wordt een relatief korte boodschap gemeten, daarom is de recordlengte op 20000 samples gezet.
Wanneer een langere communicatie verwacht wordt, zet dan de recordlengte op een grotere waarde, bijvoorbeeld
100000 samples.
Instellen van de trigger
Zowel SCL als SDA zijn in rust hoog.
Wanneer een communicatie start, wordt eerst de SDA-lijn laag.
Selecteer daarom Ch2 als triggerbron en kies "neergaande flank" als triggermode. Stel het triggerniveau in op
ongeveer halverwege het signaal, bijvoorbeeld 1.5 Volt. Stel de triggerhysteresis in op een niet te grote waarde,
ongeveer 0.5 Volt.
Er zal nu een trigger optreden wanneer Ch2 een neergaande flank meet, waarbij het signaal eerst groter is dan +2
Volt en dan onder +1.5 Volt zakt.
Instellen van de I²C-analysator
Voor het analyseren van I²C-signalen wordt de I²C analyzer sink
gebruikt.
Creëer er een door met de rechter muisknop op Sinks in het objectscherm te klikken en dan
I²C analyzer te kiezen.
Dit opent tevens een extra venster, waarin de geanalyseerde I²C communicatie weergegeven wordt.
Aan de I²C-analysator moeten twee bronnen verbonden wordne, de eerste bron wordt als SCL beschouwd, de tweede
bron als SDA.
Sleep eerst Ch1 op de I²C-analysator en sleep daarna Ch2 op de I²C-analysator.
Het I²C-analysator-uitvoerscherm zal nu weergeven welke bron op de SCL_ingang en welke bron op de SDA-ingang is
aangesloten.
Wanneer de ingangen met de verkeerde bronnen verbonden zijn, verwisselt een druk op de
Ingangen omwisselen-knop de ingangen.
De I²C-analysator kan zowel 3.3 Volt I²C-bussen als 5 Volt I²C-bussen analyseren. Om het juiste bustype in te
stellen moet met de rechter muisknop op de I²C-analysator in het objectscherm geklikt worden en Voltage
gekozen worden en aansluitend 3.3 Volt of 5 Volt.
In ons voorbeeld meten we aan een 3.3 Volt bus.
Klaar om te meten
Nu beide ingangen en de I²C-analysator ingesteld zijn, kan een meting uitgevoerd en geanalyseerd worden.
De I²C signalen die in de bovenstaande afbeelding getoond worden zijn van een communicatie met een eeprom.
Ze zijn door de I²C-analysator vertaald naar de volgende commando's:
Druk op de knop Wissen om het uitvoerscherm te wissen
voor een nieuwe meting.
Als een stuk communicatie langer is dan het I²C-analysator-uitvoerscherm, is het niet mogelijk de tekst te zien die
onderaan toegevoegd wordt. Het venster heeft een auto scroll-functie, die er voor zorgt dat altijd de onderste
regels zichtbaar zijn. Om deze functie aan of uit te zetten moet op de Scroll automatisch naar beneden knop
gedrukt worden.
Om de inhoud van het uitvoerscherm op schijf op te slaan kan op de Opslaan-knop
gedrukt worden.
Instellen van adres-aliasen
Het I²C-protocol gebruikt adressen om de diverse apparaten op de bus te benaderen.
Om het lezen van de gedecodeerde I²C-communicatie te vereenvoudigen, kunnen de adressen in het uitvoerscherm
vervangen worden door beschrijvende namen (Aliassen).
Klik op de tab Aliassen in het I²C-analysator-uitvoerscherm, om de aliassen voor de adressen die in de
communicatie voorkomen, in te stellen.
Aliassen voor adressen kunnen worden toegevoegd door op de Toevoegenknop
te drukken en gewijzigd worden door op de knop Bewerken
te drukken.
Vaak gebruikte aliassen kunnen op schijf opgeslagen worden ( ) en weer
teruggelezen worden ( ).
Zodra de aliassen ingevuld zijn, zullen de volgende metingen de ingevulde aliassen tonen.

|