Quantcast
Channel: Intel Communities: Message List
Viewing all articles
Browse latest Browse all 18599

SPI problem with NFC Shield

$
0
0

Hi all, I've been trying to enable a Seeed NFC Shield V2.0 with the Galileo, but with no success. Here's the library that I've been trying to use: File:PN532 SPI V2.zip - Wiki. Also, this is the Seeed-provided code that I've been using (from NFC Shield V2.0 - Wiki):

 

//This example reads all MIFARE memory block from 0x00 to 0x63.

//It is tested with a new MIFARE 1K cards. Uses default keys for authenication.

//Contributed by Seeed Technology Inc (www.seeedstudio.com)

 

#include <PN532.h>

#include <SPI.h>

 

/*Chip select pin can be connected to D10 or D9 which is hareware optional*/

/*if you the version of NFC Shield from SeeedStudio is v2.0.*/

#define PN532_CS 10

 

PN532 nfc(PN532_CS);

 

#define NFC_DEMO_DEBUG 1

 

voidsetup(void){

#ifdef NFC_DEMO_DEBUG

  Serial.begin(9600);

  Serial.println("Hello!");

#endif

  nfc.begin();

 

  uint32_t versiondata = nfc.getFirmwareVersion();

  if(! versiondata){

#ifdef NFC_DEMO_DEBUG

   Serial.print("Didn't find PN53x board");

#endif

   while(1);// halt

  }

#ifdef NFC_DEMO_DEBUG

  // Got ok data, print it out!

  Serial.print("Found chip PN5");

  Serial.println((versiondata>>24)&0xFF, HEX);

  Serial.print("Firmware ver. ");

  Serial.print((versiondata>>16)&0xFF, DEC);

  Serial.print('.');

  Serial.println((versiondata>>8)&0xFF, DEC);

  Serial.print("Supports ");

  Serial.println(versiondata &0xFF, HEX);

#endif

  // configure board to read RFID tags and cards

  nfc.SAMConfig();

}

 

voidloop(void){

  uint32_t id;

  // look for MiFare type cards

  id = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A);

 

  if(id !=0)

  {

#ifdef NFC_DEMO_DEBUG

   Serial.print("Read card #");

   Serial.println(id);

   Serial.println();

#endif

  uint8_t keys[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};// default key of a fresh card

   for(uint8_t blockn=0;blockn<64;blockn++)

   {

   if(nfc.authenticateBlock(1, id ,blockn,KEY_A,keys))//authenticate block blockn

   {

   //if authentication successful

  uint8_t block[16];

   //read memory block blockn

   if(nfc.readMemoryBlock(1,blockn,block))

   {

#ifdef NFC_DEMO_DEBUG

   //if read operation is successful

   for(uint8_t i=0;i<16;i++)

   {

   //print memory block

   Serial.print(block[i],HEX);

   if(block[i]<=0xF)//Data arrangement / beautify

   {

   Serial.print(" ");

   }

   else

   {

   Serial.print(" ");

   }

   }

 

   Serial.print("| Block ");

   if(blockn <=9)//Data arrangement / beautify

   {

   Serial.print(" ");

   }

   Serial.print(blockn,DEC);

   Serial.print(" | ");

 

   if(blockn ==0)

   {

   Serial.println("Manufacturer Block");

   }

   else

   {

   if(((blockn +1)%4)==0)

   {

   Serial.println("Sector Trailer");

   }

   else

   {

   Serial.println("Data Block");

   }

   }

#endif

   }

   }

   }

  }

  delay(2000);

}

 

This setup is working fine with Arduino Uno but, apparently, Galileo can't use the Least Significant Bit (LSB) format needed by the PN532 (Intel® Galileo Release Notes), which is also why I can't use this fix: NFC Shield &#171; Circuits@Home. Is there a workaround that would enable me to use this shield with Galileo?


Viewing all articles
Browse latest Browse all 18599

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>