Arduino + SD + FAT16

Вопросы и ответы связанные с цифровым управлением, аналоговой автоматикой и их элементами
Сообщение
Автор
Аватара пользователя
Василий
Модератор
Сообщения: 9386
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 328 раз
Поблагодарили: 419 раз
Контактная информация:

Re: Arduino + SD + FAT16

#11 Непрочитанное сообщение Василий »

BR95009 писал(а):
Вс июн 04, 2017 12:47 pm
А как воспроизвести одновременно эти 6 файлов? Вот вопрос.
Можно вопрос, вы только не обижайтесь :) :) :) - с какой целью и на каком уровне, так сказать, понимания вопроса интересуетесь? В том смысле, что вы знаете, хотя бы приблизительно, как это все работает внутри? Или на уровне пообщаться за кофейком?

Если на уровне кофейка, то ответ - несложно.

Если на уровне внутреннего устройства - все зависит от возможностей микроконтроллера. Как с точки зрения быстродействия, так и с точки зрения доступных ресурсов. Можно прикинуть - на ардуине мини, без каких либо изысков можно получить скорость чтения с SD - 1120 Kbps.. Для звука скажем в виде нежатого WAV 44100Hz, 8bit, 1 канал, скорость составляет 352.80 Kbps, хотя и это на мой взгляд очень хорошо для маленьких динамиков. То есть даже для мелкой и тупой ардуины вполне по силам читать 2 файла и микшировать их относительно сложным алгоритмом с вычислением уровней в пределах 512 байт файла.

Если взять равноценный по цене (100-150р за плату) МК на stm32 показатели вырастут если не на порядок, то в несколько раз точно. Ну а если МК будет подороже, ну примерно как STM32F103VET6, то в принципе реализуемы не только миксинг каких-то 6 файлов, но и преферанс с институтками.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя
Василий
Модератор
Сообщения: 9386
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 328 раз
Поблагодарили: 419 раз
Контактная информация:

Re: Arduino + SD + FAT16

#12 Непрочитанное сообщение Василий »

Так, пока с FAT-ом есть некоторые вопросы, в первом сообщении темы выкладываю код для инициализации и чтения блоков с SD карточки. С пояснениями и комментариями :)
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя
Василий
Модератор
Сообщения: 9386
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 328 раз
Поблагодарили: 419 раз
Контактная информация:

Re: Arduino + SD + FAT16

#13 Непрочитанное сообщение Василий »

Что-то загнулась идея. Не получается сделать быстрее и меньше чем существующие библиотеки. Либо быстрее и больше, либо меньше и медленнее :)

Посему принято решение не выпендриваться и хранить все что нужно на SD карте без файловой системы. Вернее с очень-очень упрощенной реализацией. Типа номер файла, размер, номер сектора с которого лежит. Файлы буду храниться в последовательных секторах без дырок. Для задач ардуины более чем достаточно.

Но это уже совсем другая история, которая будет освещена в другой теме.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

shalex
Сообщения: 285
Зарегистрирован: Сб июн 06, 2015 3:26 pm
Благодарил (а): 23 раза
Поблагодарили: 10 раз

Re: Arduino + SD + FAT16

#14 Непрочитанное сообщение shalex »

Василий, а в чем именно проблема?
Читал-читал, но не смог понять :(

Аватара пользователя
Василий
Модератор
Сообщения: 9386
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 328 раз
Поблагодарили: 419 раз
Контактная информация:

Re: Arduino + SD + FAT16

#15 Непрочитанное сообщение Василий »

Проблема в мелкой ардуине. Памяти маловато.

Если конкретно, то для скорости нужно бы некоторые вещи хранить в памяти, например цепочки кластеров, а не читать каждый раз "по необходимости". Соответственно все это в память не лезет. А при чтении по необходимости, очень сильно падает производительность.
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

shalex
Сообщения: 285
Зарегистрирован: Сб июн 06, 2015 3:26 pm
Благодарил (а): 23 раза
Поблагодарили: 10 раз

Re: Arduino + SD + FAT16

#16 Непрочитанное сообщение shalex »

Василий писал(а):
Пн сен 25, 2017 8:54 pm
Проблема в мелкой ардуине. Памяти маловато.

Если конкретно, то для скорости нужно бы некоторые вещи хранить в памяти, например цепочки кластеров, а не читать каждый раз "по необходимости". Соответственно все это в память не лезет. А при чтении по необходимости, очень сильно падает производительность.
А если рядом поставить тиньку, которая будет перекачивать с карты в какую нить быструю память? В свою же, например :)
p.s. Интересная задача для программера, на мой взгляд - сделать внешний буфер на МК. Вот только хватит ли скорости обмена между главным МК и МК-буфером?

