Using usb fullspeed on highspeed phy (stm32f723)
Posted: Tue Sep 29, 2020 2:23 pm
Hi guys,
On stm32f723, I am using otg_hs controller with internal hs-phy. My application enumerates as a CDC class device (virtual com port). I am able to do highspeed transfers using chnWrite(). Recently there was a case where we need to slow the physical interface down. So I changed otg_dcfg_dspd = DCFG_DSPD_HS_FS. This would enable hs-phy to negotiate with the host to communicate using full-speed protocol. After the change, the device would not enumerate. After a bit of effort, I realized, by changing MaxPacketSize on Interrupt_request_ep to 64 (from 512), it would enumerate. The interval on that end-point is set to 0xff. So my first query
1. Would anyone know if there is any such limit of packet size on interrupt_request_ep?
After the change, the device now enumerates but still I am not able to transfer big chunks of data. ChnWrite() after a few attempts just sits idle. I have declared three serial_usb buffers. I see data is present in all three of them. 'bcounter' field in obqueue is 0.
2. What is the best way to troubleshoot this issue ?
Thanks,
AQ
On stm32f723, I am using otg_hs controller with internal hs-phy. My application enumerates as a CDC class device (virtual com port). I am able to do highspeed transfers using chnWrite(). Recently there was a case where we need to slow the physical interface down. So I changed otg_dcfg_dspd = DCFG_DSPD_HS_FS. This would enable hs-phy to negotiate with the host to communicate using full-speed protocol. After the change, the device would not enumerate. After a bit of effort, I realized, by changing MaxPacketSize on Interrupt_request_ep to 64 (from 512), it would enumerate. The interval on that end-point is set to 0xff. So my first query
1. Would anyone know if there is any such limit of packet size on interrupt_request_ep?
After the change, the device now enumerates but still I am not able to transfer big chunks of data. ChnWrite() after a few attempts just sits idle. I have declared three serial_usb buffers. I see data is present in all three of them. 'bcounter' field in obqueue is 0.
2. What is the best way to troubleshoot this issue ?
Thanks,
AQ