Муфты электромонтажные от производителя Fucon

Как получить физический объем SD карты в связке AVR ATmegaXX

Новичок
 
Регистрация: 28.03.2011
Сообщений: 69
Репутация: 11
1 10
0 0
 
16.10.2013 13:41 #1
В работе с микроконтроллерами я не совсем чайник. Опыт в работе с SD у меня есть на уровне FAT32. И как определить свободное место на SD с FAT32 проблем нет.
А вот как определить физическое пространство SD я не знаю. Винда же при форматировании как то определяет размер SD и вписывает в кластер для последующей работы.
Подскажите куда глянуть(даташиит на SD у меня есть), какую команду использовать или посоветуйте библиотеку, пример или еще что.
Спасибо
__________________
Глаза боятся, мозг кипит, руки делают.
Оценка
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Новичок
 
Регистрация: 16.10.2013
Сообщений: 2
Репутация: 12
2 0
0 0
 
16.10.2013 18:24 #2
Надо прочитать 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
1 10
0 0
 
17.10.2013 10:31 #3
Цитата:
Сообщение от xkeen
Надо прочитать 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
2 0
0 0
 
17.10.2013 13:08 #4
Цитата:
Сообщение от WhiteSpirit
Огромное спасибо!
Если вам не трудно, и у вас это не займет много времени посмотрите часть кода на С который я подготовлю. Куда можно вам отправить.
Еще раз спасибо!
пишите в личку
Оценка
Ответ
Похожие темы
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход
Электронные компоненты. Бесплатная доставка по России
Часовой пояс GMT +3, время: 15:06.
Обратная связь РадиоЛоцман Вверх