grek, тебе просто все пытаются сказать, что spi - это просто такие три проводка и два сдвиговых регистра, и все
Он умеет передавать только байты и ничего более. А дальше идет протокол обмена, и он даже у разных SPI Flash микросхем разный, а у mmc вообще совсем не похож.
Как идет работа с sd/mms:
(драйвер FS)
--- тут запросы типа "прочесть сектор N", "записать сектор N", без учета специфики flash
(драйвер протокола SD/MMC)
--- тут байты, которые надо передать/принять по SPI
(драйвер SPI)
(железяка SPI)
-------------------тут заканчивается МК и начинается SD/MMC карта, в которой свой контроллер сидит
(железяка SPI)
(драйвер SPI)
(протокол SD/MMC)
--- тут запросы типа "прочесть сектор N", "записать сектор N", без учета специфики flash
(драйвер флеш-памяти)
--- тут запросы типа "прочесть сектор N", "записать сектор N", "стереть сектор N",c учетом специфики flash-памяти, т.е. защита от износа ячеек и т.п.
(железяка флеш-памяти)
А вот как идет работа с spi flash:
(драйвер FS)
--- тут запросы типа "прочесть сектор N", "записать сектор N", без учета специфики flash
(драйвер флеш-памяти)
--- тут запросы типа "прочесть сектор N", "записать сектор N", "стереть сектор N",c учетом специфики flash-памяти, т.е. защита от износа ячеек и т.п.
(драйвер протокола spi flash)
--- тут байты, которые надо передать/принять по SPI
(драйвер SPI)
(железяка SPI)
-------------------тут заканчивается МК и начинается spi flash
(железяка флеш-памяти+spi)
Ну вот как-то так, дальше копай гугл, там все подробности есть