Sponset artikkel

Feilsøking av I2C med ADP3450

I2C, eller integrert krets, er en ofte brukt pakkesvitsjet, enkants seriell kommunikasjonsbuss som ble oppfunnet på begynnelsen av 80-tallet for forenklet kommunikasjon med perifere enheter. Med I2C kreves det bare to busslinjer: seriell datalinje (SDA) og seriell klokkelinje (SCL) med to pull-up motstander – noe som letter kravene til maskinvaredesign. Den originale 100 kbps kommunikasjonshastigheten er tilstrekkelig for de fleste applikasjoner; 400 kbps «hurtigmodus» åpner imidlertid dører for raskere overføringshastigheter.

Publisert Sist oppdatert

Muligheten til å analysere I2C-grensesnittet med presisjon er avgjørende for maskinvarefeilsøking av innebygde systemer. Oscilloskoper, protokollanalysatorer og logikkanalysatorer er alle verktøy som gir innsikt i de elektriske problemene til enheter som koder binære data til fysiske bølgeformer. Ofte vil ingeniører av innebygde systemer måtte skifte mellom disse enhetene som dedikerte benchtop-instrumenter eller velge mellom dem. ADP3450 er et unikt, mikset signaloscilloskop med fire høyoppløselige oscilloskopkanaler, to eksterne inngangstriggere og 16 digitale I/O-pinner. Ved å bruke ADP3450 og dets tilpassede signalskriptverktøy i WaveForms brukergrensesnitt, kan brukere både kjøre og analysere digitalt med en logikk- og protokollanalysator, samt raskt forstå kvaliteten på signalet med et høyoppløselig oscilloskop.

Denne hvitboken begynner med en diskusjon av det grunnleggende om I2C som en protokoll og bruken av I2C-busser, før den beskriver fordelene ved å bruke et oscilloskop, logikkanalysator og protokollanalysator for å feilsøke I2C. Den avsluttes med et eksempel som bruker ADP3450s protokollviser og logikkanalysator for å generere tilpassede I2C-signaler og vise transaksjonene for analyse og feilsøking.

Forstå I2C-protokollen

Siden I2C er en seriell buss, går all data over en enkelt datalinje (i motsetning til de flere linjene som finnes med parallelle busser). De toveis data- og klokkelinjene er open-drain – en funksjon som gjør det mulig å distribuere flere mastere eller flere slaver (opptil 128) med strekking (Figur 1). Dette betyr at I2C-master- og slave-enhetene bare kan kjøre data- og klokkelinjene lave, eller la dem være åpne. Pull-up motstandene (mellom 1 kΩ og 10 kΩ) «trekker» linjen opp til Vcc (5V, 3,3V eller 1,2V); hvis ikke, trekker I2C-master/slave-enheten den ned med åpne dreneringsdrivere eller FET-er. Disse pull-up motstandene gir de karakteristiske sagtannbølgeformene til I2C, og viser linjens ladninger og utladninger på de stigende og fallende kantene av sagtannen.

Figur 1: I2C-tilkobling som viser strekking eller drift av flere slaver. Strekking (Stretching) kan dempe kommunikasjonshastigheten ved å holde nede serieklokkelinjen (SCL).

Bruksområder for I2C-busser

I2C benytter ofte lavhastighetsenheter som mikrokontrollere (MCU), I/O-periferiutstyr, viftekontrollbrikker, EEPROM-er, analog-til-digital-omformere (ADC), digital-til-analog-omformere (DAC) og andre mindre eksterne enheter i innebygde systemer. Siden protokollen kun utnytter to ledninger, er den godt egnet for kort med mange sammenkoblinger. Dette kan brukes i alt fra IoT-enheter for polling/mottak av sensordata til strømforsyningskretsene på FPGA-er for å skalere strøm for å matche prosessorens klokkefrekvens.

I2C-drift

