I've got a datalogger project I'm working on. It involves impact/sudden high-g loading, and as such I would like to take full advantage of the 1KHz sampling rates that the accelerometer and gyro I have found (and have). I forsee adding a couple other sensors here, so I might be looking at upwards of 20 bytes of data every sample, or 20kBytes/second. I'm allotting 25kBytes just to give me room for the inevitable additions I'll end up making.
I did some initial rough runs with the built-in SD library and was getting around 200sps written to SD in .CSV format, and that was with fewer sensors than I anticipate using. I have yet to fully play with the SDFat Library but in reading around it sounds like I might be bumping up (or past) the limits of a straight write to SD (ultimately I'd like the data in something I can plug into a computer and read right off, so a .TXT or .CSV or similar would be great).
I won't be able to hit a magical "start recording" button right before the action starts, but it will be several minutes or more (highly variable as final setup is completed, etc) between when I last can handle the device and when the impacts will happen. The simplest thing would be for the logging to continuously happen until the end, and I can strip the excess data off the beginning later on in a computer. Worst case I might be able to use the sensors to trigger the start of logging (there will be a couple g's of force shortly before the high-force stuff happens, it might be enough time to initialize things), but I'd like to avoid that if possible. At the end of the window in which I need to record data there will be a very large, noticeable impact, which I intend to use to trigger stopping of recording.
I started looking at SPI Flash chips. I see that getting large-capacity chips is pretty simple, a couple of dollars at Mouser or DigiKey will net up to 512MBit (64MByte) chips, and they look plenty fast enough (especially looking at some examples folks have done with the Uno and smaller chips). 32MByte would get me a little over 21 minutes of continuous data at 25kByte/s which might be enough, 64MByte netting over 42.5 minutes should be more than enough. After the events are over, I could then allow several minutes for the Arduino to read and send all the data over to an SD card in a nice .CSV-esque format.
Specifically I was looking at the Spansion chips, since they seem to be the only large-capacity chips that are stocked at Mouser/DigiKey. Something like http://www.mouser.com/ProductDetail/Spansion/S25FL512SAGMFIG11/?qs=sGAEpiMZZMtLtwjrIQVJ5plqoU0Ruqsipmjf1%2FMXJVc%3D (datasheet: http://www.mouser.com/ds/2/380/S25FL512S_00-7893.pdf). Or perhaps its 32MByte cousin such as http://www.mouser.com/ProductDetail/Spansion/S25FL256SAGMFIG01/?qs=sGAEpiMZZMtLtwjrIQVJ5plqoU0RuqsiC1Vz99fdJ8s%3D (datasheet:http://www.mouser.com/ds/2/380/S25FL128S_256S_00-2916.pdf).
I see plenty of folks playing with smaller SPI flash mem chips, though none from this manufacturer nor this large. Are there any gotchas I should know about (I do see that those chips would need a voltage logic convertor to operate with an Uno)? I'm hoping that between the datasheets and some of the examples folks around here have done with SPI flash mem I can get this running. Or maybe I'm barking up the complete wrong tree regarding how to go about this?