Rash 0 9 марта, 2019 Опубликовано 9 марта, 2019 · Жалоба Доброго времени суток. Столкнулся с проблемой, USB VCP не отправляются данные через EP1. СОМ порт определяется м открывается, данные принимаются, но не отправляется. МК STM32F103, тактирование от HSI. Библиотека USB_FS_Device_Lib_v4_10. Буфера и счётчики проверял. Код для отправки: UserToPMABufferCopy(data, GetEPTxAddr(ENDP1), len); SetEPTxCount(ENDP1, len); SetEPTxValid(ENDP1); Приложил скрины дескриптора и обмена. Подскажите, где искать ошибку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 1. Да будь оно проклято! Потратил 15 мин на разглядывание дескрипторов так ничего и не рассмотрел. Что за неуважение такое? 2. У F103 тактировать USB от кварца надо. В данном случае проблема не в этом, но оно себя проявит обязательно. 3. Конкретно в приведённых трёх строчках ошибок нет. 4. Я бы смотрел на статусные регистры конечной точки EP1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 9 часов назад, Rash сказал: Приложил скрины дескриптора и обмена А почему не видео? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 12 hours ago, VladislavS said: 1. Да будь оно проклято! Потратил 15 мин на разглядывание дескрипторов так ничего и не рассмотрел. Что за неуважение такое? 2. У F103 тактировать USB от кварца надо. В данном случае проблема не в этом, но оно себя проявит обязательно. 3. Конкретно в приведённых трёх строчках ошибок нет. 4. Я бы смотрел на статусные регистры конечной точки EP1. Наверное движок форума сжал картинку, изменил в первом сообщение, скрины дескриптора В статусных регистрах не заметил противоречий с документацией. Скрины: регистры после открытия порта: регистры после приёма и передачи данных: 9 hours ago, Сергей Борщ said: А почему не видео? А к чему вопрос? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба Приложил 100% рабочие дескрипторы usb_descrriptors_cdc.h. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба VladislavS, Просмотрел, дескриптор. От моего отличается не значительными полями и тем, что для приёма используется IP1, а у меня EP3. Пробовал и раньше и сейчас EP1 на приём, результат тот же - приём есть, а передачи нет. Также, в вашем дескрипторе есть массив Device_Qualifier[], у меня его нет. Вряд ли это проблема. Когда запускал USB на 105 и 4хх, там я не помню такого массива, но USB работал без проблем, для целей бутлоадера и запись/чтение настроек. Кто нибудь знает, должно быть так, как на картинке дескриптора - см. строки URB 27 - 38? Программа USBlyzer. Если не должно быть, то какие могут быть причины? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 11 марта, 2019 Опубликовано 11 марта, 2019 · Жалоба Что-то много конечных точек. EP0-Control, EP1-Bulk данные туда-обратно, EP2-Interrupt. И всё же от кварца тактировать надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 11 марта, 2019 Опубликовано 11 марта, 2019 · Жалоба Конечных точек 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 не срабатывает, в точку останова не попажает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 12 марта, 2019 Опубликовано 12 марта, 2019 · Жалоба К сожалению, способов отладки через форум я не знаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 15 марта, 2019 Опубликовано 15 марта, 2019 · Жалоба Возможно, будет кому-то полезно. VCP заработал, только пришлось заменить контроллер. Был STM32F103С6 ревизия A, поменял на STM32F103С8 ревизия X и всё заработало. Причём 2 платы вели себя абсолютно одинаково. Пока делаю вывод, что ревизия A, как самая первая, оказалась глючной для USB VCP. Или нужно было что-то допилить, но я не нашёл что. Тактирование осталось от внутреннего кварца. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 15 марта, 2019 Опубликовано 15 марта, 2019 · Жалоба 37 minutes ago, Rash said: Тактирование осталось от внутреннего кварца. А не смущает, что так на F103 делать в принципе нельзя? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 29 16 марта, 2019 Опубликовано 16 марта, 2019 · Жалоба Хорошо хоть не от внутреннего рубидиевого стандарта.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rash 0 16 марта, 2019 Опубликовано 16 марта, 2019 · Жалоба 8 hours ago, aaarrr said: А не смущает, что так на F103 делать в принципе нельзя? Покажите, где об этом написано? То, что для usb нужно точная частота тактирования это понятно. Но даташит не запрещает использовать HSI. В данном случае USB используется для смены прошивки и настроек. Если пакет данных не пройдёт с первого раза, пройдёт со второго. Большой скорости не требуется. 2 hours ago, VladislavS said: Хорошо хоть не от внутреннего рубидиевого стандарта.. Это к чему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 16 марта, 2019 Опубликовано 16 марта, 2019 · Жалоба 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 16 марта, 2019 Опубликовано 16 марта, 2019 · Жалоба 3 часа назад, Rash сказал: Это к чему? Это к внутреннему кварцу. HSI является обычным RC-генератором со всеми зависимостями от напряжения питания, температуры, косых взглядов и прочего. Кварца там нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться