Инициализация SD карты+Atmega128a
Re: Инициализация SD карты+Atmega128a
Простите, но я всё равно не могу разобраться.
Смотрите:
Я даю команду 18 читать все сектора подряд. В цикле после этого каждый раз выпрашиваю data(0xff); в ответ приходят данные с лишними (паразитными CRC) байтами. SPDR приравниваю к регистру OCR. Получаю звук с тарахтением. Видимо это и есть 2 лишних байта. Как их подешевле отрезать? И получать только полезную информацию?
Смотрите:
Я даю команду 18 читать все сектора подряд. В цикле после этого каждый раз выпрашиваю data(0xff); в ответ приходят данные с лишними (паразитными CRC) байтами. SPDR приравниваю к регистру OCR. Получаю звук с тарахтением. Видимо это и есть 2 лишних байта. Как их подешевле отрезать? И получать только полезную информацию?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Инициализация SD карты+Atmega128a
Так и не выводите эти байты в OCR. Пытаюсь объяснить - 512 байт вывели в OCR, потом знаем, что дальше мусор (последний байт мусора 0xFE) и соответственно эти байты не надо посылать в OCR.
Re: Инициализация SD карты+Atmega128a
Спасибо большое получилось!
void PLAY (void)
{
unsigned int c;
for(c=0; c<512; c++)
{
__delay_cycles(60);
data(0xff);
OCR1A=SPDR;
}
while (SPDR!=0xFE)
{
data(0xff);
}
}
void PLAY (void)
{
unsigned int c;
for(c=0; c<512; c++)
{
__delay_cycles(60);
data(0xff);
OCR1A=SPDR;
}
while (SPDR!=0xFE)
{
data(0xff);
}
}
Re: Инициализация SD карты+Atmega128a
А возможно получить список файлов находяшийся на microSD с адресами полезных секторов? Буду признателен за информацию)
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Инициализация SD карты+Atmega128a
Посмотрите реализации Fat для микроконтроллеров в интернете. У меня реализовано было очень упрощенно - большая часть вычислений была сделана на компьютере - надо было втиснуть в простенький микроконтроллер. Это работало только под один тип карточек - их сразу покупали много.
Re: Инициализация SD карты+Atmega128a
Добрый день) Пришло время избавиться от WAVа и перейти на mp3 поставив уже купленный декодер VS1011e soic28. Плату какую-ни какую я придумал уже. У кого есть наработки с работой с данным чипом? Исходники, советы также принимаються. Я так понимаю что чипу нужна инициализация и т.д. Очень интересен данный вопрос.
Re: Инициализация SD карты+Atmega128a
Людии! АУУУ!!!
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Инициализация SD карты+Atmega128a
А что у производителя информации недостаточно?
http://www.vlsi.fi/en/support/software/ ... tware.html
Врядли кто в наше время занимается изготовлением мп3 плеера, вот на армах вытягивают мп3 без декодера.
http://www.vlsi.fi/en/support/software/ ... tware.html
Врядли кто в наше время занимается изготовлением мп3 плеера, вот на армах вытягивают мп3 без декодера.
Re: Инициализация SD карты+Atmega128a
nikityan писал(а):CMD0 проходит успешно в результате 0x01. Далее какие только команды не пробую 0x00 не возвращает.
У меня проблема 1в1, карточки microSD 512mb/1Gb/2Gb...
nikityan писал(а):Научился инициализировать флешку) Теперь читаю с неё подряд все сектора.
Как побороли? Можно глянуть Ваш инит карты? Спасибо.
Re: Инициализация SD карты+Atmega128a
Вот бета версия WAV плеера. Код был заточен под 128 мегу. Но потом решил под 32 мегу ноги поменять. вообшем пробуйте) задавайте вопросы)
- Вложения
-
- main.rar
- (749 байт) 167 скачиваний
Re: Инициализация SD карты+Atmega128a
Спасибо. Вопрос решился:) сам накосячил...
Мое устройство имеет батарейное питание, причем предполагается его непрерывная работа. Я принял решение отключать питание с карты во время простоя, сделал просто, на вывод мк посадил флешку и по желанию ее вкл/выкл вроде все ок. Но как выяснилось она жрет при ините в 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.
Мое устройство имеет батарейное питание, причем предполагается его непрерывная работа. Я принял решение отключать питание с карты во время простоя, сделал просто, на вывод мк посадил флешку и по желанию ее вкл/выкл вроде все ок. Но как выяснилось она жрет при ините в 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.
Re: Инициализация SD карты+Atmega128a
Люди) А что нужно чтоб проигрывать 8 битный WAV стерео. А то моно уже надоело. Я не могу понять как он записан, какие части на какой канал посылать?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Инициализация SD карты+Atmega128a
сначала идет значение амплитуды для левого канала, затем для правого, затем снова для левого и так далее (с)
http://audiocoding.ru/%D1%81%D1%82%D0%B ... D0%B0.html
http://audiocoding.ru/%D1%81%D1%82%D0%B ... D0%B0.html
Re: Инициализация SD карты+Atmega128a
не получается
void PLAY (void)
{
unsigned int c;
for(c=0; c<512; c++)
{
__delay_cycles(20);
data(0xff);
OCR1A=SPDR;
OCR1B=SPDR;
}
while (SPDR!=0xFE)
{
data(0xff);
}
}
делаю так. процедура PLAY крутиться в цикле. Звук хриплый очень
void PLAY (void)
{
unsigned int c;
for(c=0; c<512; c++)
{
__delay_cycles(20);
data(0xff);
OCR1A=SPDR;
OCR1B=SPDR;
}
while (SPDR!=0xFE)
{
data(0xff);
}
}
делаю так. процедура PLAY крутиться в цикле. Звук хриплый очень
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Инициализация SD карты+Atmega128a
может не будем мучиться: http://elm-chan.org/works/sd8p/report.html
Re: Инициализация SD карты+Atmega128a
где бы диктофон найти на библах чайна, а то кругом одни плееры.