|
STM32 USB_FS HAL |
|
|
|
Oct 11 2017, 05:56
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Не могу поднять usb device на stm32f401 с помощью CubeMX. Сделал в Cube простенький проект. Подключил только JTAG, USB-Device и указал VCP. настроил клоки. На USB 48 МГц, на шину AHB 24 MГц. Vbus - Разрешил. Сгенерировал проект (IAR) запустил. подключил к ПК. На этом этапе я должен увидеть в диспетчере устройств свой девайс (STM32 Virtual ComPort). В реале вижу Unknown device. Стал дебажить. все прерывания от USB вызывают один обработчик в котором ведётся разбор. void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd); Код /** * @brief Handles PCD interrupt request. * @param hpcd: PCD handle * @retval HAL status */ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) { USB_OTG_GlobalTypeDef *USBx = hpcd->Instance; uint32_t i = 0U, ep_intr = 0U, epint = 0U, epnum = 0U; uint32_t fifoemptymsk = 0U, temp = 0U; USB_OTG_EPTypeDef *ep; uint32_t hclk = 180000000; Первое, что мне не понравилось, это uint32_t hclk = 180000000; это частота hclk на AHB. Почему в коде 180 МГц? Исправил на 24. Всё равно вижу Unknown device. Что-то идет не так. поставил точки останова в разборе прерываний от усб. Прерывания поступают в следующем порядке 1) Handle Connection event Interrupt 2) Handle Suspend Interrupt 3) Handle Reset Interrupt 4) Handle Enumeration done Interrupt всё! в другие ветки обработчика прерывания не попадаю. ПК не может вычитать PID/VID. В инете полно статей по быстрому запуску USB. Они не рассматривают все внутренние механизмы USB, а только поверхностно настройка в CubeMX. Но чегото пошло не так... Аппаратно плата рабочая. Есть прошивка для этой платы, с которой усб работает. Кто сталкивался с подобной проблемой? Куда копать?
|
|
|
|
|
Oct 11 2017, 08:26
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(aaarrr @ Oct 11 2017, 07:33)  Например, нулевой уровень на ID даст такую картину, если нет обработчика ID line status change interrupt. что-то в кубе не донастроил? как исправить? Цитата(Genadi Zawidowski @ Oct 11 2017, 07:45)  Сталкивался. Что-то сломали в st cube. Сгенерите под гцц будет работать. как в кубе генерить ггц проекты?
|
|
|
|
|
Oct 11 2017, 10:19
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(aaarrr @ Oct 11 2017, 09:30)  Проверьте состояние вывода ID. Про куб ничего не подскажу, не использовал никогда. что такое вывод ID?
|
|
|
|
|
Oct 11 2017, 10:41
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(aaarrr @ Oct 11 2017, 10:24)  Вывод процессора, подключенный к одноименному сигналу в USB разъеме. не понимаю..... "Вывод процессора" можно понять как "Вывод процессора в консоль. Т.е. информацию, которую процессор выводит куда-то...", или вывод процессора - это ножка(pin) процессора? если это ножка процессора - то что за ножка? в разъеме USB есть 4 сигнала (даже 2 сигнала + 2 контакта питания) +5V, DP, DM, GND (+ экран). Какой из этих сигналов является ID?
Сообщение отредактировал razrab83 - Oct 11 2017, 10:43
|
|
|
|
|
Oct 11 2017, 10:53
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(razrab83 @ Oct 11 2017, 13:41)  не понимаю..... "Вывод процессора" можно понять как "Вывод процессора в консоль. Т.е. информацию, которую процессор выводит куда-то...", или вывод процессора - это ножка(pin) процессора? Если подключается к линии разъема, то уж наверное речь идет о выводе в смысле pin. Цитата(razrab83 @ Oct 11 2017, 13:41)  если это ножка процессора - то что за ножка? в разъеме USB есть 4 сигнала (даже 2 сигнала + 2 контакта питания) +5V, DP, DM, GND (+ экран). Какой из этих сигналов является ID? У OTG их пять - к перечисленным добавляется ID. У процессора есть соответствующий вывод. Если на нем лог. 0, то USB перейдет в режим хоста. Хотя в этом случае Unknown device не должен бы появляться, так что вряд ли оно.
|
|
|
|
|
Oct 11 2017, 11:25
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
нашел ID пин, нужен для OTG. PA10 в моём процессоре. У меня only usb-device. ID не задействована. Да и куб её не задействует Цитата(jcxz @ Oct 11 2017, 10:44)  Если не можете отличить ногу процессора от "вывода в консоль", то хотя-бы научитесь пользоваться гуглом! https://ru.wikipedia.org/wiki/USB#USB_3.0чтобы искать что-то в гугле, нужно знать что искать. "вывод процессора" нельзя истолковать однозначно, "пин(нога) процессора" можно. Забавно, что тычут носом "учитесь гуглить" и при этом не учат гуглить, и не дают ссылку типа такой, а дают на уже найденную информацию. Причем не на конкретный пин ID, а на исторический 4-х томник, в котором аж сказано "Первые спецификации для USB 1.0 были представлены в 1994—1995 годах".
|
|
|
|
|
Oct 11 2017, 12:03
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(razrab83 @ Oct 11 2017, 14:25)  чтобы искать что-то в гугле, нужно знать что искать. "вывод процессора" нельзя истолковать однозначно, "пин(нога) процессора" можно. Вы - единственный уникум на этом форуме, который так понимает "вывод процессора". Наверняка найдётся и другой уникум, который "ногу процессора" поймёт по своему. Цитата(razrab83 @ Oct 11 2017, 14:25)  при этом не учат гуглить Здесь вроде форум разработчиков, а не бабушек, осваивающих комп. Приведённая ссылка гуглится по "USB". Вот в случае бабушки ещё можно понять если она не знает как найти информацию по USB...
|
|
|
|
|
Oct 11 2017, 12:25
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(jcxz @ Oct 11 2017, 12:03)  Здесь вроде форум разработчиков, а не бабушек.... Приведённая ссылка гуглится по "USB".... Так вы походу бабушка и есть, раз "Вывод процессора" гуглите по "USB" и даете ссылки не по теме... а на какие-то исторические справки развития электроники. Если помочь не можете, если по теме не чего сказать, так хоть холивар не устраивайте, проходите мимо. ps так ещё и ссылка не просто на USB, а на USB 3.0. При чем тут 3.0? Цитата никак не мешает USB пребрасываться в режим хоста по состоянию ID нога id у меня работает как выход GPIO который управляет светодиодом. похоже придётся отказаться от куба и опять писать свой драйвер. И примеров то нет.... для stmf4 сгенерированный проект из куба.... есть куча примеров у st для другой переферии.... для USB не могу найти
|
|
|
|
|
Oct 11 2017, 12:58
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
2aaarrr если будет время/желание.... соберите под 407 кубовский проект там делов на 5 минут. Интересно, заработает или нет
|
|
|
|
|
Oct 11 2017, 13:08
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(A.Lex @ Oct 11 2017, 13:01)  по вашей ссылке Цитата Не найдено
По данному адресу ничего не найдено. нашел, спс
Сообщение отредактировал razrab83 - Oct 11 2017, 13:15
|
|
|
|
|
Oct 11 2017, 16:43
|
Участник

