Schakeling: Card Sound-audioplayer
op
Maar dit audio-spelerproject gaat veel verder dan alleen een simpele speler. Het kan net zo goed dienen als basis voor een hoogwaardige deurbel, een muzikale wekker of zelfs als veelzijdige geluidsmodule voor schaalmodellen, compleet met twee onafhankelijke luidsprekeruitgangen.
De schakeling
Bekijk het schema en volg de stroom van audiodata vanaf de microSD-kaart in de houder. De kaart communiceert met de microcontroller via een SDIO-interface, die snelle tweerichtingsdataoverdracht mogelijk maakt. Door meerdere datalijnen parallel te gebruiken haalt deze interface een hogere doorvoersnelheid dan de eenvoudigere 1-bit modus. Pull-up weerstanden zorgen voor een betrouwbare werking van de communicatielijnen.
“De audiodata op de SD-kaart wordt in de STM32F401 controller (ST Microelectronics met een Cortex M4-kern) volgens gebruikersinstructies omgezet in PCM-signalen (pulse code modulation) en uitgegeven aan de I²S-bus – een speciale interface voor seriële digitale signalen ontwikkeld door Philips. Deze bus bevat een bit-kloklijn (CK), een data-lijn (SD) en een omschakellijn tussen linker- en rechterkanaal (LRCK). Daarnaast hebben we een Master Clock-lijn (MCK) die niet bij de I²S-specificatie hoort. De vaste verhouding MCK = 256 × LRCK is gedefinieerd door IC2.”
Audio-speler software
De software is geschreven in C, met gebruik van de zogenaamde CMSIS- en FatFS-bibliotheken. Bezoek de projectpagina voor meer info. De meeste bestanden zijn gegenereerd met het configuratieprogramma STM32CubeF4, wat grotendeels voorkomt dat je de referentiehandleiding van de STM32F401 hoeft te bestuderen.“In dit project heeft de applicatie het bestand main.c als startpunt,” legde de ontwikkelaar uit. “De audio-uitvoer is geïmplementeerd in het bestand waveplayer.c: een databuffer wordt via DMA over de I²S-bus naar de D/A-converter IC5 gestuurd. Wanneer de helft van de buffer is overgedragen, worden de PCM-gegevens voor het volgende WAV-bestand in de andere helft geschreven. Daarbij voegen we een dynamische volumematching in door eenvoudige vermenigvuldiging, met behulp van de zogenaamde Floating Point Unit (FPU). De ‘fade out’-functie gebruikt dit ook. Het eindresultaat is een naadloze I²S-datastroom, waardoor extra rekenkracht beschikbaar blijft voor je eigen toepassingen of toekomstige uitbreidingen (bijvoorbeeld een loudness-functie). De rest van de bestanden zijn grotendeels extra’s met speciale subfuncties.”
Natuurlijk bevat het originele Elektor-artikel nog veel meer details.
Meer over de Card Sound audio speler
Het originele artikel “Card Sound” verscheen in Elektor januari/februari 2018. Je kunt het artikel lezen – gratis gedurende de twee weken na de publicatie van dit nieuwsbericht. Als je een schakeling maakt, denk er dan aan om je voortgang te delen op het Elektor Labs platform!Redactionele noot: Dit artikel verscheen voor het eerst in 2018. Gezien de leeftijd van het project zijn sommige onderdelen of producten mogelijk niet meer verkrijgbaar, en de belangrijkste ontwerptechnieken kunnen verouderd lijken. Toch denken we dat dit project je zal inspireren om in de toekomst nieuwe ontwerpen te starten.

Discussie (0 opmerking(en))