I2C-protokollen består av en startbit, slaveadressebiter, en lese/skrive (R/W) bit, databyte, en bekreftelsesbit (ACK), en ikke-bekreftelsesbit (NACK), en stoppbit og en res-startbit (Figur 2). Kommunikasjonstrinnene på I2C-grensesnittet er som følger:

  1. Masterenheten utsteder en startbetingelse (startbiten) for å starte kommunikasjon og informere alle slaveenheter om å «lytte» på datalinjen for instruksjoner.
  2. Masterenhetene sender adressen til målslave-enheten samt et R/W-flagg.
  3. Slave-enheten med den samsvarende slaveadressen svarer enten med en bekreftelse (ACK) eller uten bekreftelse (NACK).
  4. Hvis en ACK mottas, fortsetter kommunikasjonen mellom master og slave i enten lese- eller skrivemodus på databussen. Senderen sender 8-bits data til mottakeren, som deretter svarer med en ACK. Når denne kommunikasjonen er fullført, gir masteren en stoppkommando. Hvis en NACK mottas, stanses overføringen og en stoppbit sendes av masteren for å avslutte kommunikasjonen.

I2C som en bølgeform

Startbiten som starter kommunikasjon vises som en høy til lav overgang på SDA mens SCL er høy. Etter dette sender masterenheten ut slaveadressen med en siste R/W-bit. Adressebiter er i 7- eller 10-biters format. R/W-biten er den åttende biten på adressebyten der lav er «skriv» og høy er «lest» i 7-bits adressen. I 10-bits adressen er skrivingen to byte og lesningen er tre byte.

Slaveenhetens bekreftelse (ACK) vil skje på den niende SCL-pulsen der SDA-linjen er lav. SDA-linjen trekkes lavt fordi mottaksenheten sender i dette tilfellet. Imidlertid vil en NACK vises på den niende SCL-pulsen med SDA-linjen fortsatt høy. Dette er fordi slaven ikke klarer å overføre og ikke klarer å trekke dataene linje lav. Etter at kommunikasjonen er fullført, sendes stoppbiten av masteren. Denne stoppbiten er alltid definert som en lav til høy overgang i SDA-linjen mens SCL-linjen er høy.

Figur 2: I2C kommunikasjonsprotokoll.

Fordelene ved å bruke et oscilloskop, logikkanalysator og protokollanalysator for å feilsøke I2C

Evnen til å analysere I2C-grensesnittet med presisjon er avgjørende for maskinvarefeilsøking av innebygde systemer. Oscilloskoper, protokollanalysatorer og logikkanalysatorer er alle verktøy som gir innsikt i de elektriske problemene til enheter med:

  • Fysiske bølgeformer
  • Heksadesimal, ASCII og binær visning av protokolldata
  • Protokollavkoding

Et oscilloskop gjør bølgeformanalyse av I2C-grensesnittet og viser problemer som jitter, støy og signal-til-støy-forhold (SNR). Oscilloskop er utmerket for å se følgende problemer i I2C-bussen:

  • Langsomme stigetider
  • Crosstalk (falske kanter på klokkelinjen)
  • Uvanlig høye spenningsnivåer for SDA i lav tilstand
  • Store underløp

Dette gjør at ingeniører enkelt kan se nøyaktig hvor og hvorfor SDA-linjen kanskje ikke er tilstrekkelig trukket til et lavt eller høyt spenningsnivå. Disse problemene korresponderer ofte direkte med et kretsproblem som utilstrekkelig pull-up-motstand eller svake pulldown-FET-er i I2C-slavene. Crosstalk, på den annen side, indikerer parasittisk kapasitans mellom SDA- og SCL-sporene, mens store underløp (undershoot) avslører en parasittisk induktans på enten en av klokke- eller datalinjene [1].

Dette er imidlertid et lavnivåperspektiv på I2C-kommunikasjon; ingeniører vil ofte måtte dekode meldingene som sendes til flere enheter, noe som kan innebære kjedelige oppgaver som å telle biter manuelt. For å bedre feilsøke kommunikasjon, hjelper det å se det dekodede innholdet i disse pakkene. Det er her protokoll- og logikkanalysatorer har nytte – de lar ingeniøren se dekodede data med pakker som er enkle å tolke, og ikke individuelle bitstrømmer.

