Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

въпрос за USB комуникация с контролер STM32F103
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9623
Страница 1 от 1

Автор:  loser [ Нед Дек 18, 2011 2:24 pm ]
Заглавие:  въпрос за USB комуникация с контролер STM32F103

работя с контролер STM32F103 на ST; ST предоставят различни примери за този контролер, има и примери за комуникация по USB; досега ползвах без проблеми техните примери, сега се опитвам да повиша скоростта на комуникацията по USB, и един от подходите, към които съм се насочил, е да увелича размера на USB endpoint буферите, за да се предават по възможност повече данни накуп; до момента всички IN и OUT USB endpoint-и са с размер 64 байта и работят стабилно; днес реших да увелича един от IN endpoint-ите на 128 байта - за целта увеличих размера на буфера за този endpoint в контролера, и преизчислих параметрите на останалите endpoint-и с оглед на новата конфигурация

ситуацията е следната: така настроен, контролерът работи стабилно при условие, че (макар да съм увеличил размера на endpoint буфера до 128 байта) ограничавам софтуерно максималния размер на изпращаните пакети до 64 байта (както беше досега); но ако се опитам да пращам повече от 64 байта накуп, фирмуеърът увисва, а програмата, която комуникира с устройството от windows машина, пропада с код за грешка 31 - "ERROR_GEN_FAILURE 31 (0x1F) A device attached to the system is not functioning"

не успях да намеря примери за този контролер, които използват буфери с размер по-голям от 64 байта, не намирам и нещо специфично в ръководството на контролера; поради спецификата на конфигурацията, много трудно е да се закача с дебъгер към платката

ще съм щастлив ако някой може да сподели опит или да даде съвет; най-вероятно засега ще се върна на 64 байтови буфери, ако успея да намеря проблема, ще сложа решението тук

Автор:  miro_atc [ Нед Дек 18, 2011 4:26 pm ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

какъв е класа на устрйството? (CDC, Mass storage...)?

Автор:  loser [ Нед Дек 18, 2011 9:32 pm ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

за основа ползвам примера DFU (device firmware upgrade) към библиотеките на ST (може би изборът ми е неподходящ); сега погледнах дескрипторите - класът в този случай е 0, не съм променял нищо по конфигурационния и интерфейсния дескриптори; бях пропуснал в един от дескрипторите за endpoint-ите да променя размера на пакета от 64 на 128 байта, когато направих тази промяна - драйверът на устройството спря да отлепя (за драйвер ползвам библиотеката WinUSB от WDK (windows driver kit)), излиза грешка - This device cannot start. (Code 10); успях да намеря този линк за генериране на трейсове от WinUSB:

http://blogs.msdn.com/b/usbcoreblog/arc ... e-log.aspx

логът, който излиза, е:
[1]0004.003C::12/18/2011-15:38:04.183 - DriverObject 0xFFFFFA8007D91060
[1]0004.003C::12/18/2011-15:38:04.184 - Preparing hardware
[2]0004.003C::12/18/2011-15:38:04.203 - Unable to select the default configuration, failing Start
[2]0004.003C::12/18/2011-15:38:04.203 - Enter: WinUSB_ReleaseHardware
[2]0004.003C::12/18/2011-15:38:04.203 - Exit: WinUSB_ReleaseHardware (STATUS_SUCCESS)
[3]0004.0038::12/18/2011-15:38:04.204 - Handling Device Cleanup

ще мога да се занимавам след 2-3 дни отново, но изглежда, че имам проблеми с конфигурационния дескриптор (а може би и с други дескриптори)...

Автор:  ps66 [ Нед Дек 18, 2011 10:49 pm ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

ако чипа е "full speed" - макс. пакет е 64 байта !
няма какво да се мъчиш!

Автор:  miro_atc [ Нед Дек 18, 2011 11:30 pm ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

bulk е ограничен до 16 байта, iso може 1к ако не беше и повече.

аз затова питах какъв дивайс иска, щото някои поддържат само bulk и няма как да им вдига размера.

Иначе е задължително дексрипторите да са коректни и каквото пише в тях да се поддържа и от софтуера. Примерно дексриптора като каже ползва се ендпоинт 3 в еди какъв си режим, софтуера (прекъсвания, писания/четения) трябва да поддържат същия ендпоинт и същия режим.
Така че ако се бара дискриптора, трябва и софтуера... но само в рамките на стандарта ;-)

Автор:  ps66 [ Нед Дек 18, 2011 11:33 pm ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

miro_atc написа:
bulk е ограничен до 16 байта, iso може 1к ако не беше и повече.

аз затова питах какъв дивайс иска, щото някои поддържат само bulk и няма как да им вдига размера.

Иначе е задължително дексрипторите да са коректни и каквото пише в тях да се поддържа и от софтуера. Примерно дексриптора като каже ползва се ендпоинт 3 в еди какъв си режим, софтуера (прекъсвания, писания/четения) трябва да поддържат същия ендпоинт и същия режим.
Така че ако се бара дискриптора, трябва и софтуера... но само в рамките на стандарта ;-)


в грешка си !
за bulk:
FS - max 64b
HS - max 512b

за дескрипторите е ясно че ако ги е оплескал ...

Автор:  miro_atc [ Пон Дек 19, 2011 12:00 am ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

правописна грешка ;-)

Автор:  loser [ Пон Дек 19, 2011 12:57 am ]
Заглавие:  Re: въпрос за USB комуникация с контролер STM32F103

да, чипът е full-speed; сега проверих - наистина максималният пакет е 64 байта - това ми е убегнало; явно остава така; понеже чипът има възможност за двойно буфериране - ще се опитам да го включа

благодаря много, спестихте ми много време :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/