nxp pn532 NFC SPI initiator code, with all functions minimized and made as fast as possible (code for target is also there, you just need to change the functions in the main). Code advises are welcome, i am an electronist not a programmer
main.cpp@0:f07ca719c12e, 2013-11-15 (annotated)
- Committer:
- marius90
- Date:
- Fri Nov 15 12:58:57 2013 +0000
- Revision:
- 0:f07ca719c12e
working;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
marius90 | 0:f07ca719c12e | 1 | #include "mbed.h" |
marius90 | 0:f07ca719c12e | 2 | #include "PN532.h" |
marius90 | 0:f07ca719c12e | 3 | #include <string> |
marius90 | 0:f07ca719c12e | 4 | |
marius90 | 0:f07ca719c12e | 5 | |
marius90 | 0:f07ca719c12e | 6 | DigitalOut led1(LED1); |
marius90 | 0:f07ca719c12e | 7 | DigitalOut led2 (LED2); |
marius90 | 0:f07ca719c12e | 8 | |
marius90 | 0:f07ca719c12e | 9 | |
marius90 | 0:f07ca719c12e | 10 | PN532 nfc(mosi1, miso1, sclk1, ss1); |
marius90 | 0:f07ca719c12e | 11 | |
marius90 | 0:f07ca719c12e | 12 | int main() |
marius90 | 0:f07ca719c12e | 13 | { |
marius90 | 0:f07ca719c12e | 14 | printf("\r INITIATOR STARTED\n"); |
marius90 | 0:f07ca719c12e | 15 | nfc.begin(); |
marius90 | 0:f07ca719c12e | 16 | |
marius90 | 0:f07ca719c12e | 17 | |
marius90 | 0:f07ca719c12e | 18 | uint32_t versiondata = nfc.getFirmwareVersion(); |
marius90 | 0:f07ca719c12e | 19 | if (! versiondata) { |
marius90 | 0:f07ca719c12e | 20 | printf("Didn't find PN532\r\n"); |
marius90 | 0:f07ca719c12e | 21 | |
marius90 | 0:f07ca719c12e | 22 | while (1) { |
marius90 | 0:f07ca719c12e | 23 | led1 = !led1; |
marius90 | 0:f07ca719c12e | 24 | wait(0.1); |
marius90 | 0:f07ca719c12e | 25 | } |
marius90 | 0:f07ca719c12e | 26 | } |
marius90 | 0:f07ca719c12e | 27 | |
marius90 | 0:f07ca719c12e | 28 | printf("Found chip PN5%2X\r\n", versiondata >> 24); |
marius90 | 0:f07ca719c12e | 29 | printf("Firmware V%d.%d\r\n", (versiondata >> 16) & 0xFF, (versiondata >> 8) & 0xFF); |
marius90 | 0:f07ca719c12e | 30 | |
marius90 | 0:f07ca719c12e | 31 | |
marius90 | 0:f07ca719c12e | 32 | nfc.SAMConfig(); |
marius90 | 0:f07ca719c12e | 33 | wait(1); |
marius90 | 0:f07ca719c12e | 34 | |
marius90 | 0:f07ca719c12e | 35 | char dataOut[] = "hello target"; |
marius90 | 0:f07ca719c12e | 36 | char dataIn[16]; |
marius90 | 0:f07ca719c12e | 37 | |
marius90 | 0:f07ca719c12e | 38 | while (1) { |
marius90 | 0:f07ca719c12e | 39 | if(nfc.configurePeerAsInitiator()==1) { |
marius90 | 0:f07ca719c12e | 40 | printf("found target"); |
marius90 | 0:f07ca719c12e | 41 | nfc.initiatorTxRx(dataOut, dataIn); |
marius90 | 0:f07ca719c12e | 42 | printf("\n\r%s", dataIn); |
marius90 | 0:f07ca719c12e | 43 | } else { |
marius90 | 0:f07ca719c12e | 44 | printf("no target"); |
marius90 | 0:f07ca719c12e | 45 | } |
marius90 | 0:f07ca719c12e | 46 | led1=!led1; |
marius90 | 0:f07ca719c12e | 47 | wait(1); |
marius90 | 0:f07ca719c12e | 48 | } |
marius90 | 0:f07ca719c12e | 49 | } |
marius90 | 0:f07ca719c12e | 50 |