I2C-tiny-usb er en open source / open hardware projekt.
Vedhæft en I2C klient chip (termo sensorer, AD konverter, displays, relais chauffør, ...) til din PC via USB ... hurtigt, nemt og billigt! Drivere til Linux, Windows og MacOS kan findes.
I2C-tiny-usb-projektet er en open source / open hardware projekt. Målet med I2C-tiny-usb er at give en billig generisk i2c interface til vedlægges usb. Det er ment som en erstatning for dem, enkel og billig printer port til I2C adaptere. En USB opløsning har flere fordele inkl. den indbyggede strømforsyning og et mere fremtidssikret interface.
Desuden kræves der ingen cpu intense bit-banging på værten side. Denne USB løsning kræver endnu færre dele end nogle printer port løsninger.
Mens I2C-tiny-usb blev udviklet under og til Linux det fungerer også under Windows og MacOS X. A vinduer demo driver og demo ansøgning er medtaget for at få dig i gang med det samme.
I2C-tiny-usb-projektet er baseret på:
Linux USB projektet og Linux i2c implementering
Windows-driveren og test ansøgning er baseret på libusb-win32
AVR-USB, en ren software implementering af USB til AVR-platformen
USBtiny, anden software usb implementering for AVR
Hardwaren i I2C-tiny-USB-interface består af Atmel AVR ATtiny45 CPU, en billig og let at opnå microcontroller med 4 KBytes flash (hvoraf ~ 2k er anvendt i denne ansøgning), og 256 bytes RAM. Processoren er omgivet af nogle andre dele.
USB-interface
USB interface på I2C-tiny-USB-interface er baseret på en ren software implementering og bruger to stifter af AVR (PB0 og PB2). Denne software implementering understøtter lav USB hastighed kun som signaleres til pc'en ved hjælp af modstanden R1.
I2C interface er implementeret ved anvendelse af en bit-banging tilgang. Hardwaren støttet twi grænsefladen af attiny45 er bundet til hardware pins på chip, der er nødvendige for USB drift og kan derfor ikke bruges til I2C. Den bit-banging I2C-interface der bruges i stedet måske ikke helt I2C kompatible og dermed ikke alle I2C klient chip vil fungere korrekt på denne bus. Der er ikke blevet rapporteret hidtil. I2C-tiny-usb giver et software justerbar i2c ur forsinkelse gør det muligt at konfigurere i2c ur. Standard forsinkelse er 10US. På grund af yderligere forsinkelser i i2c bit-banging kode resulterer dette i en I2C ur på omkring 50kHz.
For enkelthedens skyld alle USB overførsler gøres via kontrol endpoint. Siden avr usb biblioteket kun ikke understøtter enheder lav hastighed det kan ikke bruge store overførsler, der er angivet for kun enheder høj og fuld hastighed. enheder Lav hastighed støtte såkaldte overførsler interrupt, som er begrænset til en forudindstillet båndbredde, mens overførsler kontrol kan bruge enhver fri båndbredde (hvis der er nogen overhovedet).
Enheden bruger derfor overføres styring for hele sin meddelelse. Dette kræver nogle yderligere begrænsning for at forhindre flere driversoftware (fx kernen driveren og libusb baseret test programmet) for at få adgang til enheden på samme tid. Under Linux dette kan opnås ved at vælge bestemte adgang anmodningstyper. Denne form for adgangskontrol er måske ikke muligt under andre operativsystemer.
Strømforbrug
Hele indretningen er en såkaldt bus baserede enhed. Dette betyder, at hele anordningen får strøm direkte fra USB. Derfor AVR og en eller flere I2C klient chips er strøm fra USB VBUS signal.
Adapteren selv trækker mindre end 10mA og rapporter dette til værten via USB deskriptorer. Indretningen er i stand til at strøm I2C klient chips samt. Men da disse chips varierer i strømforbruget er det ikke muligt at inkludere deres krav i enheden deskriptorer korrekt. Det er dit ansvar at holde øje med den samlede strømforsyning og især for at sikre, at hele enheden ikke overstiger den samlede USB grænse på 500mA.
Det er planlagt til fremtidige firmware-versioner til at gøre den rapporterede strømforbrug software konfigureres så værdien nemt kan vedtages til de reelle magt krav til hele enheden.
kernel driver
I2C-tiny-USB er beregnet til at blive brugt med Linux. Den leveres med en Linux-kernen driver, der bygger bro mellem USB og I2C delsystemer i Linux-kernen. Føreren lægger derefter til USB-enheden og gøre i2c bus til rådighed for i2c delsystem. Således hele opsætningen er transparent for klient applikationer som rammen lm_sensors og der kræves ingen særlige klient chip drivere. I stedet førere, der allerede er til stede i Linux-kernen bruges med I2C-tiny-usb som godt. Med f.eks de ds1621 temperaturfølere anvendt i prototypen outputtet af sensorer kan for eksempel se sådan ud:
ds1621-I2C-2-48
Adapter: I2C-tiny-usb på bus 003 enhed 017
temp: 21,50
Software detaljer:
Version: 2009-02-10 Opdateret
Upload dato: 7 Mar 16
Licens: Gratis
Popularitet: 114
Kommentarer ikke fundet