Перейти к содержанию
    

Не могу поднять 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. Но чегото пошло не так... Аппаратно плата рабочая. Есть прошивка для этой платы, с которой усб работает.

 

Кто сталкивался с подобной проблемой? Куда копать?

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Но чегото пошло не так...

Например, нулевой уровень на ID даст такую картину, если нет обработчика ID line status change interrupt.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сталкивался. Что-то сломали в st cube. Сгенерите под гцц будет работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Например, нулевой уровень на ID даст такую картину, если нет обработчика ID line status change interrupt.

что-то в кубе не донастроил? как исправить?

 

Сталкивался. Что-то сломали в st cube. Сгенерите под гцц будет работать.
как в кубе генерить ггц проекты?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что-то в кубе не донастроил? как исправить?

Проверьте состояние вывода ID. Про куб ничего не подскажу, не использовал никогда.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте состояние вывода ID. Про куб ничего не подскажу, не использовал никогда.

что такое вывод ID?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что такое вывод ID?

Вывод процессора, подключенный к одноименному сигналу в USB разъеме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вывод процессора, подключенный к одноименному сигналу в USB разъеме.

не понимаю..... "Вывод процессора" можно понять как "Вывод процессора в консоль. Т.е. информацию, которую процессор выводит куда-то...", или вывод процессора - это ножка(pin) процессора?

если это ножка процессора - то что за ножка? в разъеме USB есть 4 сигнала (даже 2 сигнала + 2 контакта питания) +5V, DP, DM, GND (+ экран). Какой из этих сигналов является ID?

Изменено пользователем razrab83

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

если это ножка процессора - то что за ножка? в разъеме USB есть 4 сигнала (даже 2 сигнала + 2 контакта питания) +5V, DP, DM, GND (+ экран). Какой из этих сигналов является ID?

Если не можете отличить ногу процессора от "вывода в консоль", то хотя-бы научитесь пользоваться гуглом!

https://ru.wikipedia.org/wiki/USB#USB_3.0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не понимаю..... "Вывод процессора" можно понять как "Вывод процессора в консоль. Т.е. информацию, которую процессор выводит куда-то...", или вывод процессора - это ножка(pin) процессора?

Если подключается к линии разъема, то уж наверное речь идет о выводе в смысле pin.

 

если это ножка процессора - то что за ножка? в разъеме USB есть 4 сигнала (даже 2 сигнала + 2 контакта питания) +5V, DP, DM, GND (+ экран). Какой из этих сигналов является ID?

У OTG их пять - к перечисленным добавляется ID. У процессора есть соответствующий вывод. Если на нем лог. 0, то USB перейдет в режим хоста.

 

Хотя в этом случае Unknown device не должен бы появляться, так что вряд ли оно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

нашел ID пин, нужен для OTG. PA10 в моём процессоре. У меня only usb-device. ID не задействована. Да и куб её не задействует

 

Если не можете отличить ногу процессора от "вывода в консоль", то хотя-бы научитесь пользоваться гуглом!

https://ru.wikipedia.org/wiki/USB#USB_3.0

чтобы искать что-то в гугле, нужно знать что искать. "вывод процессора" нельзя истолковать однозначно, "пин(нога) процессора" можно. Забавно, что тычут носом "учитесь гуглить" и при этом не учат гуглить, и не дают ссылку типа такой, а дают на уже найденную информацию. Причем не на конкретный пин ID, а на исторический 4-х томник, в котором аж сказано "Первые спецификации для USB 1.0 были представлены в 1994—1995 годах".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

чтобы искать что-то в гугле, нужно знать что искать. "вывод процессора" нельзя истолковать однозначно, "пин(нога) процессора" можно.

Вы - единственный уникум на этом форуме, который так понимает "вывод процессора". Наверняка найдётся и другой уникум, который "ногу процессора" поймёт по своему. :laughing:

 

при этом не учат гуглить

Здесь вроде форум разработчиков, а не бабушек, осваивающих комп. Приведённая ссылка гуглится по "USB". Вот в случае бабушки ещё можно понять если она не знает как найти информацию по USB...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня only usb-device. ID не задействована. Да и куб её не задействует

Не знаю, как в 401, а в 407 выбор режима Peripheral only (т.е. установка бита FDMOD в регистре OTG_FS_GUSBCFG) никак не мешает USB пребрасываться в режим хоста по состоянию ID, хотя мануал и обещает обратное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь вроде форум разработчиков, а не бабушек.... Приведённая ссылка гуглится по "USB"....
Так вы походу бабушка и есть, раз "Вывод процессора" гуглите по "USB" и даете ссылки не по теме... а на какие-то исторические справки развития электроники. Если помочь не можете, если по теме не чего сказать, так хоть холивар не устраивайте, проходите мимо.

ps так ещё и ссылка не просто на USB, а на USB 3.0. При чем тут 3.0?

 

никак не мешает USB пребрасываться в режим хоста по состоянию ID
нога id у меня работает как выход GPIO который управляет светодиодом.

похоже придётся отказаться от куба и опять писать свой драйвер.

 

И примеров то нет.... для stmf4 сгенерированный проект из куба.... есть куча примеров у st для другой переферии.... для USB не могу найти

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что такое вывод ID?
Согласен. Не совсем понятно что за вывод айди. Вроде речь о USB-Device, там ID не задействован.

 

2razrab83

столкнулся с подобной проблемой. Свой драйвер (сделанный из stm usb host library) работает, а кубовский нет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...