We are trying to communicate between 2 BF547 Blackfins using USB OTG functionality. Both the device application and the host application are written using VDK, Blackfin System services, and Visual DSP++ update 9.
The device application running on one of the BF547 uses the bulkadi infrastructure and works well. We have a Windows application that serves as the host, and can reliably communicate in both directions.
We are now trying to build an OTG application for a BF547 serving as a host, and are having some difficulties. The OTG application uses the adi_usb_host_bulkadi.c peripheral driver and follows the formalisms of ADI's sample code in USB_test.c.
The OTG host application properly enumerates the device BF547, with both the DrvCallBack() and the ClientCallback() properly happening. The device application detects that the endpoints have been configured, submits a buffer of data, and waits for the buffer to be transmitted. The transmission never happens, and the ClientCallback() (named USBcallback()) in the OTG host application is never called.
The OTG application has turned on data flow, has enabled USB, and has given the adi_dev_read() a set of chained buffers to use. Is there something else that we have to do to get the host application to function?
To provide more information, we have taken screen shot of some USB registers. The first screenshot shows the register for the device. Everything appears to be normal, except the TXCSR register for endpoint 5 shows that the FIFO is not empty. The device application uses that indicator for flow control. The second screen shot shows the same registers for the OTG host. Not much seems to be happening for either Endpoint 5 or 6.
Thanks in advance for any help. Regards,
PS If helpful, I have also attached a zip file containing the relevant USB files in our OTG application. In this case, BF547IMUAHRSOTG is defined.