Здравствуйте Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
|
Для дома, для семьи. -> YMU762 - музыкальный 40-голосный синтезатор (железо, программирование)
В данной статье рассказано, как запустить микросхему YMU762, которая представляет собой 40-голосный звуковой синтезатор (32 канала FM синтеза и 8 каналов WT синтеза) + воспроизведение ADPCM. Обсуждение на форуме: http://vrtp.ru/index.php?showtopic=30096 Для начала, читаем что такое SMAF (MMF) и с чем его едят: http://gamma-aspirin.narod.ru/Mobil/Articles/Audio/SMAF.html Потом читаем сохраненную копию умершего сайта Ямахи про SMAF: 1) https://web.archive.org/web/20120830210920/...what/about.html 2) https://web.archive.org/web/20101221042737/...ndchip_ma3.html Краткая структурная схема YMU762: Подробная структурная схема: Из схемы видно следующее: 1) Общение микросхемы через 8-битную параллельную шину данных (очень легко и красиво прикручивается через интерфейс внешней шины микроконтроллеров: ATmega, ARM, BlackFin, TI) 2) Для тактирования микросхемы нужен внешний кварцевый генератор. Финальная частота устанавливается регистрами PLL в микросхеме YMU762 3) Наличие выводов LED и MTR для реализации цвето-музыкальных эффектов (в такт музыки или фиксированная частота) 4) Вывод !IRQ для обработки прерываний (таймеры YM762, подгрузка новых порций данных, и т.п.) 5) Вывод звука на наушники 6) ОУ для эквалайзера 7) Усилитель мощности для динамика (8 Ом 500 мВт), дифференциальный (а значит - помехозащищённый) выход 8) Синтезатор с семплами, зашитыми в ROM , возможность загружать свои семплы в RAM. 9) Наличие FIFO, Секвенсора, которые снижают нагрузку на управляющий контроллер. 6) и 7) можно использовать для усиления внешних звуковых сигналов (подмешивать), управление доступом/громкостью через регистры YMU762. Необходимый софт (плееры, конвертеры, редакторы) скачиваем здесь: http://www.mmf-pro.ru/files Ниже выкладываю минимально необходимый набор для тестов MMF(SMAF). Программа для воспроизведения MMF на компьютере от Yamaha: http://vrtp.ru/index.php?act=Attach&type=post&id=779201 Архив музыки MMF(SMAF) с умершего ямаховского сайта: http://vrtp.ru/index.php?act=Attach&type=post&id=779202 Макетная плата с YMU762 + отладка STM32F4Discovery: Сама макетка с YMU762, обвеска собрана навесным монтажoм: Видео в действии: https://www.youtube.com/watch?v=qqYftv_KT-s Откуда взять YMU762:
Может стоять YMU762 или её предшественник (возможностей меньше, программно совместима с 762й только на уровне MA-2, распиновка отличается!) - YMU759:
Пример мобилы с YMU762: Платы с микросхемами, залитыми эпоксидной смолой - избегайте! Микросхема умрет от перегрева! Допустимая температура - до 240 градусов, греть только по периметру(ножки)! От перегрева кристалл может деградировать, часть ножек - отвалиться от кристалла. Схема включения YMU762 из мануала на Samsung C100: Моя схема включения для STM32F407: Варианты эквалайзеров, взятые из разных мануалов на телефоны: Референсный код от Ямахи, там же документация на программирование YMU762 и много MMF-файлов для тестирования: http://vrtp.ru/index.php?act=Attach&type=post&id=779206 Для запуска нужно изменить содержимое в файлах: mamachdep.h и mamachdep.c (подробнее в ридми и в доках Ямахи): 1) Рассчитать множитель и делитель PLL, для получения нужной тактовой частоты YMU762( надо 55.296 MHz). Использую генератор на 14.31818 МГц (другого просто нет под рукой!) - у меня тактовая на 2 кГц больше, чем надо :) Но это не страшно, просто частоты всех звуков будут чуть-выше и паузы синхронизации чуть сократятся:
В идеале нужен генератор на 12.288 МГц и умножение на 4.5 (MUL=9, DIV=2) для получения нужных 55.296 МГц 2) Задефайнить адреса регистров или написать функции чтения-записи в регистры:
3) Ещё немного по мелочи. Для более точного подбора делителя и умножителя PLL использую скрипт: http://vrtp.ru/screenshots/3718_pll.zip Просто запустить в браузере, предварительно отредактировав в скрипте частоту своего кварцевого генератора (допустимо от 2 до 20 МГц): Ну и наконец, мой рабочий проект в Keil для STM32F407 (отладочная плата STM32F4Discovery). Воспроизведение MMF файла, зашитого во Flash контроллера. Обновление данных - по внешнему прерыванию от YMU762. Есть пауза и снятие с неё. http://vrtp.ru/index.php?act=Attach&type=post&id=779207 Для воспроизведения MIDI вместо MMF нужно исправить одну константу в:
MASMW_CNVID_MMF заменить на: MASMW_CNVID_MID. Для синхронизации мелодии используются внутренние ресурсы YMU762: секвенсор и таймеры! Возможно задание формата для воспроизведения оцифровок, отдельных звуков - подробно в документации (в архиве сорца от Ямахи постом выше). UPDATE: 15.06.2018 Проверил работу YMU762 с WAV-файлами. Залил во флеш контроллера WAV PCM mono 8 бит 24 кГц. Играет; замерил частотомером частоту появления внешнего прерывания - 50 Гц. Выходит, буфер используется на 480 байт: =24000/50 Очень даже неплохо, если питать данными через слабенький AVR или PIC :) Причем двойная буферизация здесь не нужна! Потому что FIFO - накидал данных и жди внешнего прерывания... Сорец под Keil. Там жеи прошивка в папке obj http://vrtp.ru/index.php?act=Attach&type=post&id=779442 Обсудить на форуме в теме: http://vrtp.ru/index.php?showtopic=30096 :) |