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í. |