Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


playground:playground

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
playground:playground [2016/01/17 15:21]
Jan Dvořák
playground:playground [2017/12/29 13:59] (aktuální)
Petr Skryja
Řádek 1: Řádek 1:
  
 +====== Zadání ======
 +
 +
 +
 +Sestavte zvukové rozhraní pro počítač pomocí procesoru STM32. Použijte knihovny pro třídu „USB Device Class for Audio Devices“. Implementujte zvukový výstup z PC vč. ovládání hlasitosti na vývojové desce STM32F4DISCOVERY. Doplňte o vstup z integrovaného MEMS mikrofonu. Projekt ve spolupráci s Audified
 ---- ----
-====== Interciální snímače na kitu STM32F3DISCOVERY ====== 
  
-==== Zadání projektu ​====+====== Úvod ======
  
-Pomocí kitu STM32F3DISCOVERY s integrovaným akcelerometrem (LSM303DLHC) a gyroskopem (L3GD20) ​vytvořte software pro obsluhu těchto dvou inerciálních snímačů. Dále implementujte kód obsluhující ukládání naměřených veličin na SD kartu s íslušným souborovým systémem.+Cílem tohoto projektu je vytvořit software ​a jednoduchý hardware ​pro zvolenou vývojovou desku, aby po připojení USB konektou k počítači, bylo toto zařízení identifikováno jako Audio Device a bylo přiřazeno jako zařízení pro audio vstup i výstup. Dále bude možné pomocí hardwarového tlačítka na desce možné zvolit funkci Mute pro úplné zeslabení výstupní hlasitosti odposlechu. Pomocí potenciometru bude možné měnit hlasitost odposlechu. Z pinu číslo 21 na desce bude odebíráno referenční napětí, které bude předřadným odporem omezeno na maximální bezpečné napětí pro AD převodníky desky a otáčením potenciometru bude regulováno napetí přivedené ​na vstup AD evodníku 
 +----
  
-==== Teoretický úvod ====+====== Vývojový hardware ======
  
-== MEMS technologie == +STM32F4 Discovery
-{{ :​playground:​x2_mikrorezonator.jpg?​direct&​300|}} +
-Zkratka MEMS (Micro-Electro-Mechanical Systems) s sebou nese současně označení technologie výroby a současně označení produktů touto technologií vytvořených. Jedná se poměrně o novou technologii,​ kterou v dnešní době podpořila úroveň miniaturizace,​ úroveň technologických postupů a znalost materiálů. Její vývoj se ovšem zdaleka neblíží konci. Tato technologie je implementací mechanických struktur do jediného pouzdra společně s elektronikou. Tato elektronika většinou slouží k digitalizaci naměřené analogové veličiny, filtraci, případně dalšímu zpracování.+
  
-Typické příklady využití jsou:  
-Tlakové senzory, senzory proudění, inerciální snímače (snímání polohy), rezonátory. ​ 
  
  
-== Konstrukce MEMS akcelerometru== 
-{{ :​playground:​2_princip_akcelerometru.png?​direct&​250|}} 
-Základem akcelerometru je seismická hmotnost (setrvačný prvek) o hmotnosti m, dále pružina (příp. pružná lamelka), na které je seismická hmotnost připevněna. ​ 
-Výchylka seismické hmotnosti je poté vůči základně akcelerometru vyhodnocována. Snímání (měření) přesné polohy je poté prováděno pomocí měření kapacity struktury tvořící deskový kapacitor. Výše popisovaný akcelerometr měří zrychlení pouze v jednom směru (v jedné ose). Pro vznik akcelerometru,​ který měří ve dvou osách, je nutné přidat další dílčí strukturu akcelerometru,​ tentokrát pootočenou o 90°. Dnešní akcelerometry jsou běžně tříosé. U nich je nutné aplikovat jednu strukturu výškově pohyblivou. 
  
