Home | Producten | Software | Download | Nieuws | Zoeken | F.A.Q. |        

Classroom

 

Meten en analyseren van I²C-signalen

print

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.

measuring I²C signals

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.

I²C analyzer

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:

measuring I²C eeprom

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.

setting aliases

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.

measuring I²C eeprom

print