Problem with usb bulk mode

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Problem with usb bulk mode

746 次查看
antoinet
Contributor I

Hello,

On the FRDM-k64F, I'm having trouble with the USB connection.

The idea of my project is to use the FRDM as a simple device (without any class driver configured, MQX standard is the OS) and communicate with host via bulk mode.

I used Processor Expert to start the project and the beginning seemed ok : endpoint 0 is working correctly and vendor class commands are fonctionnal.

Here is the descritpion of the device seen by host (via /proc/bus/usb/devices command)

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12   MxCh= 0

D:  Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=0c52 ProdID=9474 Rev= 1.00

S:  Manufacturer=Freescale Processor Expert

S:  Product=Processor Expert USB Device component

S:  SerialNumber=123456789ABCDEF

C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA

I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)

E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

However, I failed to communicate with endpoint 1 or 2.

I have tested my bulkRead() and bulkWrite() functions with another device and everything was fine on this side.

I tried to debug the code on the device but I saw no interruptions when the read/write is done on the host. It's like they didn't exist.

Here is the sequence I used thanks to the generated code by Processor Expert :

usb_device_init(USB_CONTROLLER_KHCI_0, usb_board_init, &usb_handle);

usb_device_postinit(USB_CONTROLLER_KHCI_0, usb_handle);

usb_device_register_desc_request_notify(usb_handle, &usbDsc1_desc_callback, NULL);

usb_device_register_vendor_class_request_notify(usb_handle,usb_vendor_class_request,NULL);

usb_device_init_endpoint(usb_handle,&IOComms_EndpointInfoArray[0],TRUE);

The status of the device_init_endpoint is ok. What am I missing to complete communication with endpoint 1 ?

Thanks in advance for the help!

Antoine

PS : my environnement is KDS 3.0.0 / Ubuntu

0 项奖励
回复
1 回复

616 次查看
isaacavila
NXP Employee
NXP Employee

Hello Antoine,

I would expect to see a sniffer's capture in order to see what is happening because although your host seems to be working well in other devices, there could be some transactions that are not recognized on device's side.

Unfortunately, we do not have any example or application that uses a generic Bulk transaction (without binding any class). The examples that use Bulk transactions include MSD or CDC. I have not analyzed deeply the USB stack on KSDK so i cannot assume if you should bind a specific class in order to work properly.

Best Regards,

Isaac

0 项奖励
回复