Аватара пользователя
Василий
Модератор
Сообщения: 9386
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 328 раз
Поблагодарили: 419 раз
Контактная информация:

Re: Arduino + SD + FAT16

#17 Непрочитанное сообщение Василий »

Да все можно запилить. Вон тут читал статейку как на 128-ю тиню - simm принайтовали :) Только зачем? Проверить чисто теоретическую возможность?
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

shalex
Сообщения: 285
Зарегистрирован: Сб июн 06, 2015 3:26 pm
Благодарил (а): 23 раза
Поблагодарили: 10 раз

Re: Arduino + SD + FAT16

#18 Непрочитанное сообщение shalex »

Василий писал(а):
Пн сен 25, 2017 10:40 pm
Да все можно запилить. Вон тут читал статейку как на 128-ю тиню - simm принайтовали :) Только зачем? Проверить чисто теоретическую возможность?
Ну, если будет хорошее качество воспроизведения, то не и не жалко две Нано поставить, по стоимости нормальный звуковой одноголосый шилд (на VS1053B) ощутимо дороже стоит.

Аватара пользователя
Василий
Модератор
Сообщения: 9386
Зарегистрирован: Чт мар 06, 2008 9:03 am
Имя: Василий Васильчиков
Откуда: Северо-западное Болото
Благодарил (а): 328 раз
Поблагодарили: 419 раз
Контактная информация:

Re: Arduino + SD + FAT16

#19 Непрочитанное сообщение Василий »

shalex писал(а):
Пн сен 25, 2017 11:12 pm
Ну, если будет хорошее качество воспроизведения, то не и не жалко две Нано поставить, по стоимости нормальный звуковой одноголосый шилд (на VS1053B) ощутимо дороже стоит.
Так я под эту микруху VS1053 и пилю :) Только я сами чипы россыпью купил. По цене сопоставимо с наной :)
In der Grosse Familie nicht der клювом клац-клац!
--------------------------------------------------------------------------
Не натягивайте сову на глобус!

Аватара пользователя
Engineer_Keen
Сообщения: 313
Зарегистрирован: Ср фев 24, 2010 11:15 am
Имя: Василий
Откуда: Москва
Поблагодарили: 5 раз

Re: Arduino + SD + FAT16

#20 Непрочитанное сообщение Engineer_Keen »

Я так понимаю, цель использования SD-карточки в том, что в отличии от отдельной микросхемы флеш-памяти, карточку проще достать, и файлы на нее можно залить быстро с компа, да и объемы у них поприличнее? Тогда есть еще вариант:
1) отдельной прогой (которую конечно придется написать) для компа собираем все нужные файлы в один, в заголовке которого будет необходимая информация ("упрощенная FAT")- адреса (смещение) отдельных файлов, их ID или какую-либо еще инфу;
2) карточку форматируем;
3) копируем этот большой файл на флешку - должно получится без фрагментирования;
4) контроллером при старте читаем FAT флешки, проверяем что нет фрагментирования,
находим заголовок большого файла и читаем в память нужные данные ("упрощенную FAT").
Так для каждого файла нужно будет всего 5-6 байт оперативки (4 на адрес, и сколько угодно для любой информации).
Хотя конечно карточка все равно сильно уступает отдельной микросхеме (той же AT45) в простоте и скорости доступа...

Ответить

Вернуться в «Цифровое управление, Аналоговая автоматика и их элементы»