Группа: Участник
Сообщений: 41
Регистрация: 25-08-15
Из: Рыбное
Пользователь №: 88 141

|
razrab83, попробуйте увеличить размер стека и кучи в ассемблерном файле. Генерил как-то usb-device (виртуальный com-порт) для f407 discovery, тоже не заработало, а потом на одном из форумов посоветовали увеличить размер стека и кучи - все заработало. Плюс ко всему надо было "правильно" устанавливать драйвер от ST, так он сначала извлекается в целевую папку, а устанавливать его уже вручную приходилось в зависимости от разрядности винды.
Сообщение отредактировал ivan24190 - Oct 11 2017, 16:47
|
|
|
|
|
Oct 12 2017, 04:17
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(ivan24190 @ Oct 11 2017, 16:43)  Плюс ко всему надо было "правильно" устанавливать драйвер от ST, так он сначала извлекается в целевую папку, а устанавливать его уже вручную приходилось в зависимости от разрядности винды. Спасибо за совет про стек и кучу, попробую. Про драйвер.... винда берёться за драйвер только после того, как pid/vid считает. У меня этого не происходит. Цитата а че за борда то? пулл-ап включается куда надо? самодельная. аппаратная часть отлажена и с самописным драйвером работает. Цитата Собрать вряд ли, а вот прошить и посмотреть работу могу. Хорошо, соберу. Какой процессор (все буковки)? Какой кварц/генератор на HSE? Сделаю hex. Могу проект для иара.
|
|
|
|
|
Oct 12 2017, 11:37
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(aaarrr @ Oct 12 2017, 08:50)  F407VET6, кварц 25MHz
Прикрепленные файлы
stm407.7z ( 354.15 килобайт )
Кол-во скачиваний: 18
|
|
|
|
|
Oct 13 2017, 03:50
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
Цитата(aaarrr @ Oct 12 2017, 13:29)  Определяется: Да ладно!!! А что за борда? не понятно.... почему в исходниках для 407 в прерывании усб uint32_t hclk = 180000000U; Спасибо за тест.... возможно всё таки не правильно аппаратная часть. буду перепроверять.
|
|
|
|
|
Oct 13 2017, 07:47
|
Участник

Группа: Участник
Сообщений: 52
Регистрация: 5-05-17
Пользователь №: 96 902

|
взал для испытаний кит дискавери на 401-ом. сгенерил для дискавери 401. залил - анкноун девайс. пробовал стек увеличить (стек с00, куча а00) - анкноун девайс, пробовал vcp и hid - unknown device!!!
странно...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|