Новичок
Регистрация: 28.03.2011
Сообщений: 69
Репутация: 11
![]() |
В работе с микроконтроллерами я не совсем чайник. Опыт в работе с SD у меня есть на уровне FAT32. И как определить свободное место на SD с FAT32 проблем нет.
А вот как определить физическое пространство SD я не знаю. Винда же при форматировании как то определяет размер SD и вписывает в кластер для последующей работы. Подскажите куда глянуть(даташиит на SD у меня есть), какую команду использовать или посоветуйте библиотеку, пример или еще что. Спасибо
__________________
Глаза боятся, мозг кипит, руки делают. ![]() |
||
Оценка
|
Новичок
Регистрация: 16.10.2013
Сообщений: 2
Репутация: 12
![]() |
Надо прочитать CSD регистр командой CMD9 размер карты указан как ...
Memory Capacity = BLOCKNR * BLOCK_LEN BLOCKNR = (C_SIZE + 1) * MULT MULT = 2C_SIZ_MULT+2 (C_SIZE_MULT < 8) BLOCK_LEN = 2READ_BL_LEN (READ_BL_LEN < 12) для примера карта 64Mb: C_SIZE биты CSD [73:62] = E27h = 3623 C_SIZE_MULT биты CSD [49:47] = 011b = 3 READ_BL_LEN биты CSD [83:80] = 1001b = 9 (3623+1)*(2^(3+2))*(2^9)/1024/1024=3624*32*512/1024/1024 = 56.625MB
Последний раз редактировалось xkeen; 16.10.2013 в 19:00.
|
||
Оценка
|
Новичок
Регистрация: 28.03.2011
Сообщений: 69
Репутация: 11
![]() |
Цитата:
Надо прочитать CSD регистр командой CMD9 размер карты указан как ...
Memory Capacity = BLOCKNR * BLOCK_LEN BLOCKNR = (C_SIZE + 1) * MULT MULT = 2C_SIZ_MULT+2 (C_SIZE_MULT < 8) BLOCK_LEN = 2READ_BL_LEN (READ_BL_LEN < 12) для примера карта 64Mb: C_SIZE биты CSD [73:62] = E27h = 3623 C_SIZE_MULT биты CSD [49:47] = 011b = 3 READ_BL_LEN биты CSD [83:80] = 1001b = 9 (3623+1)*(2^(3+2))*(2^9)/1024/1024=3624*32*512/1024/1024 = 56.625MB Если вам не трудно, и у вас это не займет много времени посмотрите часть кода на С который я подготовлю. Куда можно вам отправить. Еще раз спасибо!
__________________
Глаза боятся, мозг кипит, руки делают. ![]() |
||
Оценка
|
Новичок
Регистрация: 16.10.2013
Сообщений: 2
Репутация: 12
![]() |
|
||
Оценка
|
Обратная связь РадиоЛоцман Вверх |