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 « Circuits@Home. Is there a workaround that would enable me to use this shield with Galileo?