Texas Instruments TMS320DM357 User Manual
Page 19
www.ti.com
Introduction
Example 3. Programming the USB Endpoints in Host Mode (continued)
usbRegs->TXFIFOSZ =
fifosize | ((double_buffer & 1)<<4);
usbRegs->TXFIFOADDR = fifo_start_address + (1<<(fifosize+double_buffer));
usbRegs->RXMAXP = FIFO_MAXP;
usbRegs->TXMAXP = FIFO_MAXP;
//Configure the endpoint
switch (device_speed) {
case LOW_SPEED : type = (3<<6) | ((device_protocol & 3) << 4) | (device_ep & 0xf); break;
case FULL_SPEED: type = (2<<6) | ((device_protocol & 3) << 4) | (device_ep & 0xf); break;
case HIGH_SPEED: type = (1<<6) | ((device_protocol & 3) << 4) | (device_ep & 0xf); break;
default:error++;
}
usbRegs->EPCSR[CHAN_NUM+1].HOST_TYPE0 = type;
// TXTYPE
usbRegs->EPCSR[CHAN_NUM+1].HOST_RXTYPE = type;
// Set NAK limit / Polling interval (Interrupt & Iso protocols)
if ((device_protocol == INT) || (device_protocol == ISO)) {
usbRegs->EPCSR[CHAN_NUM+1].HOST_NAKLIMIT0 = TXINTERVAL;
// TX Polling interval
usbRegs->EPCSR[CHAN_NUM+1].HOST_RXINTERVAL = RXINTERVAL;
// RX Polling interval
} else {
usbRegs->EPCSR[CHAN_NUM+1].HOST_NAKLIMIT0 = 2;
// Frames to timeout from NAKs
usbRegs->EPCSR[CHAN_NUM+1].HOST_RXINTERVAL = 2;
// Frames to timeout from NAKs
}
//Set the address for transactions after SET ADDRESS successfully completed
usbRegs->EPTRG[CHAN_NUM+1].TXFUNCADDR = device_address;
usbRegs->EPTRG[CHAN_NUM+1].RXFUNCADDR = device_address;
SPRUGH3 – November 2008
Universal Serial Bus (USB) Controller
19