Salve, utilizzando una telecamera blackfin ricevo una stringa di circa 10 Kbyte via seriale alla velocità di 115200bps.
Devo salvare la stringa su una SD (ho una shield sd collegata all'arduino):
Il buffer dell'arduino l'ho settato a 1024 byte nel file HardwareSerial.cpp ma comunque non è sufficiente a leggere tutta la stringa.
Esiste un alternativa ? Ridurre il baudrate sarebbe una possibilità valida ?
Grazie.
Di seguito il codice usato per scrivere direttamente sulla SD
if (!myFile.open(pathF, O_WRITE | O_CREAT | O_APPEND)) {
sd.errorHalt("opening file for write failed");
}else
{
while(Serial1.available()>0)
myFile.print(Serial1.read(),BYTE);
myFile.close();
}
La soluzione è scrivere i dati non appena arrivano.
Le SD sono scrivibili in blocchi da 512 byte il che ti permette di utilizzare un buffer leggermente maggiore, diciamo da 600-700 byte, in modo da poter trasferire i 512 byte appena ricevuti mentre arrivano gli altri.
Tieni presente che la velocità di scrittura sulle SD si misura in MegaByte/s e come minimo sono 2, cioè oltre 16 mpbs, tenuto conto che Arduino più di 3-4 mbps non riesce a gestire sulla SPI hai comunque un grosso margine di vantaggio tra la velocità con cui arrivano i dati e quella con cui li scrivi sulla SD.