Ofte vil ingeniører måtte skifte mellom disse enhetene som dedikerte benk-instrumenter eller velge mellom dem. ADP3450 er et unikt, hyllevare mikset signaloscilloskop med fire høyoppløselige oscilloskopkanaler, to eksterne inngangstriggere og 16 digitale I/O-pinner. Ved å bruke ADP3450 og dets «tilpassede signalskriptverktøy» i Waveforms brukergrensesnitt, kan brukere kjøre og analysere digitalt med en logikk- og protokollanalysator samt raskt forstå kvaliteten på signalet med et høyoppløselig oscilloskop.

Bruk av ADP3450s arbeidsområde for I2C-protokollvisning

Både ADP3450s logikkanalysator og protokollanalysatorer kan brukes i arbeidsområdet for protokollvisning for å utføre følgende oppgaver:

  1. Generer I2C-signaler i protokollanalysatorens tilpassede skriptverktøy
  2. Vis I2C-transaksjonene som heksadesimale verdier med den logiske analysatoren

ADP3450 kan brukes med WaveForms «Protocol»-instrument for å jobbe med kommunikasjonsprotokoller fra I2C og UART til SPI og CAN. Disse transaksjonene kan mottas, overføres eller overvåkes av AD3450 ved å bruke en av de 16 digitale I/O-ene med en samplingshastighet på 100 megasamples per sekund (MS/s). På denne måten kan ADP3450 brukes som en I2C-master- eller slaveenhet. Som en master kan ADP3450 generere transaksjoner som vil indusere ønsket respons fra tilkoblede kretser. Det tilpassede skriptverktøyet lar brukere lage sekvenser av I2C-transaksjoner.

Protokollanalysatoren bruker de samme maskinvareressursene som logikkanalysatoren, slik at disse instrumentene kan brukes samtidig. Den logiske analysatoren kan konfigurere de 16 digitale I/O-kanalene for å fange høye og lave logiske tilstander i I2C-kommunikasjon. Det dekodede innholdet i I2C-pakker vises med dette verktøyet. Dette kan skje på tilkoblede pinner med en samplingshastighet på opptil 125 MS/s med både standard 5V, 3,3V og 1,2V spenninger. De høyere 5V logiske signalene oppnås når kanalene er konfigurert som innganger. Signaltilstander, dekodede bussverdier og dekodede protokoller kan brukes til å utløse en logikkanalysator-fangst. For I2C inkluderer disse protokollutløserne start av overføring, stoppkommando og pakkeinnhold som samsvarer med en verdi.

Denne delen av artikkelen beskriver maskin- og programvareoppsettene som kreves for å kjøre I2C-protokollvisningen.

Maskinvareoppsett

ADP3450 kan kobles til en datamaskin eller bærbar PC via USB for å starte feilsøkingsprosessen. Figur 3 viser det typiske oppsettet for en I2C-forbindelse med to 1 kΩ til 5 kΩ pull-up motstander mellom forsyningen og den serielle klokken og datalinjene. Dette driver signalet høyt med ADP3450s strømforsyning. Ideelt sett bør begge motstandene være 4,7kΩ, men protokollen kan håndtere en rekke verdier i området 1-5kΩ. Motstandene skal kobles mellom strømforsyningen og de to datalinjene.

Figur 3: Maskinvareoppsett for en I2C-tilkobling med ADP3450.

Programvareoppsett

For å laste ned arbeidsområdet i WaveForms, last ned I2C Protocol Viewer Workspace ZIP Archive. Etter å ha åpnet WaveForms, vil vertsprogramvaren generere en melding som ber om å bytte til enheten som brukes med arbeidsområdet. Siden dette er enheten som opprinnelig ble brukt da arbeidsområdet ble opprettet og arkivert, velger du «Nei». Naviger til Settings -> Device i menylinjen øverst i vinduet for å sjekke at den aktive enheten er din Discovery-enhet.

Figur 4: Enhetsbehandling lar deg sjekke at den aktive enheten er Discovery-enheten din.

