реклама на сайте
подробности

 
 
6 страниц V  « < 3 4 5 6 >  
Reply to this topicStart new topic
> STM32 OTG USB проблема с отладкой
Forger
сообщение Feb 22 2017, 16:35
Сообщение #61


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Chameleon @ Feb 22 2017, 19:25) *
На другой порт перебрасывать - не выход. Все пины проца заняты. И плата уже разведена. И нет гарантии что при манипуляции другими битами порта USB не будет отваливаться.

Да временно, чисто для поиска источника косяка. В подобных случаях нужно все пробовать!

И еще раз повторюсь - увеличение объема стека помогает или нет? Вообще-то это самое первое, что следует проверить в глючном кода.

Цитата
Всю портянку, что куб нагенерил, выкладывать?


Конечно же, никакие портянки сюда не надо выкладывать. Киньте все в один архив. Проект целиком, вместе с проектом под куб.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 22 2017, 16:40
Сообщение #62


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Chameleon @ Feb 22 2017, 21:25) *
UART. На другой порт перебрасывать - не выход. Все пины проца заняты. И плата уже разведена.


Ну на Nucleo-то можно попробовать?

Цитата(Forger @ Feb 22 2017, 21:04) *
Вот кратко:

Я всю тему читал, причём внимательно. Вижу, что код записи в UART вполне нормальный. Если только не включены прерывания от UART, то всё вполне легитимно. А теперь автор темы убрал ожидание флагов UART в прерывании. Всё должно работать.



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 22 2017, 16:44
Сообщение #63


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AHTOXA @ Feb 22 2017, 19:40) *
Всё должно работать.

Внутри прерываний висит, вне - работает.
Отсюда простой вывод, что проблема на 99,9% в юзер-коде или настройках проекта (я бы для начала проверил объем стека, всякое бывает).


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Feb 22 2017, 17:49
Сообщение #64


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Forger @ Feb 22 2017, 21:44) *
Внутри прерываний висит, вне - работает.

Насколько я понял, в последнем варианте в прерывании он пишет в буфер в памяти, а в UART вываливает потом, из основного кода.
Стек там не используется почти, так что вряд ли в нём дело. Я подозреваю неправильные настройки тактирования или включенные случайно прерывания от UART.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 22 2017, 17:59
Сообщение #65


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AHTOXA @ Feb 22 2017, 20:49) *
Стек там не используется почти, так что вряд ли в нём дело. Я подозреваю неправильные настройки тактирования или включенные случайно прерывания от UART.

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

Как пришлет проект целиком, станет все понятно.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Feb 23 2017, 06:49
Сообщение #66


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



QUOTE (Forger @ Feb 22 2017, 20:59) *
Именно поэтому я настаивал на новом проекте, где бы полноценно отдельно был отлажен весь этот код, в противном случае траблы будут возникать на казалось бы ровном месте.

Как пришлет проект целиком, станет все понятно.


Прикрепленный файл  cdc.rar ( 697.8 килобайт ) Кол-во скачиваний: 10


Размеры стека и кучи я увеличил в два раза по сравнению с теми, что поставил куб.

Мои добавления только в файле main.c между стоками со звездочками. Все остальное сгенерил куб.
У меня работает так:

Подключаю. Устройство определилось.
Пауза.
Когда начинается вывод через UART, устройство отваливается и переподключается. Вижу по USBLyser-у.
И так по циклу.
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 23 2017, 07:31
Сообщение #67


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Chameleon @ Feb 23 2017, 09:49) *
Прикрепленный файл  cdc.rar ( 697.8 килобайт ) Кол-во скачиваний: 10

Вот так нужно было сделать в самом первом посте wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 23 2017, 08:42
Сообщение #68


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Проверьте линии TX/RX аппаратно на плате, нет ли соплей и т .п.

Если временно использовать другой USART на других пинах, то проблемы остаются?


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Feb 23 2017, 08:59
Сообщение #69


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



QUOTE (Forger @ Feb 23 2017, 11:42) *
Проверьте линии TX/RX аппаратно на плате, нет ли соплей и т .п.

