Kan man emulera I2C med GPIO?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Kan man emulera I2C med GPIO?

Inlägg av hanzibal »

Hej!

Någon som vet om det går (och i så fall hur) att emulera en I2C master med 2 eller fler vanliga I/O-pinnar?

Tror att det ibland kallas "soft I2C".

Förenklat kan man säga att jag har en MCU utan I2C i hårdvara och det finns heller ingen möjlighet till "open collector"-konfig på pinnarna utan det är antingen in eller ut som gäller. Det bästa vore om det gick att göra helt utan extern hårdvara som trissor, dioder och sådant.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Kan man emulera I2C med GPIO?

Inlägg av thepirateboy »

Ja det går bra att göra, har gjort det i många projekt. Det svåra är väl att hålla koll läsning/skrivning, dvs. sätta porten som in när man ska läsa ack till exempel.
Finns också en del timing att hålla koll på, det bästa är att avaktivera alla interrupt när man läser/skriver mjukvaru I2C för att undvika att något "stör".
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Kan man emulera I2C med GPIO?

Inlägg av hanzibal »

Ok, så man måste konfa om pinnen som in resp. ut "dynamiskt" allt eftersom då alltså?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan man emulera I2C med GPIO?

Inlägg av sodjan »

> och det finns heller ingen möjlighet till "open collector"-konfig på pinnarna

Du kan ju simulera det också genom att sätta utgången "låg", använda
en extern pull-up och sedan använda biten som switchar mellan
in/utgång som "data" pinne, utgång=låg, ingång=hög.

Sedan så är ju I2C som sagt dubbelriktad så du måste hålla reda på
när du ska skriva resp läsa.

Sen så kan man även fundera på att byta till en processor som
klarar det man vill göra direkt... :-)
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Re: Kan man emulera I2C med GPIO?

Inlägg av thepirateboy »

hanzibal skrev:Ok, så man måste konfa om pinnen som in resp. ut "dynamiskt" allt eftersom då alltså?
Ja, precis och som sodjan skriver räcker det med att ändra porten mellan in/utgång.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Kan man emulera I2C med GPIO?

Inlägg av hanzibal »

Hade gärna bytt MCU men kan inte i detta fall. Ett annat problem är att konfig in/ut endast finns i form av powerup-konfig och lagras därför i flash som slits ut om jag konfar om för mycket.

Frågan är om det går under dessa omständigheter?

Soft SPI var inga problem, det är ju mkt enklare och pinnarna är enkelriktade.
Användarvisningsbild
kimmen
Inlägg: 2042
Blev medlem: 25 augusti 2007, 16:53:51
Ort: Stockholm (Kista)

Re: Kan man emulera I2C med GPIO?

Inlägg av kimmen »

Du skulle ju kunna ta två pinnar som ingångar och låta dem titta på bussens signaler. Sedan med hjälp av två utgångar styrande NPN eller NMOS-transistorer skulle det gå att skicka ut data på bussen. Så totalt fyra pinnar då.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan man emulera I2C med GPIO?

Inlägg av sodjan »

> Hade gärna bytt MCU men kan inte i detta fall.

Det låter som att du ändå borde göra det.
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Kan man emulera I2C med GPIO?

Inlägg av hanzibal »

I Would if I could men kan inte, går inte.

Även nämnd extern h/w måste undvikas så jag är nog körd, men det är ok för då vet jag i alla fall vad som gäller (misstänkte detta).

Tackar för alla svar!
ToPNoTCH
Inlägg: 5151
Blev medlem: 21 december 2009, 17:59:48

Re: Kan man emulera I2C med GPIO?

Inlägg av ToPNoTCH »

sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Kan man emulera I2C med GPIO?

Inlägg av sodjan »

Så alternativet är alltså att skrota hela projektet?
Ja så kan det ju vara ibland... :-)
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Kan man emulera I2C med GPIO?

Inlägg av hanzibal »

Tackar, dylika har jag men de står ju i konflikt med kriteriet "ingen extern h/w".

Fast, jag lär nog bli så illa tvungen vad det lider, annars går jag miste om alldeles för många balla chip/moduler som mitt lilla I/O-kort kan snacka med:

http://www.peekypokey.org/

Håller just nu på med att jobba fram fler enkla och roliga exempel på saker man kan göra och leka med. En del rätt coola chip/moduler kör ju bara I2C...därav mina undringar.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Re: Kan man emulera I2C med GPIO?

Inlägg av Kaggen »

Vet inte riktigt vad som menas med "ingen extern hårdvara". I de flesta moderna uC har du i2c, spi, usart inbyggt i microcontrollern. Det sitter alltså i samma krets. Dock utanför själva CPU kärnan, men det är ju fortfarande bara "ett" chip.

Dock kan jag ha missförstått frågan.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Kan man emulera I2C med GPIO?

Inlägg av Swech »

Det kan vara en FPGA soft processor eller liknande som det handlar om.

Swech
Användarvisningsbild
hanzibal
EF Sponsor
Inlägg: 2499
Blev medlem: 7 september 2010, 20:54:58
Ort: Malmö/Lund

Re: Kan man emulera I2C med GPIO?

Inlägg av hanzibal »

Det är för USB-kortet jag länkade till. Med "extern hårdvara" menar jag i sammanhanget sånt (t.ex en transistor) som ev. krävs för att kortet skall kunna prata med en viss annan pryl/modul/chip.
Senast redigerad av hanzibal 22 augusti 2013, 07:57:18, redigerad totalt 1 gång.
Skriv svar