Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
|
2016:nfc-reader [2017/01/14 21:42] Ondřej Sládek vytvořeno |
2016:nfc-reader [2017/01/14 22:21] (aktuální) Ondřej Sládek |
||
|---|---|---|---|
| Řádek 21: | Řádek 21: | ||
| * NFC modul s obvodem PN532 | * NFC modul s obvodem PN532 | ||
| - | === STM32F429I-Discovery === | + | ==== STM32F429I-Discovery ==== |
| Vývojová deska s procesorem od ST a s jádrem ARM Cortex-M4 má vestavěný LCD displej, vhodný pro zobrazení dat. Displej je dotykový-rezistivní a deska je vybavena dedikovaným obvodem STMPE811 pro jeho ovládání. Z těchto důvodů byla tato deska vybrána jako Master zařízení pro tento projekt. | Vývojová deska s procesorem od ST a s jádrem ARM Cortex-M4 má vestavěný LCD displej, vhodný pro zobrazení dat. Displej je dotykový-rezistivní a deska je vybavena dedikovaným obvodem STMPE811 pro jeho ovládání. Z těchto důvodů byla tato deska vybrána jako Master zařízení pro tento projekt. | ||
| {{ :2016:stm32f429-disco_g.png?200 |}} | {{ :2016:stm32f429-disco_g.png?200 |}} | ||
| - | === NFC modul === | + | |
| - | Řídícím obvodem použitého NFC modulu je PN532 od NXP, zakoupený na stránce Ebay[[http://www.ebay.com/itm/New-PN532-NFC-module-Reader-Writer-3-3V-5V-Arduino-compatible-with-2-S50-card-/161292573998?hash=item258dc95d2e:g:ecAAAOxyOalTYvHW]] Na desce je vytvořena PCB anténa pro kmitočet 13,56 MHz a celé zařízení dokáže zajistit komunikaci s NFC kartou (modulace a demodulace, synchronizace atd.). Pro komunikaci s externími zařízeními jsou k dispozici sběrnice I2C, SPI a HSU. Pro projekt | + | ==== NFC modul ==== |
| + | |||
| + | Řídícím obvodem použitého NFC modulu je PN532 od NXP, zakoupený na [[http://www.ebay.com/itm/New-PN532-NFC-module-Reader-Writer-3-3V-5V-Arduino-compatible-with-2-S50-card-/161292573998?hash=item258dc95d2e:g:ecAAAOxyOalTYvHW|Ebay]]. Na desce je vytvořena PCB anténa pro kmitočet 13,56 MHz a celé zařízení dokáže zajistit komunikaci s NFC kartou (modulace a demodulace, synchronizace atd.). Pro komunikaci s externími zařízeními jsou k dispozici sběrnice I2C, SPI a HSU, po kterých obvod komunikuje prostřednictvím datových rámců. Pro projekt byl tento modul vybrán jako Slave zařízení. | ||
| + | |||
| + | ===== Řešení ===== | ||
| + | |||
| + | ==== Softwarové prostředky ==== | ||
| + | Pro konfiguraci periferií Master desky byl použit program STM32CubeMX, programování probíhalo v prostředí EmBitz. Pro práci byly využity HAL knihovny od STMicroelectronics. | ||
| + | |||
| + | ==== Komunikace mezi Master a Slave ==== | ||
| + | Základním úkolem bylo nejprve zajistit komunikaci mezi Master a Slave deskou. Pro komunikační rozhraní byla vybrána sběrnice SPI. Parametry přenosu byly dány firmwarem obvodu PN532 a podle nich byla konfigurována periférie SPI4 v programu STM32CubeMX. Pro ověření funkčnosti byl použit příkaz //GetFirmwareVersion//, pro který je známa očekávaná odpověď. Výpis odpovědi byl realizován přímo do okna prostředí EmBitz pomocí semihostingu. Následující kód ukazuje způsob odeslání příkazu a výpisu odpovědi: | ||
| + | |||
| + | <code c> | ||
| + | ... | ||
| + | // frame for command | ||
| + | Transmit[0]= 0x01; //Data write byte | ||
| + | Transmit[1]= 0x00; | ||
| + | Transmit[2]= 0x00; | ||
| + | Transmit[3]= 0xff; | ||
| + | Transmit[4]= PN532_COMMAND_GETFIRMWAREVERSION; | ||
| + | Transmit[5]= 0xfe; | ||
| + | Transmit[6]= 0xd4; | ||
| + | Transmit[7]= 0x02; | ||
| + | Transmit[8]= 0x2a; | ||
| + | Transmit[9]= 0x00; | ||
| + | |||
| + | switch(HAL_SPI_Transmit(&hspi4, (uint8_t *)Transmit, B_SIZE, 5000)) | ||
| + | { | ||
| + | case HAL_OK: | ||
| + | printf("Transmission OK\n"); | ||
| + | |||
| + | HAL_SPI_Receive(&hspi4, (uint8_t *)Receive, B_SIZE, 5000); | ||
| + | printf("Received:\n"); | ||
| + | |||
| + | for (uint8_t i = 0; i < B_SIZE; i++) { | ||
| + | printf(" %2X", Receive[i]); | ||
| + | fflush(stdout); | ||
| + | } | ||
| + | break; | ||
| + | |||
| + | case HAL_TIMEOUT: | ||
| + | printf("Timeout\n"); | ||
| + | |||
| + | break; | ||
| + | |||
| + | case HAL_ERROR: | ||
| + | printf("Error\n"); | ||
| + | break; | ||
| + | |||
| + | default: | ||
| + | break; | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | ===== Závěr ===== | ||
| + | Bohužel se nepodařilo zprovoznit komunikaci mezi Master a Slave deskou, ani při explicitním zadání rámce příkazu (viz kód) nebyla odpověď obvodu podle očekávání. Další části projektu realizovány nebyly a celkové vypracování je nedostačující. | ||