Stap 14: Inleiding tot de VS1033D
VS1033D productpagina: http://www.vlsi.fi/en/products/vs1033.html
SparkFun breakout board: http://www.sparkfun.com/products/8792
Datasheet: http://www.vlsi.fi/fileadmin/datasheets/vlsi/vs1033d.pdf
De SparkFun breakout board heeft al de aanbevolen externe circuits voor de kale VS1033D-chip, als u niet dit breakout board, gebruikt u zal moet implementeren de aanbevolen externe circuits jezelf, waarin je moet achterhalen door het lezen van het gegevensblad. Maar ik zal niet tonen u hoe dat te doen, mijn bedradingsschema leert u met behulp van de breakout board. Als u een kijkje op de SparkFun VS1033D breakout board schema nemen, kunt u vergelijkingen tussen de aanbevolen schema's binnen het gegevensblad en de breakout board.
Deze chip heeft twee SPI interfaces, een voor opdrachten en instellingen (kloksnelheid, volume, etc) genoemd SCI, de andere voor het streamen van audiogegevens SDI genoemd. Zowel SPI bussen SPI-modus 0 (CPOL en CPHA beide 0, hetzelfde als onze SD-kaart, die goed is) gebruiken, zin de klok begint laag en laat laag, en de gegevens op de stijgende rand wordt gelezen. Er is een actieve laag chip select voor beide interfaces (CS voor SCI en DCS voor SDI, de DCS-pin is een afkorting voor BSYNC soms). Met de 12.288 MHz kristal geboden op de breakout board, mag de kloksnelheid van uw SPI niet meer dan 2 MHz (dus... we moeten vertragen de SPI klok voordat gegevens worden verzonden naar de VS1033D, en verhogen het terug tot 4 MHz na, omdat de SD-kaart maakt gebruik van SPI klok van 4 MHz en we moeten de SD-kaart te snel).
(Let op, dit is gesneden uit http://www.frank-zhao.com/cache/mp3_decoder.htm , die mijn eigen website is)
Alle opdrachten, van leest / schrijft naar VS1033D interne registers worden gedaan via de SCI-interface.
U moet lezen het gegevensblad te begrijpen de verschillende commando's en dergelijke, kunt u dit doen.
De enige gegevens die wordt verzonden via de SDI-interface is de inhoud van het bestand van een lied. We hoeven niet te verzenden via de bestandsnaam, de gegevens binnen een song al identificerende informatie bevat zodat de VS1033D altijd weet welk bestandsformaat we sturen, die één minder ding die wij nood voor kopzorg zowat. Ook de VS1033D gewoon negeren die gegevens en vragen voor meer gegevens, dit betekent dat zelfs als we via een beschadigd bestand verzenden ongeldige gegevens verzenden zal veroorzaken, de VS1033D is not gonna freak out, of bevriezen.
Er is een interne decoder FIFO (eerst in first-out) buffer binnen de VS1033D. De pin "DREQ" is de gegevens verzoek pin, en als het hoog is, betekent dit dat wij zijn toegestaan voor het verzenden van meer dan 32 bytes van songdata.
Het gegevensblad zal spreken over een VS1002-modus en de wijze van de verenigbaarheid van een VS1001. Dit is omdat de VS1002, en hun chips na de VS1002 (met inbegrip van de VS1033) kwam na de VS1001, maar kunnen worden geconfigureerd om compatibel met de VS1001. Dit kan worden geconfigureerd met de "MODE"-register, maar we zijn steken met de nieuwere modus.
Ook kunnen de twee interfaces van SPI, SDI en SCI, delen de zelfde chip select. Deze optie kan worden ingeschakeld in het register van de "MODE". We deze functie niet gebruiken, want we een extra chip hebben select van de MicroSD-kaart te verzorgen.
Volgens de shematics van de VS1033D breakout board van SparkFUn is het kristal gebruikt 12.288 MHz. De "CLOCKF" registreren moet worden ingesteld op 0x9000 volgens het gegevensblad. Het gegevensblad heeft meer informatie over deze instelling. In mijn eigen code, it's 0xF800 ter ondersteuning van de WMA- en AAC-decodering.
Er zijn verschillende efficiënte manieren om te bepalen hoe lang een liedje is en de huidige positie in de song we spelen. Met efficiënte, bedoel ik dat we niet moeten daadwerkelijk het lezen van de inhoud van het lied. Het gegevensblad zegt "SCI_DECODE_TIME" slaat de tijd die is gespeeld in seconden, eenvoudig genoeg. Het gegevensblad details ook "SCI_HDAT0" en "SCI_HDAT1", dat de huidige bestandstype en bit-rate bevatten zal, en als we weten de bit rate en de totale bestandsgrootte (die we doen, FatFs vertelt ons), dan kunnen we eenvoudig berekenen van de totale grootte van een lied.
Volume is geregeld via de "SCI_VOL"-register. De meest signi? cant byte van het volume register regelt het volume van het linker kanaal, het lage deel bepaalt het volume van het rechterkanaal. Meestal, volume is een logaritmische waarde (een lineaire verhoging van een Golf amplitude is niet hetzelfde als een lineaire verhoging van het volume geproduceerd), en we willen niet logaritmische wiskunde op een kleine microcontroller te doen, maar de VS1033D zorgt ervoor dat dit voor ons. Het kanaal volumesets de demping van het hoogste volumeniveau in stappen van 0,5 dB. Sinds de wijziging in decibel stappen is, betekent het dat de VS1033D zorgde voor de wiskunde voor ons. Het maximale volume is 0x0000 en totale stilte is 0xFEFE, omdat "verzachten" betekent "lager".
De algemene initialisatie sequentie voor het VS1033D is als volgt:
1. reset
2. Stel de "MODE" Registreer zodat we geen gebruik van de wijze van de verenigbaarheid van de VS1001 maakt en we zijn niet het delen van chip kies tussen SDI en SCI
3. Stel de juiste kloksnelheid met behulp van de "CLOCKF" register
4. Stel het volume, dit is optioneel, maar wij willen herinneren de eerdere instellingen van de gebruiker
De bedrading voor de demonstratie van dit voorbeeld is ingewikkelder en moet u ook kabellengte tot de SD-kaart. Compile-upload-run het voorbeeld dat ik heb verstrekt. Het moet alle bestanden op uw SD-kaart spelen bij max volume. Gelieve te lezen de broncode om te begrijpen van de API die ik heb gemaakt en wat er gaande is. De seriële poort van debug zal eenvoudige boodschappen ook weergeven
Ik heb ook verstrekt de logic analyzer bestanden, waaruit blijkt dat wanneer ik welke gegevens sturen waar. Soort belangrijk. U kunt de opdrachten dat ik de VS1033D tot de opdrachten in het gegevensblad verzenden en vinden waar stuur ik ze in mijn code overeen.
Ik kan niet het rauwe logic analyzer golfvorm sessiebestand ditmaal hecht omdat het te groot. Het opgenomen in de. ZIP pakket in plaats daarvan
Deze demo zal gewoon alle bestanden op de rootdirectory van de SD-kaart spelen op maximaal volume.