-== Konstrukce MEMS gyroskopu== +Key Features 
-{{ :​playground:​8_mems_gyro.png?​direct&​350|}} + 
-Typickou strukturou ​ jsou CVG gyroskopy. Obecně se využívá mechanicky rezonující struktura (těleso) o určité hmotnosti umístěná pomocí pružin v pevném mechanickém rámu (pouzdře). Pokud se začne s takovou strukturou otáčetovšem kolmo vůči vibracímzačne na toto pohybující se těleso působit Coriolisova síla. Ta je úměrná úhlové rychlosti otáčení. Poté při pohybu ​(vibrujícísoustavy od vnitřního okraje kružnice směrem k vnějšímu okraji a současnému otáčení celého systému doprava, dochází k působení Coriolisovy síly směrem doleva. V opačném případěpohybuje-li se (vibrujícísoustava z vnějšího krajesměrem k vnitřnímu okraji kružnice, ovšem se zachovaným směrem otáčení ​(tedy dopravatohoto snímačedochází k působení Coriolisovy síly směrem doprava. Tuto polohu zaznamenává snímač pracující na principu deskového kondenzátoru.+    ​STM32F407VGT6 microcontroller featuring 32-bit ARM Cortex-M4F core, 1 MB Flash, 192 KB RAM in 
 +    an LQFP100 package 
 +    On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone ST-LINK/V2  
 +    ​(with SWD connector for programming and debugging) 
 +    Board power supply: through USB bus or from an external 5 V supply voltage 
 +    External application power supply: 3 V and 5 V 
 +    LIS302DL or LIS3DSH ST MEMS 3-axis accelerometer 
 +    MP45DT02ST MEMS audio sensoromni-directional digital microphone 
 +    CS43L22, audio DAC with integrated class D speaker driver 
 +    Eight LEDs: 
 +    LD1 (red/greenfor USB communication 
 +    LD2 (red) for 3.power on 
 +    Four user LEDsLD3 (orange), LD4 (green), LD5 (red) and LD6 (blue) 
 +    2 USB OTG LEDs LD7 (green) VBus and LD8 (red) over-current 
 +    Two push buttons (user and reset) 
 +    USB OTG FS with micro-AB connector 
 +    Extension header for all LQFP100 I/Os for quick connection to prototyping board and easy probing 
 + 
 +----
  
 +====== Software ====== ​
  
 +V hlavním souboru main.c probíha inicializace ADC převodníku,​ USB device audio class a audio kodeku pro přehrávání audio výstupu.
  
-==== Použitý hardware ==== +Použité knihovny ​soubotu main.c
-== STM32F3Discovery == +
-{{ :​playground:​stm32f3discovery.jpg?​direct&​150|}} +
-Zvolený kit je založen na procesoru STM32F3VC. Jedná se o 32-bitový mikroprocesor s architekturou ARM a jádrem Cortex-M4. +
-Jádro série F3 podporuje DSP a FPU instrukce, které mohou být výhodné při zpracování rychlých logických dějů, nebo také při výpočtech s čísly s plovoucí řadovou čárkou. Jako zdroj hodinového signálu je možné použít interní RC oscilátor s rezonanční frekvencí 8MHz násobený PLL násobičem až 16x. Další možnost zdroje hodinového signálu je využití externího krystalového rezonátoru ​rozsahu frekvencí 4 až 32MHz. I v tomto případě je možné využít násobení taktu PLL (fázovým závěsem). Maximální taktovací kmitočet procesoru může být ale nanejvýše 72 MHz.+
  
-Ze zadání požadované MEMS snímače (ackelerometr LSM303DLHC a gyroskop L3GD20) jsou již implementovány na desce. Komunikace mezi mikrokontrolérem a akcelerometrem probíhá pomocí I2C sběrnice. V případě gyroskopu a miktrokontroléru probíhá komunikace pomocí SPI rozhraní (ikdyž gyroskop umožňuje též komunikaci prostřednictvím I2C).  ​ 
  
-== SD karta ==+  * #include "​stm32f4xx_hal.h"​ 
 +  * #include "​usb_device.h"​ 
 +  * #include "​stm32f4xx_hal_adc.h"​ 
 +  * #include "​cs43l22.h"​ 
 +  * #include "​stm32f4_discovery_audio.h"​
  
-SD karty mohou komunikovat ve dvou módech. První mód se označuje jako režim SPI, a ten druhý jako SD režim (na těchto dvou módech je závislé označení pinů na SD kartě). 
-Vzhledem k tomu, že mikrokontrolér STM32F3 nedisponuje SDIO rozhraním (jako například STM32F4), je výhodnější využít komunikační režim přes SPI. SPI režim je sekundárním komunikačním protokolem využívající SPI kanál. Karta je defaultně přednastavena ke komunikaci v SD režimu. Pokud je vyžadována komunikace v SPI režimu, je nutné tento režim během prvního resetovacího příkazu aktivovat (nezapomenout na CRC, které je v SD režimu defaultně zapnuto). Samotná komunikace přes SPI kontrolu dat nevyžaduje,​ je možné ji ale zapnout. 
  
-==== Použitý software ====+    assert_param(IS_ADC_CHANNEL(sConfig->​ADC_CHANNEL_1));​ 
 +    hadc->​Instance->​SMPR2 &~ADC_SMPR2(ADC_SMPR2_SMP0,​ sConfig->​Channel);​ 
 +    hadc->​Instance->​SMPR2 |ADC_SMPR2(sConfig->​SamplingTime,​ sConfig->​Channel);​ 
 +    void ADC_Init(hadc);​ 
 +    cs43l22_Init(29,​ OUTPUT_DEVICE_SPEAKER,​ 60, AUDIO_FREQUENCY_48K);​
  
-== MEMS snímače == 
-Program je psán v programu EmBitz a kompilován přiloženým kompilátorem ARM GCC. Pro samotný projekt bylo využito poměrně nových HAL knihoven uvedených výrobcem mikroprocesoru,​ které jsou více abstraktně orientované,​ než dosud standardní SPL knihovny. U těchto knihoven není nutné nastavovat periferie (časovače,​ komunikační rozhraní) na úrovni bitů, ale za pomocí již definovaných funkcí. Přerušení a jiné rutiny se zde realizují pomocí callbacků, namísto klasických obsluh přerušení. Původním záměrem byl vývoj vlastních knihoven pro oba MEMS senzory, nicméně po určitém čase zkoušení a experimentování byla zvolena taktika přepoužití již napsaných knihoven. Za tímto účelem byly využity vzorová řešení od STM. Tato vzorová řešení obsahují již pěkně napsané knihovny, ovšem struktura a zřetězení těchto knihoven pro obsluhu jednotlivých snímačů byla téměř žalostná. Z tohoto důvodu byly knihovny pro oba snímače upraveny s ohledem na univerzálnost následovně:​ 
  
-{{ :​playground:​bez_nazvu.png?​direct&​700 |}}+Nejprve je inicializován AD převodník a přiřazeným kanálem číslo jedna, který odpovídá převodníku ADC1. Na tento převodník je přivedeno napětí z potenciometru,​ který ovládá Volume přehrávání audio výstupu. Následně jsou přiřazeny patřičné parametry a vzorkovací frekvence.
  
-Ke každému .c souboru ​je připojen hlavičkový soubor (.h). Obě knihovny vyšší vrstvy (L3GD20.c a LSM303DLHC.c) umožňují kompletní práci se snímačijako vyčítání naměřených hodnotkonfiguraci měření, včetně konfigurace filtrů. Knihovny nižší vrstvy (L3GD20_SPI.c a LSM303DLHC_I2C.c) zprostředkovávají ​ komunikaci mezi snímačmikrokontroléremTímto způsobem ​je zde dosažená určitá míra univerzálnosti,​ kdy je možné ​i změně platformy ​epsat pouze knihovnu nižší vrstvy (_SPI.C, příp. _I2C.c)+Dále je inicializován audio kodek, kde je přižen výstupní pin na Jack 3.5 mmzvolen typ výstupního zařízenípočáteční hlasitost v procentech ​vrozkovací frekvence na 48 kHzStejná ​je vzorkovací frekvence AD evodníku a rychlost ​enosu po USB.
  
-== SD karta == 
-Jak již bylo zmíněno výše, je nutné zvolit SPI režim komunikace mezi SD kartou a mikrokontrolérem. V tomto případě je možné využít jednu SPI sběrnici pro obsluhu SD karty a obsluhu gyroskopu současně. Poté je možné přepínat mezi oběma součástkami pomocí pinu CS (chip select). Vzhledem k tomu, že mikrokontrolér obsahuje více SPI rozhraní, bylo pro obsluhu SD karty voleno jiné rozhraní. 
  
-Aby SD karta byla čitelná i pro klasický počítač, musí se na ní implementovat souborový systém (např. FAT). V souladu s tímto souborovým systémem se na tuto kartu i zapisuje. K tomuto účelu je možné napsat vlastní knihovnu, případně využít volné knihovny dostupné na internetu. Jednou z nejznámějších dostupných knihoven, obsluhující souborový systém může bát FatFS, určená pro mikroprocesorové systémy. ​ 
  
-==== Literatura a zdroje ==== 
-Toto byl jeden z prvních problému při SW návrhu, jelikož tento styl psaní kódu vyžadoval další studium. 
  
-==== Literatura a zdroje ==== 
playground/playground.1453040473.txt.gz · Poslední úprava: 2016/01/17 15:21 autor: Jan Dvořák