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

Dependencies:   mbed

Committer:
marius90
Date:
Fri Nov 15 12:58:57 2013 +0000
Revision:
0:f07ca719c12e
working;

Who changed what in which revision?

UserRevisionLine numberNew 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