Hello!
Как то давно я загорелся идеей сделать открытый музыкальный плеер(отдельное устройство). Эта идея была вызвана многими причинами: начиная от банального отсутствия необходимых функций в существующих плеерах и кончая ненадёжностью плееров из смартфончиков и планшетиков(малая продолжительность автономной работы, в дешёвых моделях - качество звука и тд).
Будучи знакомым с STM32 микроконтроллерами я начал работу. Было два варианта плеера: с использованием аппаратного кодека или программного. После экспериментов с программным я решил использовать хардварный(из-за низкого качества декодирования, отсутствия множества форматов, отсутствия эквалайзера и других необходимых для нормальной работы плеера фич).
После долгих поисков я остановился на кодеке VS1053. Он был оптимальным по соотношению цена/качество*фичи. После первых тестов я понял, что он офигенен: качество звука на высоте, огромный подробный даташит, множество поддерживаемых форматов и простота работы с ним.
Итак, я начал работы. Собрал макет и стал писать программу.
На макете присутствовал сам кодек на отладочной платке с алиекспресса, MCU - stm32f103cbt6(было достаточно ножек и был в наличии в ближайшем чипдипе)(плату развёл и сделал сам фотки), eeprom(24lc256 - самая дешёвая), уродливый разъём для microsd карточки(внутренний еврей не позволил покупать разъём для макета за 150 рублей. В итоге на макете частоту SDIO пришлось снизить, но на это повлияли больше длинные провода, чем разъём), OLED 0.96" дисплей на контроллере SSD1306(просто обожаю чб олед дисплеи(они няяяшные)) и самодельная 12ти кнопочная клавиатурка.
Фотки макета: https://imgur.com/a/TvJSv
На ютубе можно посмотреть видео с самых первых этапов разработки(тогда даже не была написана система и не был допилен гуй): https://www.youtube.com/channel/UC5pY283jfYVHqjVQ8bXEKBQ
Программил я после учёбы, поэтому затянулось всё на долго. Но в итоге было много чего сделано: драйвер дисплея(его я написал раньше, теперь перевёл на DMA), драйвер кодека, система, которая позволяет запускать отдельные приложения и управляет всем, в том числе и необходимыми харварными частями и отображением всего на экран, библиотека графического интерфейса со множеством необходимых элементов, сам графический интерфейс(менюшки, верхний бар, настройки и тд), музыкальный плеер(тот, что только взаимодействует с драйверами) и три приложения(файловый менеджер, тестовое приложение и приложения для музыкального плеера(интерфейс)). Всё это работало, играло музыку и причём совсем таки не плохо.
В это же время я рисовал схему и разводил плату. В итоге вышло так: фото разводки 1 фото разводки 2 ещё фотки разводки и схема.
Заказать детали для плеера и плату с завода предприятие, где я сейчас подрабатываю. В итоге я получил такую красоту: https://imgur.com/a/w70eH
И всё вместе собрал: https://imgur.com/a/paefn
Нооо... В разводке нашлись ошибки(не принципиальные, но всё же. Это была первая такая сложная плата). Но всё заработало просто великолепно! Даже играло музыку. Почти. Я забыл в схеме сделать фильтр на выходе кодека и допаял его сверху на самой плате. И видимо в результате отладки бедная микросхемка, наверное, сгорела(но лишь наполовину. По SPI она отвечает, говорит и даже, якобы, воспроизводит музыку, хотя на выходе тишина).
Но в итоге я очень расстроился и бросил это дело. Даже не записал ни одно видео работы =с
Я написал этот постик просто так, чтобы хоть где-нибудь было упоминание об этом проекте. Но я буду очень рад, если найдутся люди, которым понравилась эта идея и они готовы продолжить его со мной.
Все исходники: схемы, разводки(KiCad), программа для MCU(в Keil uVizion) и библиотеки лежат тут: https://github.com/SL-RU/sdmplayer
Спасибо за внимание.