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 12:31]
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ělesoo 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 dopravadochá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 kraje, směrem k vnitřnímu okraji kružniceovšem se zachovaným směrem otáčení (tedy doprava) tohoto snímače, dochá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 supplythrough USB bus or from an external 5 V supply voltage 
 +    External application power supply3 V and 5 V 
 +    ​LIS302DL or LIS3DSH ST MEMS 3-axis accelerometer 
 +    MP45DT02, ST MEMS audio sensor, omni-directional digital microphone 
 +    CS43L22, audio DAC with integrated class D speaker driver 
 +    Eight LEDs: 
 +    LD1 (red/greenfor USB communication 
 +    LD2 (redfor 3.3 V 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íkuUSB device audio class a audio kodeku pro přehrávání audio výstupu.
  
 +Použité knihovny v soubotu main.c
  
  
-==== Použitý hardware ==== +  * #include "​stm32f4xx_hal.h"​ 
-== STM32F3Discovery == +  * #include "​usb_device.h"​ 
-{{ :​playground:​stm32f3discovery.jpg?​direct&​150|}} +  * #include "​stm32f4xx_hal_adc.h" 
-Zvolený kit je založen na procesoru STM32F3VC. Jedná se o 32-bitový mikroprocesor s architekturou ARM a jádrem Cortex-M4+  * #include "​cs43l22.h" 
-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 v 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.+  * #include "​stm32f4_discovery_audio.h"
  
-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 ==+    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);​
  
-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 ==== +Nejprve ​je inicializován AD převodník ​a přiřazeným kanálem ​číslo jednakterý odpovídá převodníku ADC1Na tento převodník je ivedeno napětí z potenciometrukterý ovládá Volume ​ehrávání audio výstupuNásledně jsou přiřazeny patřičné parametry a vzorkovací frekvence.
-Program ​je psán v programu EmBitz ​kompilován ​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čekomunikač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 ​erušení. Původním záměrem byl vývoj vlastních knihoven pro oba MEMS senzorynicméně po určitém čase zkoušení a experimentování byla zvolena taktika ​epoužití již napsaných knihovenZa 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 jednotlivé snímače upraveny s ohledem na univerzálnost následovně:​+
  
 +Dále je inicializován audio kodek, kde je přižen výstupní pin na Jack 3.5 mm, zvolen typ výstupního zařízení,​ počáteční hlasitost v procentech a vrozkovací frekvence na 48 kHz. Stejná je vzorkovací frekvence AD převodníku a rychlost přenosu po USB.
  
-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.1453030311.txt.gz · Poslední úprava: 2016/01/17 12:31 autor: Jan Dvořák