Если временно использовать другой USART на других пинах, то проблемы остаются?


Пины проверил, одинаково не работает на ДВУХ разных платах. Под другой порт переделываю.
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Feb 23 2017, 10:36
Сообщение #70


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



Все, нашел.

Куб в коде выставляет в USBD_LL_Init():

hpcd_USB_OTG_FS.Init.vbus_sensing_enable = ENABLE;

Даже если в настройках USB в кубе переключатель Activate_VBUS отключен. А VBUS_DETECT это пин PA9, он же и TX для USART1.

И возникает конфликт между USATRT1 Tx и VBUS_SENSE. Поэтому отваливается USB, если что-то делать с пином PA9 (или передавать через USART1 или вручную им шевелить)

Но если выбрать переключатель Activate_VBUS и USART1 одновременно, то тогда передачу USART1 он монтирует на PA15, на PA9 VBUS_DETECT и конфликта нет.

Сделал вручную в коде

hpcd_USB_OTG_FS.Init.vbus_sensing_enable = DISABLE;

Все работает.
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 23 2017, 10:47
Сообщение #71


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Chameleon @ Feb 23 2017, 13:36) *
И возникает конфликт между USATRT1 Tx и VBUS_SENSE.

Тоже грешил на этот PA9, потому и просил кинуть пины в другой USART или другие пины.

Но смотря в КУБ, вижу, что он тут ни при делах, все дело в вашей самодеятельности. Поясню:

До того, как будет вызвано MX_USB_DEVICE_Init, где V_BUS настраивается уже правильно, вы пытаетесь кидать в USART байты:

Код
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
#ifdef USER_CODE_ENABLE
//******************************************************************
    prn("\r\nSTM32F411 bug enabled");
//******************************************************************
#endif
  MX_USB_DEVICE_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */


Это можно делать только в тех секциях, где это разрешает КУБ.
В данном случае достаточно перенести ваш код в место между этих строк: /* USER CODE BEGIN 2 */ и /* USER CODE END 2 */.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Chameleon
сообщение Feb 23 2017, 11:03
Сообщение #72


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 5-07-08
Пользователь №: 38 757



Внутри MX_USB_DEVICE_Init() и есть настройка

hpcd_USB_OTG_FS.Init.vbus_sensing_enable = ENABLE;

Я потому и поставил первую строку приветствия до MX_USB_DEVICE_Init(). Если поставить после нее, то будет происходить передача строки и одновременно обмен по USB (инициализация), тогда USB отваливается.
Go to the top of the page
 
+Quote Post
Obam
сообщение Feb 23 2017, 11:16
Сообщение #73


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Гы-гы-гы, повеселили!
5 страниц увлекательного чтива!

И после этого не курить даташиты с рефманами и не вручную периферию настраивать?!


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 23 2017, 13:29
Сообщение #74


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Chameleon @ Feb 23 2017, 14:03) *
Внутри MX_USB_DEVICE_Init() и есть настройка

hpcd_USB_OTG_FS.Init.vbus_sensing_enable = ENABLE;

Ясно, и больше она нигде не менятся другую....

Что ж, лишний гвоздь в гроб куба!
Как был он уделом новичков и школоты, так он таковым и остается.

Короче, живем по-старому - все настраиваем ручками, и неважно как с HAL/SPL или без. Главное, ручками !!

Впрочем, в кубе удобно глядеть визуально где какой пин будет висеть и прикинуть на будущее трассировку и назначение пинов по AF-функциям...
Но упаси боже вставлять в проект нагенерированный им код!


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Feb 27 2017, 10:06
Сообщение #75


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



Ага, у меня уже даже привычка появилась. Сначала генеришь все на кубе, убеждаешься, что ничего не работает, оставляешь только инициализацию, а все остальное преписываешь поглядывая в код куба.
Go to the top of the page
 
+Quote Post

6 страниц V  « < 3 4 5 6 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 15th August 2025 - 22:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0152 секунд с 7
ELECTRONIX ©2004-2016