Q2: If both NFC Shield V2.0 & 2.8'' TFT Touch Shield V2.0. are used simultaneously, the NFC shield does not find the PN532 chip, but the TFT screen works fine. Is this the problem due to both using the same SPI library? Is there a workaround?
A2: NFC Shield and TFT Shield software libraries use the same SPI driver. The way each one accesses the SPI API is different.
Though Arduino SPI has evolved, NFC & TFT Shield libraries are still using old APIs. The new SPI API has to be used to specify the parameters of SPI device before each SPI transaction. Currently the parameters are initialized in begin().
Fix a few things in each library especially:
1. Remove usage of SPI setDataMode() function
2. Start using SPI.beginTransaction() to configure SPI parameters.
Also rewrite Write-Command, Write-Data, Read-Data functions present in these libraries.
There is a nice software example on using two incompatible SPI devices :
Quick Hack: Check if NFC begin() and TFT begin() can be called before each API transaction.
Q3: I wanted to include part of your TFT Shield v1 library (https://github.com/Seeed-Studio/TFT_Touch_Shield_V1) into my project. There is a confusion as the license.txt file says you have licensed it under the MIT license, but the header of the cpp files say it is under GPL license. Which is correct?
A3: We use to license our software under LGPL (Arduino Libraries are also LGPL). We are now offering all libraries written by ourselves under MIT license.
You could either apply LGPL or MIT license for this driver software. The headers will be modified in the next revision.