![Texas Instruments AM1808 Technical Reference Manual Download Page 1681](http://html.mh-extra.com/html/texas-instruments/am1808/am1808_technical-reference-manual_10945581681.webp)
Use Cases
1681
SPRUH82C – April 2013 – Revised September 2016
Copyright © 2013–2016, Texas Instruments Incorporated
Universal Serial Bus 2.0 (USB) Controller
Example 34-4. Programming the USB Endpoints in Host Mode (continued)
// Initialize the endpoint FIFO.
RX and TX will be allocated the same sizes.
usbRegs->INDEX = C1;
usbRegs->RXFIFOSZ = fifosize | ((double_buffer & 1)<<4);
usbRegs->RXFIFOADDR = fifo_start_address;
usbRegs->TXFIFOSZ =
fifosize | ((double_buffer & 1)<<4);
usbRegs->TXFIFOADDR = fifo_start_a (1<<(fdouble_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[C1].HOST_TYPE0 = type;
// TXTYPE
usbRegs->EPCSR[C1].HOST_RXTYPE = type;
// Set NAK limit / Polling interval (Interrupt & Iso protocols)
if ((device_protocol == INT) || (device_protocol == ISO)) {
usbRegs->EPCSR[C1].HOST_NAKLIMIT0 = TXINTERVAL;
// TX Polling interval
usbRegs->EPCSR[C1].HOST_RXINTERVAL = RXINTERVAL;
// RX Polling interval
} else {
usbRegs->EPCSR[C1].HOST_NAKLIMIT0 = 2;
// Frames to timeout from NAKs
usbRegs->EPCSR[C1].HOST_RXINTERVAL = 2;
// Frames to timeout from NAKs
}
//Set the address for transactions after SET ADDRESS successfully completed
usbRegs->EPTRG[C1].TXFUNCADDR = device_address;
usbRegs->EPTRG[C1].RXFUNCADDR = device_address;