Problem with usb bulk mode

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Problem with usb bulk mode

733 Views
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 Kudos
Reply
1 Reply

603 Views
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 Kudos
Reply