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
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