Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Проблема при чтении аудио данных c SD карты

Непрочитано 03.08.2008, 01:32  
IgorAVR2
Прописка
 
Регистрация: 06.09.2007
Сообщений: 122
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
IgorAVR2 на пути к лучшему
По умолчанию Проблема при чтении аудио данных c SD карты

Мне нужно оргонизовать чтение 8 битного звука с SD карты с чатотой 22050гц.

При попытке чтения командой CMD17 то есть читать по одному блоку между блоками происходит небольшая задержка, которая в данном случае не приемлима, т.к. от этого страдает звук.

В карточках есть комада CMD18 - последовательное чтение блоков, пока не появиться команда CMD12(Стоп). Но только между блоками каточка тоже выдаёт какие то байты, которые не относяться к содержимому следующего блока.
Как опредилить начало следующего блока в этой команде? И как вообще правильно использовать данныую команду, что бы можно было читать аудио данные, без существенных задержек?
Реклама:
IgorAVR2 вне форума  
Непрочитано 03.08.2008, 20:37  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Интересуюсь по данному вопросу, хотя накачено данных масса .
Не только по выше названной проблеме но и вообще - по иницилизации карточек , чтение/запись MMC/SD.
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 04.08.2008, 00:05  
VDG
Прописка
 
Регистрация: 20.12.2005
Сообщений: 117
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
VDG на пути к лучшему
По умолчанию

кеш/буфер и ассинхронная работа поможет.
VDG вне форума  
Непрочитано 04.08.2008, 14:48  
Kabron
Почётный гражданин KAZUS.RUN
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,850
Сказал спасибо: 721
Сказали Спасибо 4,537 раз(а) в 2,072 сообщении(ях)
Kabron на пути к лучшему
По умолчанию

Сообщение от VDG
кеш/буфер и ассинхронная работа поможет.
Мдя, ответ из серии "рация на башне"
Kabron вне форума  
Непрочитано 04.08.2008, 15:28  
Yegorvin
Прописка
 
Аватар для Yegorvin
 
Регистрация: 05.02.2008
Сообщений: 251
Сказал спасибо: 34
Сказали Спасибо 7 раз(а) в 6 сообщении(ях)
Yegorvin на пути к лучшему
По умолчанию

Сообщение от Kabron
Сообщение от VDG
кеш/буфер и ассинхронная работа поможет.
Мдя, ответ из серии "рация на башне"
Предварительно считывать в буфер нужно обязательно. Чтение с флеш карт не может идти с постоянной скоростью и без задержек. Так что организовываем в памяти микроконтроллера (или чем там считываеться карточка) буффер и туда записываем данные с упреждением, ну а от туда уже потихоньку выводим звук с нужной скоростью.
Yegorvin вне форума  
Непрочитано 04.08.2008, 15:40  
Kabron
Почётный гражданин KAZUS.RUN
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,850
Сказал спасибо: 721
Сказали Спасибо 4,537 раз(а) в 2,072 сообщении(ях)
Kabron на пути к лучшему
По умолчанию

Я так понимаю, что агитировать за буферизацию никого и не надо.
Автор спрашивал как границы блоков опознавать. Это действительно интересно.
Kabron вне форума  
Непрочитано 04.08.2008, 16:20  
VDG
Прописка
 
Регистрация: 20.12.2005
Сообщений: 117
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
VDG на пути к лучшему
По умолчанию

Сообщение от Kabron
Я так понимаю, что агитировать за буферизацию никого и не надо.
Надо. Так как это не сделано. Раньше наверняка использовал команду побайтного чтения и упреждающее чтение следующего блока делала микросхема. Сейчас он читает блоками по 512 байт. Упреждающего чтения в кеш следующего блока микросхема за него не делает (что правильно).
Сообщение от Kabron
Автор спрашивал как границы блоков опознавать. Это действительно интересно.
Автор такую чушь не спрашивал. Он поблочно читает. Какой блок запросил, такой и считал. Какие ещё такие границы ему не известны?
VDG вне форума  
Непрочитано 04.08.2008, 16:26  
VDG
Прописка
 
Регистрация: 20.12.2005
Сообщений: 117
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
VDG на пути к лучшему
По умолчанию Re: Проблема при чтении аудио данных c SD карты

Сообщение от IgorAVR2
Но только между блоками каточка тоже выдаёт какие то байты, которые не относяться к содержимому следующего блока.
Как опредилить начало следующего блока в этой команде? И как вообще правильно использовать данныую команду, что бы можно было читать аудио данные, без существенных задержек?
Нет таких данных которые карта может выдавать, не относящиеся к блоку. Писали небось по 1024 байта, а считывание делаете по 1050 (если в цифре не ошибаюсь).
Вот Вам отсюда и "левые" данные и якобы "задержка" и мнимые "границы" при потоковом чтении блоков.

При потоковых операциях микросхема делает упреждающее чтение (правда если карте не 100 лет) следующего блока/байта.
Чтобы не было "мусора" читайте и пишите командами на блоки равной длины - либо на 1024 байт, либо на 1050 байт.
Вобщем, читать даташит на протокол надо очень внимательно. Там каждая буква важна.
VDG вне форума  
Непрочитано 05.08.2008, 11:35  
IgorAVR2
Прописка
 
Регистрация: 06.09.2007
Сообщений: 122
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
IgorAVR2 на пути к лучшему
По умолчанию

Так, в вопросе я разобрался (помогли в другом месте), результаты следующие.

Меня действительно интересовало как опознать начало следующего блока в команде CMD18 и как выяснилось что в конце бока идут два байта CRC считанного блока (что из даташита я так и не понял). Имено их я считал левыми байтами. А дальше, что бы опрелделить начало следующего блока, ждём от карты FE, после чего идут данные самого блока.

За буферизацию агетировать я думаю не надо, т.к. до этого варианта я сам то же догадался, но он не всегда приемлим, т.к. требует совершенно других вичислительных ресурсов. А они не всегда имеются.

Я же пока сделал без буферизации, для голоса качество получилось вполне приличное, хотя не большая задержка между блоками есть, но на слух при воспроизведении голоса или даже музыки это не слышно.
IgorAVR2 вне форума  
Непрочитано 05.08.2008, 11:49  
IgorAVR2
Прописка
 
Регистрация: 06.09.2007
Сообщений: 122
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
IgorAVR2 на пути к лучшему
По умолчанию Re: Проблема при чтении аудио данных c SD карты

Сообщение от VDG
Писали небось по 1024 байта, а считывание делаете по 1050 (если в цифре не ошибаюсь).
А разве размер блока может быть больше 512байт? Если можно ткните носом, где это написано. Потому что мне помница то что не больше 512 байт?
IgorAVR2 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DS1307 и глюки при чтении _Stealth_ Микроконтроллеры, АЦП, память и т.д 20 21.12.2011 14:06
Борьба с шумом при захвате аудио whazza Аудиотехника 1 23.05.2008 10:39
Связь 2 двух МК по RS485,ошибки при передаче данных. Zemlyanov Микроконтроллеры, АЦП, память и т.д 8 12.10.2007 12:58
При чтении CD диска выдаёт 00 треков 00:00 минут axle Аудиотехника 3 10.04.2006 11:06
PIC16F84A проблема с записью в ПЗУ данных Jerry86 Микроконтроллеры, АЦП, память и т.д 2 23.12.2004 02:43


Часовой пояс GMT +4, время: 13:07.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.