I am unsure if I just have something misconfigured or truly just don't understand how it works.
I am using the LPC54628 on the OM13098 board and my goal is to send graphics to the screen using bulk transports on usb1. My plan was to use the composite device example and replace one of the HID classes with a simpler consumer device report with 6 buttons and and the other with a modified CDC ACM example that would directly draw to the frame buffer. Modifying the HID was no issue and and on both linux and windows I had a 1 byte report that could show the value of buttons pressed. However I have been unable to get the CDC ACM example working in the composite class.
Endpoint setup appears to go fine such that I have 5 endpoints in total not including control. Bulk in/out on endpoint 1, Interrupt In/Out on 2, and Interrupt In for Hid on 3. I see no errors reported on endpoint init however I never get an interrupt for any bulk transfers. To initiate the bulk transfers I am using libusb
libusb_bulk_transfer(
lcdhandle_,
endpoint_out_,
lcd_buffer,
sizeof(lcd_buffer),
&len,
250
);
that you can see here. I get a timeout every time without any interrupt even on USB1_IRQHandler. From what I can see interrupts are enabled on INTEN for all endpoints. Is there some configuration I am missing ?
Solved! Go to Solution.
You should put a USB com analyzer to see the traffic and pinpoint which side the issue is. Either the host request does not come down the wire or the device side's EP is not primed.
You should put a USB com analyzer to see the traffic and pinpoint which side the issue is. Either the host request does not come down the wire or the device side's EP is not primed.
It ended up being the priming, I didn't realize I needed todo that so while the endpoint was configured it was never primed.