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

Попробовал на двух платах Discovery (STM32F407, STM32F429) создать CDC устройство в STM32CubeMX. И оба раза компьютер обнаруживает устройство, устанавливает драйвер, но не может его запустить. И в настройках USB в Cube менял, и все равно. ОС - Windows 7 x64. Что не так? Полный интернет подобных сообщений, но ни одного ответа я не нашел.

И кабель менял, и в другую щель засовывал. :rolleyes:

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


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

Попробовал на двух платах Discovery (STM32F407, STM32F429) создать CDC устройство в STM32CubeMX. И оба раза компьютер обнаруживает устройство, устанавливает драйвер, но не может его запустить. И в настройках USB в Cube менял, и все равно. ОС - Windows 7 x64. Что не так? Полный интернет подобных сообщений, но ни одного ответа я не нашел.

И кабель менял, и в другую щель засовывал. :rolleyes:

Непонятна фраза "Не Запускается driver" -это как, какие сообщения выдает Винда?

У меня тоже Виндовс 7 x64 и все работает. Подробнее проблему опишите пожалуйста. Файл конфигурации Куба (*.ioc) приложите если можно.

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


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

C 32 битнымми windows плата работает?

Если да отключите проверку подписи драйвера в 64 битной windows.

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


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

C 32 битнымми windows плата работает?

Если да отключите проверку подписи драйвера в 64 битной windows.

Думаю Вы правы, причина может быть именно в этом, хотя у меня заработало и без отключения цифровой подписи драйвера.

Может какая-то старая версия драйвера.

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


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

Непонятна фраза "Не Запускается driver" -это как, какие сообщения выдает Винда?

У меня тоже Виндовс 7 x64 и все работает. Подробнее проблему опишите пожалуйста. Файл конфигурации Куба (*.ioc) приложите если можно.

Вот так и пишет, как в подзаголовке показал, скопировал: "Запуск этого устройства невозможен. (Код 10)"

Зашиваю прошивку, втыкаю USB разъем, нажимаю сброс, Windows 7 находит устройство, автоматически находит драйвер для него (и вручную ставил - тот же, с сайта ST), устанавливает. После в Диспетчере устройств появляется COM3, но "запуск..." (см. выше).

Конфигурация в Cube - простая, выбираю Discovery плату, в ней включаю USB выводы, в USB включаю CDC. Своего не пишу ничего.

И так на двух разных платах.

Вот есть ссылка с подобной проблемой.

https://my.st.com/public/STe2ecommunities/m...rentviews=13131

 

C 32 битнымми windows плата работает?

Если да отключите проверку подписи драйвера в 64 битной windows.

С x86 не работал, не имею. :biggrin:

Версия драйвера - последняя, что есть, 1.3.1

С этим возился дома, сейчас ничего больше сказать не могу.

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


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

Вот есть ссылка с подобной проблемой.

https://my.st.com/public/STe2ecommunities/m...rentviews=13131

Ну так там по ссылке написал один, что решил все проблемы, изменив размер буфера на 64. Думаю, где-то в настройках для CDC Endpoint. Другой пишет, что проблема ушла после установки CDC_IN_FRAME_INTERVAL в 0 в файле usbd_conf.h.

Я не пробовал еще эти Cube, но у нас на F103 на собственных платах CDC работают. Более того, мой коллега, гуру в Windows, написал свой собственный *.INF файл для установки CDC. Ведь по сути для CDC не нужен никакой сторонний драйвер. Просто Windows до XP включительно для каждого нового воткнутого CDC устройства проводит якобы установку драйвера, которая заключается просто в копировании родного файла usbser.sys из одного угла системы в другой, напрягая пользователя дурными вопросами. Более новые Win'ды это делают молча. Поэтому, если Windows не хочет общаться с CDC, надо покрутить дескриптор на предмет тех самых размеров буфера и временнЫх параметров.

 

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


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

Вот так и пишет, как в подзаголовке показал, скопировал: "Запуск этого устройства невозможен. (Код 10)"

Зашиваю прошивку, втыкаю USB разъем, нажимаю сброс, Windows 7 находит устройство, автоматически находит драйвер для него (и вручную ставил - тот же, с сайта ST), устанавливает. После в Диспетчере устройств появляется COM3, но "запуск..." (см. выше).

Конфигурация в Cube - простая, выбираю Discovery плату, в ней включаю USB выводы, в USB включаю CDC. Своего не пишу ничего.

И так на двух разных платах.

Вот есть ссылка с подобной проблемой.

https://my.st.com/public/STe2ecommunities/m...rentviews=13131

 

 

С x86 не работал, не имею. :biggrin:

Версия драйвера - последняя, что есть, 1.3.1

С этим возился дома, сейчас ничего больше сказать не могу.

На форуме ST была рекомендация заменить строку:

pdev->pClassData = USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));

в файле usbd_cdc.c

на :

pdev->pClassData = (void *) USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));

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


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

На форуме ST была рекомендация заменить строку:

pdev->pClassData = USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));

в файле usbd_cdc.c

на :

pdev->pClassData = (void *) USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));

Не помогло. Результат тот же.

 

Параллельно для STM32F3Discovery сотворил из библиотеки STM32_USB-FS-Device_Lib_V4.0.0 VirtualComport_Loopback, он работает. "Устройство работает нормально." Общаюсь с платой через HTerm. Правда, она другим кабелем подключена к компьютеру (на этой плате разъем другой). Код там другой, конечно, но, делаю вывод, что с компьютером и драйвером все нормально.

 

Для STM32F30x в CubeMX пока кодогенератора нет.

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


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

Не помогло. Результат тот же.

Попробуйте подключить устройство и затем удалить его в диспетчере.

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


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

Я бы посмотрел что на USB творится. "Device Monitoring Studio" то ли 30 то ли 40 баксов всего, да и трайал наверное есть.

 

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


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

https://my.st.com/public/STe2ecommunities/m...urrentviews=328

Почитав эту тему, изменил размер кучи до 0x0400, и COM Port заработал. Буду пытаться разбираться дальше...

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


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

я вот смотрел на это

pdev->pClassData = (void *) USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));

 

и вот мне подумалось, что тот кто код отлаживал сначала заметил что получил неверный указатель. Потом изменил это и кучу, и все заработало, сделал выводы что надо так сделать.

 

А мне кажется что надо поглядеть что возвращает USBD_malloc, наверняка в начальном варианте с маленькой кучей оно возвращало 0, как код ошибки что не удалось выделить буфер...

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


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

Я там еще других настроек в CubeMX покрутил, в частности, задал скорость ножек USB High...

В-общем, пока ответ не готов.

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


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

Я бы посмотрел что на USB творится. "Device Monitoring Studio" то ли 30 то ли 40 баксов всего, да и трайал наверное есть.
Есть и бесплатная версия http://freeusbanalyzer.com/

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


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

За ссылки-советы - спасибо!

Я пользовался USBlyzer, USBTrace, но не в этом случае.

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


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

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

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

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

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

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

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

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

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

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