ScherbakovAl / midi_for_stm32h7

реализация usb - midi для stm32h7
1 stars 0 forks source link

Можете предоставить пример использования данной библиотеки? #1

Open Morpheusdreamlord opened 1 year ago

Morpheusdreamlord commented 1 year ago

Приветствую. Пытаюсь найти рабочую библиотеку midiusb для stm . Наткунлся на Ваш код , сделал все как описано , откорректированный код скомпилировался и собрался без ошибок. Контроллер F411 на BlackPill . Залил прошивку в контроллер дабы проверить будет ли опредляться устройство в диспетчере как midi usb . Но в диспетчере пусто. Можно конкретный пример какие функции в main.c нужно прописать дабы устройство для начала просто отправляло миди ноту 36 с велосити 100 по любому каналу в бесконечном цикле ? Я новичек в стм32 , поэтому пока сам не могу разобраться .Спасибо заранее .

ScherbakovAl commented 1 year ago

Доброго времени! По идее, при подключении микроконтроллера с этим примером кода в компьютер должно прийти тестовое миди-сообщение. Тестовое сообщение отправляется при старте из функции void MX_USB_DEVICE_Init(void) (расположено в файле usb_device.c) после инициализации устройства как миди. Попробуйте добавить в конце тела этой функции: ............

HAL_Delay(1000);
while (1) {
    USBD_LL_Transmit(&hUsbDeviceFS, 0x81, txbuf, 8);
    HAL_Delay(1200);
}

............ Когда одно сообщение отправлялось из stm32, то у меня тоже не всегда подключалось/определялось как миди. txbuf содержит в себе миди сообщение формата hires-midi, но оно всё равно должно быть распознано в компьютере. Попробуйте вначале, перед подключением stm32, запустить какую-либо программу на компьютере, которая работает с миди (или можно в браузере открыть страничку: https://www.midimonitor.com/). Также пробуйте несколько раз подключить stm32. Так-то я сам тоже не особо сильно разбираюсь во всём этом.. На F411 и H7 у меня запускалось и прилетало midi в ubuntu.

Morpheusdreamlord commented 1 year ago

Спасибо большое, попробую. Мне нужна была хоть какая-то отправная точка , уверен дальше разберусь . Потом отпишу о результатах .

kroharu commented 1 year ago

Здравствуйте! Спасибо огромное за данный пример! Подскажите, пожалуйста, на какой конкретной плате вы это тестируете? Подойдет ли Nucleo-H743?

Попытался изменить настройки такта под H753 но пока что не достиг успеха, хотя судя по документации для всех H7 контроллеров должен быть одинаковый конфиг. На данный момент USB, судя по ошибке, которая вылезает, конфигурируется правильно, а главная проблема в настройке такта.

Заранее спасибо за ответ!

ScherbakovAl commented 11 months ago

Здравствуйте. Я пробовал это на stm32h750vbt6, stm32f411cu6 и stm32h743vit6. У меня usb не запускался, когда я тактировал usb и процессор через предделители и умножители от основного кварца. Когда переключил тактирование usb на встроенный источник 48мгц, usb заработал(у H7). При этом частоту на процессор можно выбирать любую(видимо). Ищите. Многие нюансы могут скрываться в неожиданных местах.

kroharu commented 11 months ago

Спасибо большое за ответ! К этому моменту разобрался и действительно практически у всех stm32 контроллеров с функционалом USB есть внутренний 48мгц осциллятор, который без проблем запускает USB и тактирует его независимо от основной частоты процессора.

А моя проблема была в резисторе на положительном пине для USB - сопротивление было меньше требуемого. Когда припаял правильный резистор, все заработало.