Запуск USB AudioDevice на STM32F103C8

Уважаемое сообщество!
Уже больше недели бьюсь над запуском USB на STM32 в составе PinBoard2 — безрезультатно. В связи с чем и обращаюсь к вам за помощью.
Использую CooCox, а также в процессе неудачных попыток поставил TrueStudio, но как-то оно совсем не тру…
В CooCox создал новый проект, и подбросил туда файлы исходников, затем, путем правки многочисленных дефайнов, поскольку у меня не оригинальная отладочная плата, постепенно все это стало собираться и линковаться и даже отлаживаться, но устройство не определяется.
Последней правкой, на которую я расчитывал, было
#define HSE_VALUE 12000000

но это тоже не помогло.
В архиве кладу проект для CooCox.
Что я делаю не так? :-)
UPD:USB заработало, подробности в комментариях. Буду наращивать функционал.
  • 0
  • 05 августа 2012, 18:46
  • antonluba
  • 1
Файлы в топике: test2.zip

Комментарии (21)

RSS свернуть / развернуть
Вряд ли это вам поможет, но HSE_VALUE лучше определять опциями компилятора. Не знаю как это делается в ГУИ CooCox, но в командой строке опция должна выглядеть так: -DHSE_VALUE=12000000
0
Не помогло…
0
А сможет кто-нибудь мой хекс залить, может камень битый у меня… Надо бы проверить бутлоадером…
0
там в гуях не задается частота смотрите — system_stm32f10x.c
0
Извините, но из Вашего вопроса непонятно, что именно не работает.
1. Как именно не определяется устройство? Еговообще не видно при подключении или винда не может его опознать?
2. Что за исходники? Это пример от STM или еще что?
3. Если это пример, то все ли сигналы Вы поправили для использования на пинборде вместо EVAL?

Это так, на вскидку…
0
1. Подтяжка USB подключается программно, после этого хост начинает обмен, но ответа от мк нет.
2. Исходник из примера в комплекте USB-fs-library
3. GPIO для подтяжки USB поправил, сами линии USB подключил перемычками, программно они в правке вроде не нуждаются? Все остальное пока не трогаю, буду дорабатывать, когда USB запущу.
Наверное, все-таки с тактированием что-то не так…
0
Из пункта 1 я понял, что система видит устройство, но не может опознать его. Верно?

Попробуйте отрубить в прерывании USB обработку Sleep. Она у STшников как-то криво написана, или я такой тупой, что не понял. У меня получалось что устройство постоянно пыталось уснуть. Как только отключил — все заработало.
0
Ну и проверьте все дескрипторы. Если где-то ошибка — устройство тоже определяться не будет.
0
Да, видит что устройство подключено, но VID и PID == 0.
0
Нашел, все-таки проблема была с тактированием, оригинальный код был:
//RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

Исправил на:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);

и устройство определилось.
Буду дальше наращивать функционал.
0
Это файл system_stm32f10x.c.
0
не может этого быть :))
+1
Вопрос еще такой родился, кто знает историю:
Почему ST в своих примерах использует VID 0x483, (вообще принадлежал
Thomson Microelectronics), а не один из своих старых — 0х553 к примеру.
И вообще, STMicroelectronics я в usb.if что-то не нашел.
0
  • avatar
  • valio
  • 17 декабря 2012, 13:35
Ну ST и есть SGS-Thomson, почему бы не использовать?
0
cпасиб ) действительно, Semiconduttori Microelettronica + Thomson Semiconducteurs = ST
вообще поражает бурная череда слияний и поглощений у этой компании, но результат достойный:

0
выложите плз куда-нибудь весь код, есть мысля собрать USB цап/усилок D/T-класса, чтобы избежать лишних потерь на конвертирование
0
есть вполне бюджетный vt1620a 24бита/192кГц
0
в смысле как интерфейс его использовать, а потом с него забирать в МК и рулить выходным каскадом? а смысл, если то же самое можно сразу на МК сделать? в смысле я хочу, чтобы был вход по USB и выход — PWM для раскачки выходных транзисторов, т.е. исключить промежуточное преобразование в аналог
0
Проект прикреплен к статье (малюююсенькими буквами после текста статьи до комментов — файлы в топике)
0
о, здорово, спасибо
0
А проект то уже не собирается. В современном CooCox.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.