I2C-tiny-usb is een open source / geopend hardware project.
Plak er geen I2C-client chip (thermo-sensoren, AD-omzetter, displays, relais chauffeur, ...) op uw PC via USB ... snel, eenvoudig en goedkoop! Drivers voor Linux, Windows en MacOS beschikbaar.
De I2C-tiny-usb-project is een open source / geopend hardware project. Het doel van i2c-kleine-USB is goedkoop generieke I2C interface worden aangesloten op de USB verschaffen. Het is bedoeld als vervanging voor de eenvoudige en goedkope printerpoort I2C adapters. Een USB oplossing heeft verschillende voordelen incl. de ingebouwde voeding en een meer toekomstbestendig interface.
Verder geen cpu intense bitbanging is vereist op de host-zijde. Deze USB-oplossing vereist nog minder onderdelen dan sommige printerpoort oplossingen.
Terwijl de I2C-tiny-usb werd ontwikkeld in het kader en voor Linux werkt ook onder Windows en MacOS X. Een Windows-demo bestuurder en de demo applicatie is opgenomen om u onmiddellijk begonnen.
De I2C-tiny-usb-project is gebaseerd op:
De Linux USB-project en de Linux I2C implementatie
De ramen bestuurder en test applicatie is gebaseerd op de libusb-win32
AVR-USB, een pure software-implementatie van USB voor het AVR platform
USBtiny, een andere software usb implementatie voor de AVR
De hardware van de I2C-kleine-USB-interface bestaat uit de Atmel AVR ATtiny45 CPU, een goedkoop en gemakkelijk te verkrijgen microcontroller met 4 Kbytes flash (waarvan ~ 2k worden in deze aanvrage) en 256 bytes RAM. De processor is omgeven door enkele andere onderdelen.
De USB-interface
De USB-interface van de i2c-tiny-usb-interface is gebaseerd op een pure software-implementatie en maakt gebruik van twee pennen van de AVR (PB0 en PB2). Deze software-implementatie ondersteunt alleen lage snelheid USB die wordt aan de PC door de weerstand R1.
De I2C interface is geïmplementeerd met een bitbanging benadering. De hardware die twi grensvlak van de attiny45 gebonden hardware kunnen op de chip die nodig zijn voor USB-bedrijf en kan dus niet worden gebruikt voor I2C. De bitbanging I2C-interface wordt gebruikt in plaats niet volledig I2C compatibel zijn en dus niet elke I2C-client chip kan goed functioneren in deze bus. Er zijn geen onverenigbaarheden tot nu toe gemeld. De I2C-tiny-usb levert een software instelbare I2C klok vertraging mogelijk maakt om de I2C klok configureren. De standaard vertraging 10US. Door extra vertraging bij de I2C bitbanging code resulteert in een I2C klok van ongeveer 50kHz.
Voor de eenvoud redenen alle USB-transfers worden gedaan via de controle eindpunt. Omdat de avr usb bibliotheek niet alleen ondersteuning voor lage snelheid apparaten kan het niet gebruiken bulkoverdrachten die zijn opgegeven voor alleen hoge en volle snelheid apparaten. Lage snelheid apparaten ondersteunen zogenaamde interrupt transfers die beperkt zijn tot een vooraf ingestelde bandbreedte terwijl controle transfers elk vrij bandbreedte kan gebruiken (als er een helemaal niet).
Het apparaat maakt gebruik daarom controle transfers voor al haar communicatie. Dit vereist enige extra beperking meerdere stuurprogramma voorkomen (bijvoorbeeld de kernel driver en libusb gebaseerde test applicatie) om het apparaat tegelijkertijd. Onder Linux kan dit worden bereikt door het selecteren van bepaalde soorten toegang aanvraag. Deze vorm van controle op de toegang mag niet onder andere besturingssystemen mogelijk.
Energieverbruik
De gehele inrichting is een zogenaamde gevoed via de bus. Dit betekent dat het volledige apparaat rechtstreeks wordt gevoed door USB. Dus de AVR en één of meer client I2C chips worden gevoed vanuit de USB VBUS signaal.
De adapter zelf trekt minder dan 10 mA en rapporteert deze aan de host via de USB-descriptors. Het apparaat is in staat om de macht I2C-client chips ook. Maar aangezien deze chips variëren energieverbruik is het niet mogelijk om de eisen in de inrichting correct descriptoren omvatten. Het is uw verantwoordelijkheid om een oogje op de totale voeding te houden en in het bijzonder om ervoor te zorgen dat de gehele inrichting de totale USB limiet van 500mA niet overschrijdt.
Het is gepland voor toekomstige firmwareversies van de over het stroomverbruik software configureerbaar te maken, zodat de waarde makkelijk om de echte kracht eisen van de gehele inrichting kan worden aangenomen.
kerneldriver
I2C-klein-USB is bedoeld voor gebruik met Linux. Het wordt geleverd met een Linux kernel driver die een brug tussen de USB en I2C subsystemen in de Linux-kernel. De bestuurder hecht vervolgens naar het USB-apparaat en maak de I2C-bus ter beschikking van het subsysteem I2C. Dus de hele setup is transparant voor client applicaties, zoals de lm_sensors kader en geen speciale client chip stuurprogramma's nodig. In plaats daarvan de drivers al aanwezig in de linux kernel worden gebruikt met de I2C-tiny-usb ook. Met bijv. de DS1621 temperatuursensoren die in het prototype de output van sensoren kan b.v. er uitzien als dit:
DS1621-I2C-2-48
Adapter: I2C-tiny-usb op bus 003 apparaat 017
temp: 21,50
Software informatie:
Versie: 2009-02-10 Bijgewerkt
Upload datum: 7 Mar 16
Licentie: Gratis
Populariteit: 114
Reacties niet gevonden