Hållkrets för i2c SCL?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
Telder
Inlägg: 15
Blev medlem: 23 juni 2013, 00:37:31

Hållkrets för i2c SCL?

Inlägg av Telder »

Jag försöker spionera på i2c-bussen med en ESP8266. Men den är lite för långsam ibland, så jag önskar mig en 'klocksträckningspryttel'.
Alltså, nån typ av 3.3V-logik som styrs av en pinne på ESPn och som kopplas till SCL med en pinne.
Önskad funktion är att så fort SCL går låg så ska kretsen hålla den kvar låg. Sen när ESP väl har hunnit kika på datan så togglar den styrpinnen och kretsen 'släpper'.
Trafiken jag kikar på går på ca 100kHz, så kretsen måste reagera på mindre än 5us.

Finns det någon enkel lösning? Kanske frågan varit uppe förut?
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hållkrets för i2c SCL?

Inlägg av TomasL »

Vad menar du, hålla klockan låg, då kommer det ju inga data.
ESPen är väl en WiFi modul, om jag fattat det hela rätt.
Använd en logiksimulator eller något liknande.
Ett Oscilloscop kan också fungera.
En BusPirate bör också kunna fixa det du behöver
Telder
Inlägg: 15
Blev medlem: 23 juni 2013, 00:37:31

Re: Hållkrets för i2c SCL?

Inlägg av Telder »

Tack för svaret. Jo, precis, jag vill hålla kvar klockan låg med nån logik eller transistorgrej till ESP 'har tid' att läsa av SDA. Sen ska ESP mha styrpinnen 'overrida' kretsen så kommunikationen kan fortsätta en bit till.

Steg ett är att kunna läsa av i2c. Steg två skulle kunna vara att manipulera datan som sänds. :twisted:
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hållkrets för i2c SCL?

Inlägg av TomasL »

Kommer inte att fungera. Då slaven inte kommer att kunna tolka vad som sänds, utan indikerar fel, och mastern sänder om troligen.

Du kan som sagt använda en logikanalysator, Oscilloscop, Arduino, BusPirate eller liknande.

BusPirate är ett användbart litet verktyg, och kan göra många saker, till en synnerligen låg kostnad.
http://dangerousprototypes.com/docs/Bus_Pirate
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Hållkrets för i2c SCL?

Inlägg av Micke_s »

Lyssna på två pinnar i 400khz borde en ESP8266 klara.

Annars om du tar en arduino så finns https://github.com/gillham/logic_analyzer
Har jag använt någon gång om man inte har något annat än en arduino hemma..
Den koden klarar 4Mhz sampling...

Går säkert att skriva om så det går att köra på en ESP8266 också...

Annan variant på ESP8266..
http://www.instructables.com/id/Arduino ... ogic-Anal/
https://bitbucket.org/OscarAcena/esp-logizer/src
Telder
Inlägg: 15
Blev medlem: 23 juni 2013, 00:37:31

Re: Hållkrets för i2c SCL?

Inlägg av Telder »

Tyvärr hinner inte ESP8266 alltid med, trots att jag har optimerat koden så mycket jag kan och kört den i 160MHz. Det funkar till, säg, 95%. Jag har provat både att använda interrupt och att polla i loop()-en. Fördröjningen med en hållkrets är inget problem, Mastern upplever en clock-stretching från slaven och slaven får vackert vänta på nästa klockpuls. Nån millisekund är inget problem. Jag har logikanalysator för att kika på vad som sänds, det är inte problemet. Det jag jag behöver för att komma vidare är nog en hållkrets.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14850
Blev medlem: 16 april 2006, 17:04:10

Re: Hållkrets för i2c SCL?

Inlägg av mrfrenzy »

Hur ser koden ut? Finner det mycket konstigt att en krets som klarar 2.4GHz wifi inte skulle klara i2c.
Telder
Inlägg: 15
Blev medlem: 23 juni 2013, 00:37:31

Re: Hållkrets för i2c SCL?

Inlägg av Telder »

Det blir svårt att klippa ut kod på ett sånt sätt så det blir läsbart eller ens testbart.
Att processorn klarar av att hantera wifi (dock behöver den inte bekymra sig om 2.4GHz) är troligtvis anledningen till att den IBLAND inte hinner med att inom 5us:
1 detektera att en pinne går låg
2 lägga undan det den håller på med
3 ändra pinnen från ingång till utgång och sätta den låg.
Anledningen till att jag programvarumässigt tvingat den låg är att jag vill ha tid att behandla informationen.

Fast det jag ville ha hjälp med, är en (helst enkel) hårdvara...
Skriv svar