FatFs: Why am I not able to properly read sector 0?
Turns out the answer had to do with the way I was implementing the SPI transactions using the Nordic SDK.

My rcvr_mmc function looked like this:

static
void rcvr_mmc (
    BYTE *buff, /* Pointer to read buffer */
    UINT bc     /* Number of bytes to receive */
)
{
    nrf_drv_spi_transfer(&amp;spi, NULL, 0, buff, bc);
}


I assumed my rcvr_mmc was working since I was correctly parsing command responses. However, sector reads weren't working at all. I didn't even see a full 512*8 clock cycles.

Once I realized that was happened, I looked more closely at the Nordic SDK SPI driver and discovered this:

https://devzone.nordicsemi.com/question/66434/nrf_drv_spi_transfer-larger-transfer-size/ 

Since sector reads pass bc=512, this resulted in nothing really being read. My very inefficient hack for now to get this work is:

int i;
uint8_t small_buf[1];
for (i = 0; i &lt; bc; i++) {
    nrf_drv_spi_transfer(&amp;spi, NULL, 0, small_buf, 1);
    buff[i] = small_buf[0];
}