I2C-Serial [klart mars 2009]
Det här projektet byggde jag ihop när jag behövde snacka med en I2C-krets från en dator som bara har USB-portar. Iden är i grunden mycket enkel. Jag hängde på två transistorer (med bas-motstånd) på två kontroll-linjer som går ut från USB till serie-adaptern. Sen läser jag av statusen på I2C-linjerna med två status-ingångar till adaptern.
Överförings-hastigheten är inte särskillt hög, eftersom man bit-bangar I2C-protokollet över några anslutningar på USB-till-serieomvandlaren, men hastigheten duger för enkelt testande.
Schema
Schemat är precis hur enkelt som helst. Det enda som krävs är en USB till serie-omvandlare som har utgångarna DTR, DSR, RTS, samt CTS. Sen lägger man på seriemotstånd till transistorerna som drar bussen låg när USB-modulen skickar ut höga nivåer. För säkerhets skull satte jag serie-motstånd på ingångarna till USB-modulen också, även om det egentligen inte hade behövts. Inga komponenters värden är särskilt kritiska, jag tog bara de första jag hittade i mina lådor.
I schemat har jag inte heller ritat ut pull-upp-motstånd på I2C-bussen, sitter det inga sådana på det kretskort man kopplar in sig på, så får man sätta dit några. Pull-upp på 4k7 passar för 5V-kretsar som inte kör extremt snabt, eller har extremt hög last-kapacitans
Mjukvara
Jag skrev några enkla rutiner för att bit-banga I2C för ett projekt med en egen AD-omvandlare kopplad till en billig våg. Källkoden för det projektet finns här. Notera att det är ett mycket "rått" bibliotek, men det har varit väldigt användbart för mig ändå.
Du ansvarar själv för risken att skada dig själv/andra/saker/datorer/eller annat!