насчет SPI утверждение "передача в SPI память не бывает медленной" считаю неверным. Поскольку информация передается последовательно, то какой бы ни была скорость передачи по SPI, она всегда будет ниже скорости выполнения одной инструкции в процессоре. Исходя из этого, когда нужно передать несколько байт (обычно нужно передать адрес, возможно несколько байт данных), то нужно процесс передачи оформлять в виде отдельной подзадачи или сервиса, завязанного на прерывания от модуля SPI. Входные данные к этому модулю подсовывать через некое программное FIFO.
По поводу записи в SPI. Да, действительно типично SPI EEPROM могут иметь длительность цикла записи порядка 10 мс. И проверка флаша записалось/незаписалось также должна производиться через чтение по SPI специального регистра. Т.е. возвращаемся к задаче, озвученной в первом абзаце.