Статистика
Время:
Зарегистрированных: 88403
Последним зарегистрирован: 777KVP777
Рекорд посещаемости: 12585
Групп пользователей: 4
 Группы:
[Admin] [Cоучастник] [Автор] [Модератор]
 Сейчас на сайте
 Всего: 822
 Гостей: 815
 Анонимных: 1
 Пользователей: 6
 Зарегистрированные:
kc2010 777KVP777 qwertos dgek125 Ymbedder alexr171

> Для дома, для семьи. -> YMU762 - музыкальный 40-голосный синтезатор (железо, программирование)
image

В данной статье рассказано, как запустить микросхему 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:

image

Подробная структурная схема:

image

Из схемы видно следующее:

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:

image

Сама макетка с YMU762, обвеска собрана навесным монтажoм:

image

Видео в действии: https://www.youtube.com/watch?v=qqYftv_KT-s

Откуда взять YMU762:
QUOTE

Samsung: C100 C200 C230 E350E E400 P400 S300 T500 T508 U100 X100 X210 X461 X600 X640 X648 X650 X670 X700 X820
Alcatel: 557 565
LG: W3000


Может стоять YMU762 или её предшественник (возможностей меньше, программно совместима с 762й только на уровне MA-2, распиновка отличается!) - YMU759:
QUOTE
LG: C1100 G5300


Пример мобилы с YMU762:

image

Платы с микросхемами, залитыми эпоксидной смолой - избегайте! Микросхема умрет от перегрева! Допустимая температура - до 240 градусов, греть только по периметру(ножки)!
От перегрева кристалл может деградировать, часть ножек - отвалиться от кристалла.

Схема включения YMU762 из мануала на Samsung C100:

image

Моя схема включения для STM32F407:

image

Варианты эквалайзеров, взятые из разных мануалов на телефоны:

image

Референсный код от Ямахи, там же документация на программирование 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 кГц больше, чем надо :) Но это не страшно, просто частоты всех звуков будут чуть-выше и паузы синхронизации чуть сократятся:
CODE

#define MA_ADJUST1_VALUE (29) /* register bank 1, ID #5 */
#define MA_ADJUST2_VALUE (112) /* register bank 1, ID #6 */
#define MA_PLL_OUT  (55298) /* PLL Output value (kHz) ex.:55296 */


В идеале нужен генератор на 12.288 МГц и умножение на 4.5 (MUL=9, DIV=2) для получения нужных 55.296 МГц

2) Задефайнить адреса регистров или написать функции чтения-записи в регистры:
CODE

#define MA_STATUS_REG  (*(volatile unsigned char*) 0x60000000)
#define MA_DATA_REG  (*(volatile unsigned char*) 0x60010000)


3) Ещё немного по мелочи.

Для более точного подбора делителя и умножителя PLL использую скрипт:
http://vrtp.ru/screenshots/3718_pll.zip

Просто запустить в браузере, предварительно отредактировав в скрипте частоту своего кварцевого генератора (допустимо от 2 до 20 МГц):

image

Ну и наконец, мой рабочий проект в Keil для STM32F407 (отладочная плата STM32F4Discovery).
Воспроизведение MMF файла, зашитого во Flash контроллера.
Обновление данных - по внешнему прерыванию от YMU762.
Есть пауза и снятие с неё.
http://vrtp.ru/index.php?act=Attach&type=post&id=779207

Для воспроизведения MIDI вместо MMF нужно исправить одну константу в:
CODE

MaSound_Create(MASMW_CNVID_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
:)





  banner DIPTRACE - САМЫЙ ЛУЧШИЙ ТАКСИРОВЩИК ПЕЧАТНЫХ ПЛАТ
Portal-X