From Jeremy
The code does initialize at slow speed, roughly 50Khz. Then switches to whatever mode you set up after that, could be shiftin/shiftout (77Khz+ or so), bit-banged SPI (about 150khz @ 40Mhz) up 10Mhz using hardware SPI.

Good info with the resistor voltage divider with larger cards. Noted. I'll try out a few cards, throw a meter on them, and see what I come up with for comparison.

One-bit/SPI mode only. 4-bit mode/SD bus mode, takes a lot more programming than I want to deal with! Not to mention the processing time it would take to calculate CRC's 'on-the-fly'. Gotta draw the line somewhere.

No CRC's used except during initialization, then only pre-calculated CRC's are used. You can disable CRC's in SPI mode.

Single block commands, one sector at a time. Any more an you'd run out of ram on the PIC rather quickly. Eventually, I'll get my hands on a static ram I2C chip from Microchip and integrate that into SDFSHC32 somehow to make multi-block reads/write possible. Even then, you'd be limited to the maximum block size set by the card itself.

All of this info will be fed back into the NOTES file.