Hello All
I have met some problem. I use TMS320F2837xD and v190 version of firmware. I need to create 6 or more endpoints on the bulk device. It is indicated that USB library and USB controller support up to 16 endpoints IN and the same OUT . But functions _USBIndexWrite or _USBIndexRead in file usb.c , contain "assert" which permits us create only 4 endpoints. I highlight it.
\\param ui32Endpoint is the endpoint index to target for this write.
_USBIndexWrite(uint32_t ui32Base, uint32_t ui32Endpoint,
uint32_t ui32IndexedReg, uint32_t ui32Value, uint32_t ui32Size)
{
uint32_t ui32Index;
//
// Check the arguments.
//
ASSERT(ui32Base == USB0_BASE);
ASSERT((ui32Endpoint == 0) || (ui32Endpoint == 1) || (ui32Endpoint == 2) ||
(ui32Endpoint == 3));
ASSERT((ui32Size == 1) || (ui32Size == 2));
//
// Save the old index in case it was in use.
//
ui32Index = HWREGB(ui32Base + USB_O_EPIDX);
//
// Set the index.
//
HWREGB(ui32Base + USB_O_EPIDX) = ui32Endpoint;
Can somebody to comment on this ? So Have I delete this limitation? Or may be it was done with some consideration?
Thank you.
Andrii
Hello All again
I have investigated file usb.c more and have found other limitation of numbers of Endpoints for example
Limit is 7 general points in previous example it was 4 points. So I do not understand which number of points is valid.
USBEndpointStatus(uint32_t ui32Base, uint32_t ui32Endpoint)
{
uint32_t ui32Status;
//
// Check the arguments.
//
ASSERT(ui32Base == USB0_BASE);
ASSERT((ui32Endpoint == USB_EP_0) || (ui32Endpoint == USB_EP_1) ||
(ui32Endpoint == USB_EP_2) || (ui32Endpoint == USB_EP_3) ||
(ui32Endpoint == USB_EP_4) || (ui32Endpoint == USB_EP_5) ||
(ui32Endpoint == USB_EP_6) || (ui32Endpoint == USB_EP_7));
USBHostEndpointStatusClear(uint32_t ui32Base, uint32_t ui32Endpoint,
uint32_t ui32Flags)
{
//
// Check the arguments.
//
ASSERT(ui32Base == USB0_BASE);
ASSERT((ui32Endpoint == USB_EP_0) || (ui32Endpoint == USB_EP_1) ||
(ui32Endpoint == USB_EP_2) || (ui32Endpoint == USB_EP_3) ||
(ui32Endpoint == USB_EP_4) || (ui32Endpoint == USB_EP_5) ||
(ui32Endpoint == USB_EP_6) || (ui32Endpoint == USB_EP_7));
USBHostEndpointDataToggle(uint32_t ui32Base, uint32_t ui32Endpoint,
bool bDataToggle, uint32_t ui32Flags)
{
uint32_t ui32DataToggle;
//
// Check the arguments.
//
ASSERT(ui32Base == USB0_BASE);
ASSERT((ui32Endpoint == USB_EP_0) || (ui32Endpoint == USB_EP_1) ||
(ui32Endpoint == USB_EP_2) || (ui32Endpoint == USB_EP_3) ||
(ui32Endpoint == USB_EP_4) || (ui32Endpoint == USB_EP_5) ||
(ui32Endpoint == USB_EP_6) || (ui32Endpoint == USB_EP_7));