арти пам'яті командами
CMD0, CMD1 . Спершу, при високому рівні на висновках
SS і
MOSI подаємо 80 тактових імпульсів на виведення S
CK . Далі на весь час роботи з картою садимо
SS на землю, подаємо команду
CMD0 , контрольна сума для якої дорівнює
0x95 (контрольна сума в нашому випадку потрібна тільки для команди
CMD0 , в інших випадках вона не перевіряється, тому весь час будемо використовувати 0х95 як контрольну суму). Далі, після байтовой паузи, картка повинна відповісти 0х01, що означає, що вона увійшла до SPI режим і готова приймати команди. Тепер подаємо команди
CMD1 , і після паузи очікуємо від картки відповіді 0х00, які говорить про те, що карта готова до обміну даними.
Обмін даними між картою пам'яті і мікроконтролером буде проводитися стандартними блоками по 512 байт. Адресація карти побайтное, починаючи з нуля, але зчитувати дані можна тільки блоками. Адресою блоку служить перший його байт. Тобто 0-й блок має адресу 0х0000, 1-й блок - 0х0200, 2-й блок - 0х400 і т.д. (Справедливо для розміру блоку 512 байт). У SDHC картах адресація поблочної, адресою блоку служить його номер. Операція читання блоку проводиться в наступному порядку. Подається команда CMD17 , байтовая пауза, якщо приймається відповідь 0х00, то після ще однієї байтовой паузи приймається блок даних, структура якого показана нижче.
В
Щось схоже тимчасової діаграми операції читання можна подивитися на малюнку нижче
В
Як видно, блок починається з байта 0хFE (для команд CMD17/18, CMD24 ), далі йде 512 байт інформації та 2 байти контрольної суми (яка за замовчуванням не використовується). Операція запису проводитися схоже, команда CMD24 , пауза, відповідь карти 0х00, і блок даних (так як контрольна сума не перевіряється, то її полі можна заповнити випадково). Далі слід відповідь карти про прийом блоку даних.
В
Після чого busy стан, коли карта записує отримані дані. Тимчасова діаграма операції запису наведена нижче.
В
Вихідна карта пам'яті може бути відформатована в FAT16 або в FAT32