Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Frater
0 / 0 / 1
Регистрация: 23.10.2018
Сообщений: 10
1

stm32f407vet6 зависает USB при отправке массивов

28.11.2019, 11:22. Просмотров 1650. Ответов 11

Добрый день, возникла такая проблема, на контролере stm32f407vet6 (китайская плата) отправляю на пк массив данных собранных с ацп, usb как cdc_device, но после отправки примерно 500 массивов usb зависает, всегда зависает, дальше только выключать устройство и снова включать. Размер массива 1030 байт. Массив отправляется на пк по запросу, мониторил передачу через Device Monitoring Studio, после 500 отправлений с контроллер, от пк еще идут запросы, но контроллер молчит, подскажите в чем может быть проблема. Проект делал через куб. Гугл ничего не дал, нашел только похожую проблему с CAN интерфейсом, там тоже зависал после 400-500 отправлений, сослались что зависает из за накопленных ошибок, но у меня usb и что с ним делать не знаю.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2019, 11:22
Ответы с готовыми решениями:

STM32F407VET6 USB VCP
Привет. Столкнулся с проблемой USB VCP на STM32F407VET6. Подняли USB VCP (и всю остальную...

[Решено] Зависает при выдёргивании USB
всем привет, завёл пример Mass Storage от ST на L100, всё работает, но если не подключить кабель...

Зависает ПК при отправке файлов
Добрый день! Компьютер зависает намертво при отправке с него файлов, то ли фоток "вконтакт", то ли...

Зависает программа при отправке почты
срабатывает метод, а в методе скрипт для отправки сообщения, и сообщение приходит не одно , а...

Зависает программа при отправке почты
Тупо зависает программа при выполнении програмы со следующим кодом: // отправитель - устанавливаем...

11
i8085
2514 / 1572 / 315
Регистрация: 11.09.2009
Сообщений: 5,780
28.11.2019, 13:22 2
Цитата Сообщение от Frater Посмотреть сообщение
Проект делал через куб.
Видимо его (проект) и надо отлаживать. Как минимум посмотреть, как обрабатываются ошибки передачи. Хотя дело может быть и в банально некачественном USB-кабеле.
0
Frater
0 / 0 / 1
Регистрация: 23.10.2018
Сообщений: 10
28.11.2019, 13:33  [ТС] 3
Так как программированию только учусь, ошибки никак не обрабатываются, ну по крайней мере мной. Если проблема в проводе, то почему именно на 500 посылках зависает, то есть не 300 или 600, а именно 500? Подскажите, Где можно посмотреть ошибки отправки usb
0
i8085
2514 / 1572 / 315
Регистрация: 11.09.2009
Сообщений: 5,780
28.11.2019, 15:25 4
Цитата Сообщение от Frater Посмотреть сообщение
именно на 500 посылках зависает
Если цифра не случайна и всегда повторяется, то однозначно дело в программе. Смотрите где есть циклы, заполнение буферов. Например, ошибка в адресации, приводящая к переполнению буфера. Вы вообще в каком симуляторе отлаживали программу?
0
28.11.2019, 15:25
Frater
0 / 0 / 1
Регистрация: 23.10.2018
Сообщений: 10
28.11.2019, 16:16  [ТС] 5
Пишу в кейле, программу нигде не отлаживал, где лучше всего это сделать. Циклы есть, но с ними вроде все нормально. Смысл еще в том, что данные правильные приходят, но в итоге все зависает.
0
locm
2286 / 1001 / 127
Регистрация: 28.10.2011
Сообщений: 3,378
Записей в блоге: 6
28.11.2019, 17:41 6
Цитата Сообщение от Frater Посмотреть сообщение
программу нигде не отлаживал
ST-Link или другой отладчик есть?
Запустите отладку и МК и при зависании остановите и посмотрите где зависает.
0
Frater
0 / 0 / 1
Регистрация: 23.10.2018
Сообщений: 10
28.11.2019, 17:55  [ТС] 7
Лучший ответ Сообщение было отмечено i8085 как решение

Решение

ST-Link есть но я уже сам решил проблему. За что отвечает функция?-

C
1
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
Лично я подумал, что она устанавливает размер входного буфера, и необходимо задать этот размер, но оказалось с 0 она тоже работает и даже не зависает
0
i8085
2514 / 1572 / 315
Регистрация: 11.09.2009
Сообщений: 5,780
28.11.2019, 18:01 8
Цитата Сообщение от Frater Посмотреть сообщение
я уже сам решил проблему
Сам, сам.
Молодец.
0
Frater
0 / 0 / 1
Регистрация: 23.10.2018
Сообщений: 10
28.11.2019, 18:06  [ТС] 9
И все же, что делает эта функция и почему все зависало, если вместо нуля записать ну скажем 10?(У меня десять вроде было)
0
_SayHello
788 / 474 / 156
Регистрация: 30.07.2015
Сообщений: 1,579
28.11.2019, 18:52 10
Frater,
Цитата Сообщение от Frater Посмотреть сообщение
И все же, что делает эта функция и почему все зависало, если вместо нуля записать ну скажем 10?(У меня десять вроде было)
&Buf[10] данные будут складываться в массив начиная с 10 позиции.
&Buff[0] данные складываются с начала массива, эквивалентная запись:

C
1
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, Buf);
1
Humanoid
Почетный модератор
10106 / 3968 / 372
Регистрация: 12.06.2008
Сообщений: 11,591
29.11.2019, 01:49 11
Лучший ответ Сообщение было отмечено Frater как решение

Решение

Цитата Сообщение от Frater Посмотреть сообщение
и почему все зависало, если вместо нуля записать ну скажем 10?
Потому что, это указатель (скорее всего на char), а когда вы смещаете на 10, то адрес этого указателя становится не выровненным (не кратным 4 или даже 8 байтам). Для USB обычно требуются выровненные адреса, иначе DMA начинает тупить.
Например, в даташите в описании регистра OTG_HS_DIEPDMAx указано, что адрес должен быть выровнен по двойному слову (по 8 байт). Сам Buf создаётся, скорее всего, выровненным, но если вы смещаетесь на число не кратное 8 относительно начала этого буфера, то DMA не сможет работать.
1
Frater
0 / 0 / 1
Регистрация: 23.10.2018
Сообщений: 10
29.11.2019, 10:18  [ТС] 12
Спасибо всем за помощь, теперь все исправил и вроде даже понял что не так, вчера все дофига работало и не зависло.
0
29.11.2019, 10:18
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2019, 10:18

При отправке документа Exel на принтер приложение зависает
При отправке данных на принтер приложение зависает. Пробную страницу, вордовский документ принтеры...

Зависает письмо в исходящих MS Outlook при отправке с MS Word|MS Excel
Приветствую форумчан. Проблема в следующем: Пользователь работает в Ворд, затем, не закрывая...

Зависает в Kali при загрузке с USB
Доброго времени суток! У меня ноутбук MSI GL62 6QD. Скачал Kali Linux 2.0 с оф. сайта записал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.