FAT16 vs FAT32

"The library supports the FAT16 and FAT32 filesystems, but use FAT16 when possible."

What is the reason for this? Is there some problem with using FAT32?

First, the SD standard specifies that 2GB and smaller cards should be formatted FAT16 and very small cards are FAT12.

Cards larger than 2GB must be FAT32.

The practical reason is that SD cards perform better with large clusters. Small clusters causes many accessed to the FAT (File Allocation Table) and SD cards don't tolerate random access well. They are designed for contiguous reads and writes

I's best to format SD cards with the SD Association's formatter https://www.sdcard.org/downloads/formatter_3/. This program aligns file structures with the internal flash chips for optimum performance.

OS format utilities do not always produce an optimal layout.

And when was the last time you saw an SD card as small as 2GB?

I have quite a few. My car stereo can't take anything larger than 1GB. A lot of industrial-grade SLC based cards are still 2GB or less.

Many of the fastest most reliable SD cards for embedded systems are small, 2GB or less, and based on SLC flash. Larger SLC cards are available but are very expensive.

Due to the lower complexity in managing SLC flash, the write performance for SLC at the IC level is typically twice as fast. With controller multiplexing this can be reduced, but this accounts for the main delta in read speed versus write speed in retail flash products today.

SLC flash SDs last 20-100 times longer than consumer grade MLC flash SDs.

3-Bit MLC technology (a.k.a. TLC) has an exponentially lower number of program/erase cycles. SLC technology, targeting embedded and mission critical applications, will continue to maintain an emphasis on endurance and reliability.