Stap 6: USB-massaopslag met MicroSD
Dan, om te begrijpen van USB massa-opslag
http://en.wikipedia.org/wiki/USB_mass-storage_device_class
http://en.wikipedia.org/wiki/SCSI
http://en.wikipedia.org/wiki/USB_Attached_SCSI
Is wat ik nodig heb om te begrijpen hoe de computer bepaalt wat voor soort apparaat is aangesloten (dus begrijpen USB descriptoren), en dan begrijpen dat de computer SCSI-commando's via USB aan de microcontroller uitgeven zal, en de microcontroller deze SCSI-opdrachten uit te voeren zal door te communiceren met de SD-kaart. SCSI werkt direct op de ruwe geheugen van de SD-kaart, zonder zorgen te maken over het bestandssysteem. Het geeft niet om bestanden, slechts bytes.
---------------------------------------------------------------------------------------------------------
De AT90USB1286 is in staat full speed USB (geen hoge snelheid! Houd dit in gedachten, zoals bestand overdrachtsnelheden niet de beste zullen, plus onze Teensy alleen op 8 MHz draait en de SPI klok ligt op slechts 4 MHz). Voor het gebruik van de ingebouwde USB, hebben we een paar keuzes. Handmatig programma een stack van de USB-C, of gebruik de USB stack code die door Atmel gebruik LUFA (lichtgewicht USB kader voor AVR's).
Zullen we gebruik maken van LUFA (versie 101122 op het moment van mij het schrijven van dit), het is open bron en het is ontwerp specifiek voor deze bijzondere familie van AVR microcontrollers.
http://www.fourwalledcubicle.com/LUFA.php
Download en ontdek LUFA van code, documentatie en voorbeelden.
Wij zullen gebruik maken van de de demonstratie van de massaopslag opgenomen in de LUFA-distributie. Die bijzondere demo gebruikt echter een dataflash IC in plaats van de SD-kaart. Dus is hier een voorbeeld van elastische schapen die gebruik maakt van SD-kaarten:
http://elasticsheep.com/2010/04/teensy2-USB-Mass-Storage-with-an-SD-Card/
MAAR WACHT DAAR IS MEER! Ik heb de bestanden uit de bovenstaande link om te werken met de Teensy ++ gewijzigd en bijgewerkt voor het gebruik van LUFA versie 101122. Zie bijgevoegde voorbeeld pakket. Zoals gebruikelijk, eenvoudig compileren en uploaden van de code. Ik heb ook een volledige beschrijving van het USB-apparaat van een USB-verkeer analyzer gedumpt opgenomen binnen het pakket. Als dit werkte, dan u hebben effectief net gebouwd een SD-kaartlezer uit een Teensy ++, congrats.
De bestanden sd_raw.c en .h zijn er om te communiceren rechtstreeks met de SD-kaart. SDCardManager is er om SCSI voor toegang tot de SD-kaart op een manier die SCSI zonder zorgen wat voor soort geheugen te kan werken is het werken met (abstractie, SCSI is hoger niveau). MassStorage behandelt de meeste USB-massa-opslag apparaat functionaliteit en SCSI gebruikt volgens de commando's ontvangen van de computer.