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

USB VCP не отправляются данные

Доброго времени суток.

 

Столкнулся с проблемой, USB VCP не отправляются данные через EP1. СОМ порт определяется м открывается, данные принимаются, но не отправляется. МК STM32F103, тактирование от HSI. Библиотека USB_FS_Device_Lib_v4_10.

Буфера и счётчики проверял.

Код для отправки:

UserToPMABufferCopy(data, GetEPTxAddr(ENDP1), len);

SetEPTxCount(ENDP1, len);

SetEPTxValid(ENDP1);

 

Приложил скрины дескриптора и обмена.

Подскажите, где искать ошибку?

 

обмен.png

Descriptors1.png

Descriptors2.png

Descriptors3.png

Descriptors4.png

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


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

1. Да будь оно проклято! Потратил 15 мин на разглядывание дескрипторов так ничего и не рассмотрел. Что за неуважение такое?

2. У F103 тактировать USB от кварца надо. В данном случае проблема не в этом, но оно себя проявит обязательно.

3. Конкретно в приведённых трёх строчках ошибок нет. 

4. Я бы смотрел на статусные регистры конечной точки EP1.

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


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

9 часов назад, Rash сказал:

Приложил скрины дескриптора и обмена

А почему не видео? 

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


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

12 hours ago, VladislavS said:

1. Да будь оно проклято! Потратил 15 мин на разглядывание дескрипторов так ничего и не рассмотрел. Что за неуважение такое?

2. У F103 тактировать USB от кварца надо. В данном случае проблема не в этом, но оно себя проявит обязательно.

3. Конкретно в приведённых трёх строчках ошибок нет. 

4. Я бы смотрел на статусные регистры конечной точки EP1.

Наверное движок форума сжал картинку, изменил в первом сообщение, скрины дескриптора

В статусных регистрах не заметил противоречий с документацией. Скрины:

регистры после открытия порта:

148517779_.png.ec2265c1b71148b6425a388cb91d6464.png

регистры после приёма и передачи данных:

656653357_.png.3bfa1d180658b467538ccc4f00aa62a5.png

 

9 hours ago, Сергей Борщ said:

А почему не видео? 

А к чему вопрос?

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


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

VladislavSПросмотрел, дескриптор. От моего отличается не значительными полями и тем, что для приёма используется IP1, а у меня EP3. Пробовал и раньше и сейчас EP1 на приём, результат тот же - приём есть, а передачи нет. Также, в вашем дескрипторе есть массив Device_Qualifier[], у меня его нет. Вряд ли это проблема. Когда запускал USB на 105 и 4хх, там я не помню такого массива, но USB работал без проблем, для целей бутлоадера и запись/чтение настроек.

 

Кто нибудь знает, должно быть так, как на картинке дескриптора - см. строки URB 27 - 38? Программа USBlyzer. Если не должно быть, то какие могут быть причины?

см. строки unsuccesful.png

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


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

Что-то много конечных точек. EP0-Control, EP1-Bulk данные туда-обратно, EP2-Interrupt. И всё же от кварца тактировать надо.

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


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

Конечных точек 4.   EP0-Control, EP1-Bulk данные обратно, EP2-Interrupt, EP3-Bulk данные туда. Делал и 3 контрольные точки, когда EP1-Bulk данные туда-обратно, разницы ни какой.

От внешнего кварца через день попробую, будет на руках плата. Хотя сомневаюсь что в этом дело.

Смотрел лог на другой своей плате, где 105 установлен, но с внешним кварцем. Там "красных строк" в логе  нет, как в скрине в предыдущем сообщении.

Логическим анализатором смотреть проблематично, т.к. пакеты SOF идут каждую 1 мсек.

Но разница с рабочим 105 есть: В рабочей плате между двумя SOF куча запросов IN1, каждые 4.5 мксек, в течении 0.91 мсек, и пауза ~80 мксек.

В некорректно рабочей 103: После SOF идёт один запрос IN2 и один запрос IN1, потом на 0.98 мсек пауза. Хотя прерывание IN1 не срабатывает, в точку останова не попажает.

 

 

 

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


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

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

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


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

Возможно, будет кому-то полезно.

VCP заработал, только пришлось заменить контроллер. Был STM32F103С6 ревизия A, поменял на STM32F103С8 ревизия X и всё заработало.

Причём 2 платы вели себя абсолютно одинаково. Пока делаю вывод, что ревизия A, как самая первая, оказалась глючной для USB VCP.  Или нужно было что-то допилить, но я не нашёл что.

Тактирование осталось от внутреннего кварца.

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


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

37 minutes ago, Rash said:

Тактирование осталось от внутреннего кварца.

А не смущает, что так на F103 делать в принципе нельзя?

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


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

Хорошо хоть не от внутреннего рубидиевого стандарта..

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


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

8 hours ago, aaarrr said:

А не смущает, что так на F103 делать в принципе нельзя?

Покажите, где об этом написано?

То, что для usb нужно точная частота тактирования это понятно. Но даташит не запрещает использовать HSI.

В данном случае USB используется для смены прошивки и настроек. Если пакет данных не пройдёт с первого раза, пройдёт со второго. Большой скорости не требуется.

2 hours ago, VladislavS said:

Хорошо хоть не от внутреннего рубидиевого стандарта..

Это к чему?

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


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

21 minutes ago, Rash said:

Но даташит не запрещает использовать HSI

Прямо запрещает:

For the USB function to be available, both HSE and PLL must be enabled, with USBCLK running at 48MHz

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


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

3 часа назад, Rash сказал:

Это к чему?

Это к внутреннему кварцу. HSI является обычным RC-генератором со всеми зависимостями от напряжения питания, температуры, косых взглядов и прочего. Кварца там нет.

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


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

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

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

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

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

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

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

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

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

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