Klikk på «Open Workspace»-knappen på velkomstfanen og naviger til, og åpne arbeidsområdet «i2c-protocol-viewer» i WaveForms.

Figur 5: Navigér til arbeidsområdet «i2c-protocol-viewer».

Kjøre I2C-protokollvisning

Nå som arbeidsområdet er klart til bruk, kan protokollviseren konfigureres til å kjøre et tilpasset skript. Spenningsutgangen for strømforsyningene er konfigurert for 3,3V uavhengig av enhetene som brukes. For å trekke I2C-linjene høyt, aktiver strømforsyningene ved å klikke på den grønne pilen (Run-knappen) på «Supplies»-fanen. Trykk på «Single»-knappen i Logic-fanen, og trykk deretter på «Execute»-knappen i Protocol-fanen. I Figur 6 viser logikkanalysatoren desimalverdiene til ASCII-kodene for «Hello World!». Ved ganske enkelt å modifisere innholdet i ASCII-matrisen og Skriv-anropets adresseargument, kan forskjellige verdier sendes i en av flere I2C-slaveenheter på samme buss.

Det er viktig å merke seg at protokollanalysatoren må settes i feilsøkingsmodus for å deaktivere protokollanalysatorens mulighet til å motta data. Dette lar brukeren se data gjennom logikkanalysatoren mens han bruker protokollanalysatoren. Men hvis dette arbeidsområdet brukes til å motta data gjennom protokollanalysatoren, må feilsøkingsknappen velges bort.

Figur 6: Skriptredigeringsinstrument funnet i protokollanalysatoren som viser uttrykket «Hello World!» for å kode, konvertere og skrive til adresse (til venstre). Logikkanalysatoren (til høyre) viser desimalverdiene til ASCII-kodene for «Hello World!».

Sluttnotater

ADP3450 kan brukes til å sende, motta og overvåke på I2C-transaksjoner gjennom både Oscilloscope, Protocol Analyzer og Logic Analyzer. Dette gjør ADP til et kraftig verktøy for feilsøking av I2C-kommunikasjon mellom master og flere slaveenheter, eller for å bruke ADP som en masterenhet selv for å kontrollere/sende meldinger til en eller flere slaver.

Analog Discovery PRO 3000-serien er tilgjengelig hos Elfa Distrelec, den autoriserte Digilent-distributøren i Norge.

Referanser

  1. https://www.ti.com/lit/an/slyt770/slyt770.pdf?ts=1646072473489&ref_url=https %253A%252F%252Fwww.google.com%252F
  2. https://digilent.com/reference/test-and-measurement/digital-discovery/i2cprotocol-viewer
  3. https://projects.digilentinc.com/whitney-knitter/getting-started-with-digilent-sanalog- discovery-pro-5f284f
  4. https://digilent.com/reference/test-and-measurement/analog-discovery-pro-3x50/ reference-manual?redirect=1

Siden 2000 har Digilent (et heleid datterselskap av National Instruments) gitt utviklere av innvevde systemer, forskere og studenter kostnadsoptimaliserte produkter, verktøy og applikasjonsinformasjon for innovative, FPGA- og SoC-baserte maskin-/programvaresystemer. Våre tilpassbare og fleksible løsninger vil akselerere utviklingstiden for selv de mest erfarne fagfolkene, samtidig som de opprettholder en lav terskel for avanserte ingeniører, studenter og de evig nysgjerrige.

Fra konkurransedyktige priser til portabiliteten til produktene samt omfattende dokumentasjon, er det viktig for oss å levere tilgjengelighet og senke barrierer for fremgang for våre kunder.

Vi spesialiserer oss primært på Xilinx-baserte FPGA/SoC-utviklingskort/-sett og bærbare USB-test- og måleenheter, alt designet for å eies av og brukes fra en ingeniørs eller students skrivebord. Vi tilbyr også en rekke utvidelsesmoduler (Pmods og Zmods) for å skape fleksible I/O-alternativer for våre andre produkter.

Besøk gjerne Digilents stand Hall 3A-337 på Embedded World!

Powered by Labrador CMS