Простите, но я всё равно не могу разобраться.
Смотрите:
Я даю команду 18 читать все сектора подряд. В цикле после этого каждый раз выпрашиваю data(0xff); в ответ приходят данные с лишними (паразитными CRC) байтами. SPDR приравниваю к регистру OCR. Получаю звук с тарахтением. Видимо это и есть 2 лишних байта. Как их подешевле отрезать? И получать только полезную информацию?
Так и не выводите эти байты в OCR. Пытаюсь объяснить - 512 байт вывели в OCR, потом знаем, что дальше мусор (последний байт мусора 0xFE) и соответственно эти байты не надо посылать в OCR.
Посмотрите реализации Fat для микроконтроллеров в интернете. У меня реализовано было очень упрощенно - большая часть вычислений была сделана на компьютере - надо было втиснуть в простенький микроконтроллер. Это работало только под один тип карточек - их сразу покупали много.
Добрый день) Пришло время избавиться от WAVа и перейти на mp3 поставив уже купленный декодер VS1011e soic28. Плату какую-ни какую я придумал уже. У кого есть наработки с работой с данным чипом? Исходники, советы также принимаються. Я так понимаю что чипу нужна инициализация и т.д. Очень интересен данный вопрос.
Спасибо. Вопрос решился:) сам накосячил...
Мое устройство имеет батарейное питание, причем предполагается его непрерывная работа. Я принял решение отключать питание с карты во время простоя, сделал просто, на вывод мк посадил флешку и по желанию ее вкл/выкл вроде все ок. Но как выяснилось она жрет при ините в 38мА! в ожидании 4,4мА поэтому мой инит толком не проходил, CMD0 всегда был ок а вот далее флешка не реагировала т.к. при запуске инита питающий вывод перегружался и ограничивал ток через флешку что приводило к ее сбросу по питанию. Сейчас зацепил напрямую от 3.3v все пашет:)
Инит у меня такой:
1)CMD0 [0] ok далее, иначе выход.
2)CMD55 [0] ok далее (карта SD v1 или v2), иначе (карта MMC) на пункт 4.
3)ACMD41 [0] долбим пока не выйдет время ~1c или заведемся.
4)CMD1 [0] долбим пока не выйдет время ~1c или заведемся.
Карты большого объема >2G пока пока не использовал, но в принципе ее инициализация д.б. такая же только в аргументе ACMD41 нужно поднять бит HCS.