Summary of Contents for Texas Instruments TUSB5052
Page 1
Bootcode Document for TUSB5052 USB/Serial Bridge Controller User’s Guide February 2004 MSDS Bus Solutions SLLU021A...
Page 2
TI product or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements. Following are URLs where you can obtain information on other Texas Instruments products and application solutions:...
Page 3
TUSB5052. How to Use This Manual This document contains the following chapters: Chapter 1—Introduction Chapter 2—TUSB5052 USB Firmware Flow Chapter 3—Function Chapter 4—Bootcode Defaults Chapter 5—Header Format and Vendor USB Request Chapter 6—Programming Considerations and Bootcode File List Notational Conventions This document uses the following conventions.
Page 4
FCC Warning In syntax descriptions, the instruction, command, or directive is in a bold typeface font and parameters are in an italic typeface. Portions of a syntax that are in bold should be entered as shown; portions of a syntax that are in italics describe the type of information that should be entered.
Introduction Chapter 1 illustrates the bootcode process with bootcode flow charts. It contains a description of the TUSB5052 bootcode document main program and a flow chart of the interrupt service routine, control (setup) endpoint handler, input endpoint 0 interrupt handler, output endpoint 0 handler, and the output endpoint 1 handler.
Bootcode Main Program 1.1 Bootcode Main Program After power-on reset, the bootcode copies predefined USB descriptors to the shared RAM. The first USB descriptor is the device descriptor. It describes the embedded function class, vendor ID, product ID, etc. The second USB descriptor is the configuration descriptor, which contains information such as how the device is powered, the number of configurations available, type and number of interfaces, and end-point descriptors.
Does EEPROM Download firmware to xdata RAM contain firmware? Read and copy VID and PID from EEPROM to TUSB5052 USB data initialization Is firmware Load firmware loaded and ready from USB to run? Disable all interrupts and switch...
Interrupt Service Routine 1.2 Interrupt Service Routine Interrupt service is generated from external interrupt 0. TUSB5052 uses this interrupt for internal peripherals. This interrupt consists of input/output endpoints, setup packet, I C, UART, printer port, and DMA. The main service routine confirms the source of interrupt then notifies corresponding functions.
Control (Setup) Endpoint Handler 1.3 Control (Setup) Endpoint Handler Once bootcode receives a setup packet from the host, a control packet interrupt handler acquires control from the interrupt service routine. This handler processes the incoming packet, performs the appropriate action, then returns control to the interrupt service routine, as shown in Figure 1−3.
Output Endpoint 0 Handler 1.5 Output Endpoint 0 Handler Figure 1−5 demonstrates the process bootcode uses to deal with an output endpoint 0 interrupt. Because bootcode does not support control write with a data stage, it merely clears the NAK bit in the handler. Figure 1−5.
Chapter 2 TUSB5052 USB Firmware Flow There are three types of control transfers in standard USB requests. Figure 2−1 through Figure 2−3 and Table 2−1 and Table 2−2 demonstrate the process bootcode uses to respond to each control transfer. Topic...
Control Write Transfer With Data (Bootcode does not support this) 2.1 Control Write Transfer With Data (Bootcode does not support this) Figure 2−1. Control Write Transfer With Data Setup stage Data stage Status stage More SETUP(0) OUT(1) OUT(0) OUT(0/1) IN(1) packets 1.
Get descriptor of string Illegal requests, stall endpoint Get descriptor of interface Illegal requests, stall endpoint Get descriptor of endpoint Illegal requests, stall endpoint Get configuration Return bConfiguredFlag value Get interface No action and return zero TUSB5052 USB Firmware Flow...
Page 20
Control Read Transfer Figure 2−3. Control Read Setup stage Data stage Status stage More SETUP(0) IN(1) IN(0) IN(0/1) OUT(1) packets 1. Hardware generates interrupt 1. Hardware generates interrupt to 1. Hardware handles this but to MCU. MCU. does not generate interrupt 2.
Chapter 3 Function Chapter 3 contains a bootcode module list with a functional description of each bootcode module. Topic Page Bootcode Functional Module List ......Function...
Bootcode Functional Module List 3.1 Bootcode Functional Module List 3.1.1 Bootcode.c File VOID FillEp0TxWithNextDataPacket (VOID) This function is alerted by an interrupt service routine if there is an IN token addressed to endpoint 0 from the host. This routine packetizes the remainder of the data and sends one packet to the host.
Bootcode Functional Module List Interrupt [0x03] VOID EX0_int(VOID) All UMP-related interrupts are performed in this routine. It reads in vector numbers in order to determine the type of interrupt and notifies the appropriate functions. VOID main(VOID) This is performed by the interrupt service routine when a setup packet is received.
Chapter 4 Bootcode Defaults Chapter 4 lists the defaults used for hub and bootcode settings. There are tables in each category that list the offset, field, size, and value, and provide short descriptions for the hub, device, configuration, interface, and interrupt endpoint1 descriptors.
Default Hub Settings Table 4−3. Configuration Descriptor Offset Field Size Value Description bLlength Size of this descriptor in bytes bDescriptorType Configuration descriptor type wTotalLength 25 = 9 + 9 + 7 Total length of data returned for this configuration. Includes the combined length of all descriptors (configuration, interface, endpoint, and class- or vendor-specific) returned for this configuration.
Max packet size for endpoint zero ID Vendor 0x0451 USB assigned vendor ID = TI ID Product 0x5052 TI part number=TUSB5052 BCD Device 0x0100 Device release number = 1.0 iManufacturer Index of string descriptor describing manufacturer iProduct Index of string descriptor describing product...
Default Bootcode Settings Table 4−7. Configuration Descriptor Offset Field Size Value Description bLlength Size of this descriptor in bytes bDescriptorType Configuration descriptor type wTotalLength 25 = 9 + 9 + 7 Total length of data returned for this configuration. Includes the combined length of all descriptors (configuration, interface, endpoint, and class- or vendor-specific) returned for this configuration.
Default Bootcode Settings Table 4−9. Output Endpoint 1 Descriptor Offset Field Size Value Description bLength Size of this descriptor in bytes bDescriptorType Endpoint descriptor type bEndpointAddress 0x01 Bits 3−0: The endpoint number Bit 7: Direction 0 = OUT endpoint 1 = IN endpoint bmAttributes Bits 1−0: Transfer type 10 = Bulk...
Chapter 5 Header Format and Vendor USB Request Chapter 5 explains the header format. It describes the product signature and descriptors and gives examples for ease of understanding. There are also tables that list the offset, field, size, value, and description for the USB info basic descriptor, as well as the USB info basic and firmware basic descriptor.
5.1.1 Product Signature There are two bytes for a signature field. They are identical to the product number. For example, UMP (TUSB5052) is 0x5052. TUSB2136 is 0x2136. Numerical order is LSB first. 5.1.2 Descriptor Each descriptor contains a prefix and content.
Examples 5.2 Examples 5.2.1 USB Info Basic Descriptor Table 5−1 contains generic USB information for the bootcode. Once the bootcode loads the data and verifies the checksum, it then copies information to corresponding registers. The last byte is a zero, which indicates the end of the descriptor.
Examples Table 5−2. USB Info Basic and Firmware Basic Descriptor Offset Type Size Value Description Signature0 0x52 FUNCTION_PID_L Signature1 0x51 FUNCTION_PID_H Data type 0x01 USB info basic Data size (low byte) 0x08 Size of descriptor content (8 bytes total) Data size (high byte) 0x00 Check sum 0x45...
Built-In Vendor-Specific USB Requests † 5.3 Built-In Vendor-Specific USB Requests 5.3.1 Get Bootcode Status bmRequestType USB_REQ_TYPE_DEVICE | 1100 0000b USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_IN bRequest BTC_GET_BOOTCODE_STATUS 0x80 wValue None 0x0000 wIndex None 0x0000 wLength Size of the status 0x0004 Data Bootcode status data 0xNNNN Bootcode returns the 4-byte status value.
Update Header 5.3.4 Prepare for Header Update bmRequestType USB_REQ_TYPE_DEVICE | 0100 0000b USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_OUT bRequest BTC_PRE_UPDATE_HEADER 0x83 wValue None 0x0000 wIndex None 0x0000 wLength None 0x0000 Data None This command tells bootcode that pending data downloaded through the output endpoint 1 is a header file rather than firmware. The following procedures update the header file.
Reboot 5.5 Reboot bmRequestType USB_REQ_TYPE_DEVICE | 0100 0000b USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_OUT bRequest BTC_REBOOT 0x85 wValue None 0x0000 wIndex None 0x0000 wLength None 0x0000 Data None This command forces bootcode to reboot (start over). bRequest values from 0x86 to 0x8E are reserved. 5.6 Force Execute Firmware bmRequestType USB_REQ_TYPE_DEVICE |...
Page 38
External Memory Write 5.8 External Memory Write bmRequestType USB_REQ_TYPE_DEVICE | 0100 0000b USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_OUT bRequest BTC_EXTERNAL_MEMORY_WRITE 0x91 wValue HI: 0x00 0x00NN LO: Data wIndex Data address 0xNNNN (from 0x0000 to 0xFFFF) wLength None 0x0000 Data None This command instructs bootcode to write data to the specified address. 5.9 I C Memory Read bmRequestType...
Page 39
I2C Memory Write 5.10 I C Memory Write bmRequestType USB_REQ_TYPE_DEVICE | 0100 0000b USB_REQ_TYPE_VENDOR | USB_REQ_TYPE_OUT bRequest BTC_I2C_MEMORY_WRITE 0x93 wValue HI: I C device number 0xNNNN LO: Data wIndex Data address 0xNNNN (from 0x0000 to 0xFFFF) wLength None 0x0000 Data None This command instructs the bootcode to write data to the specified address.
Programming Considerations 6.1 Programming Considerations 6.1.1 USB Requests For each USB request the firmware follows these steps, which ensure proper hardware operation. 1) Firmware first sets NAK bit on both input data endpoint 0 and output data endpoint 0, clears the interrupt sources, then clears the VECINT register. For example, for a setup packet, the firmware must clear the USB- STA_SETUP bit by writing a 1 to the bit of the register.
Page 44
0x02 = Application Code 0x03..0xEF Reserved 0xff = Reserved for Extended Data | Data Size Size of Data 9 for TUSB5052 & TUSB2136 Usb Info| Check Sum Check Sum of Data Section Bit Setting Bit 0: Bus/self power in bUSBCRL...
Page 45
// End point 0’s max packet size = 8 HUB_VID_L,HUB_VID_H, // Vendor ID for device, TI=0x0451 FUNCTION_PID_L,FUNCTION_PID_H, // Product ID for device, TUSB5052 0x00,0x01, // Revision level of device, Rev=1.0 // Index of manufacturer name string desc // Index of product name string desc...
Page 48
File List //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− VOID TransmitBufferOnEp0(PBYTE pbBuffer) pbEp0Buffer = pbBuffer; // Limit wLength to FEh if (tSetupPacket.bLengthH != 0){ tSetupPacket.bLengthH = 0; tSetupPacket.bLengthL = 0xFE; // Limit transfer size to wLength if needed // this prevent USB device sending ’more than require’ data back to the host if (bEp0TxBytesRemaining >...
Page 49
File List // while firmware still in the previous transfer. tEndPoint0DescriptorBlock.bIEPCNFG &= ~EPCNF_STALL; tEndPoint0DescriptorBlock.bOEPCNFG &= ~EPCNF_STALL; abReturnBuffer[0] = 0; abReturnBuffer[1] = 0; abReturnBuffer[2] = 0; switch(tSetupPacket.bmRequestType & USB_REQ_TYPE_MASK) case USB_REQ_TYPE_STANDARD: // check if high byte of wIndex is p184 of spec 1.1 if((tSetupPacket.bIndexH != 0x00)){ StallEndPoint0();...
Page 50
File List break; case USB_REQ_TYPE_ENDPOINT: // Endpoint number is in low byte of wIndex bTemp = tSetupPacket.bIndexL & EP_DESC_ADDR_EP_NUM; if(bTemp==0){ // EndPoint 0 if(tSetupPacket.bIndexL & EP_DESC_ADDR_DIR_IN) // input endpoint abReturnBuffer[0] = (BYTE) (tEndPoint0DescriptorBlock.bIEPCNFG & EPCNF_STALL); else // output endpoint abReturnBuffer[0] = (BYTE) (tEndPoint0DescriptorBlock.bOEPCNFG &...
Page 51
File List case USB_REQ_TYPE_ENDPOINT: // Endpoint number is in low byte of wIndex if(tSetupPacket.bValueL == FEATURE_ENDPOINT_STALL){ bTemp = tSetupPacket.bIndexL & EP_DESC_ADDR_EP_NUM; if(bTemp){ if(bTemp > MAX_ENDPOINT_NUMBER){ StallEndPoint0(); return; bTemp−−; // EP is from EP1 to EP7 while C language start from 0 if(tSetupPacket.bIndexL &...
Page 52
File List tEndPoint0DescriptorBlock.bOEPCNFG |= EPCNF_STALL; switch (tSetupPacket.bmRequestType & USB_REQ_TYPE_RECIP_MASK) // Feature selector is in wValue case USB_REQ_TYPE_ENDPOINT: // Endpoint number is in low byte of wIndex if (tSetupPacket.bValueL == FEATURE_ENDPOINT_STALL){ bTemp = tSetupPacket.bIndexL & EP_DESC_ADDR_EP_NUM; // Ignore EP0 STALL, no reaon to have EP0 STALL if(bTemp){ // other endpoints if(bTemp >...
Page 53
File List // check if it is a write command if(InTransaction == TRUE){ // control write but direction is IN StallEndPoint0(); return; // control write, stall output endpoint 0 // wLength should be 0 in all cases tEndPoint0DescriptorBlock.bOEPCNFG |= EPCNF_STALL; if(tSetupPacket.bValueL <...
Page 54
File List if((tSetupPacket.bmRequestType & USB_REQ_TYPE_RECIP_MASK) != USB_REQ_TYPE_DEVICE){ StallEndPoint0(); return; // check if it is a read command if(InTransaction == FALSE){ // control read but direction is OUT StallEndPoint0(); return; // check if wIndex = 0x00 if(tSetupPacket.bIndexL != 0x00){ StallEndPoint0(); return; // check if wValue = 0x00 if((tSetupPacket.bValueL != 0x00) || (tSetupPacket.bValueH != 0x00)){ StallEndPoint0();...
Page 55
File List // check if bValueL is greater than 1 if(tSetupPacket.bValueL > 0x01){ StallEndPoint0(); return; bConfiguredFlag = tSetupPacket.bValueL; TransmitNullResponseOnEp0(); return; case USB_REQ_GET_INTERFACE: // check if recipient is interface if((tSetupPacket.bmRequestType & USB_REQ_TYPE_RECIP_MASK) != USB_REQ_TYPE_INTERFACE){ StallEndPoint0(); return; if(tSetupPacket.bIndexL != 0x00){ StallEndPoint0(); return; // check if it is a read command if(InTransaction == FALSE){ // control read but direction is OUT...
Page 56
File List // check if wLength = 0x00 if((tSetupPacket.bLengthL != 0x00) || (tSetupPacket.bLengthH != 0x00)){ StallEndPoint0(); return; // check if wValue = 0x00 if((tSetupPacket.bValueL != 0x00) || (tSetupPacket.bValueH != 0x00)){ StallEndPoint0(); return; // control write, stall output endpoint 0 // wLength should be 0 in all cases tEndPoint0DescriptorBlock.bOEPCNFG |= EPCNF_STALL;...
Page 60
File List //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− VOID CopyDefaultSettings(VOID) BYTE bTemp; // clear out status bits abBootCodeStatus[0] = 0x00; abBootCodeStatus[1] = 0x00; abBootCodeStatus[2] = 0x00; abBootCodeStatus[3] = 0x00; // disconnect from USB bUSBCTL = 0x00; // Disable endpoints EP1 tOutputEndPointDescriptorBlock[0].bEPCNF = 0x00; // set default values for hub bHUBPIDL = HUB_PID_L;...
Page 61
File List //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− VOID Ep0OutputInterruptHandler(VOID) // happened only in status stage // Bootrom doesn’t handle data stage of control write. // stall for any OUT, this is cleared in the setup stage. tEndPoint0DescriptorBlock.bOEPCNFG |= EPCNF_STALL; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− VOID Ep1OutputInterruptHandler(VOID) BYTE bTemp,bSize,bCode; // check if it is the first packet if(wFirmwareLength == 0x0000){ wFirmwareLength...
Page 62
File List // check if firmware is ready if((WORD)wCurrentFirmwareAddress >= wFirmwareLength){ // check is checksum is correct if(bRAMChecksum == bFirmwareChecksum){ #ifdef SIMULATION lcdPutString(”USB Checksum Correct!”); DelaymSecond(2000); #endif bRAMChecksumCorrect = TRUE; bExecuteFirmware = TRUE; }else{ #ifdef SIMULATION lcdPutString(”USB Checksum Incorrect!”); DelaymSecond(2000); #endif bRAMChecksumCorrect = FALSE;...
Page 63
File List // clear reset flag bUSBSTA = USBSTA_RSTR; bVECINT = 0x00; break; default:break; // unknown interrupt ID = ENABLE; // Enable the interrupts again //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− #ifdef SIMULATION BYTE code abTestHeader[16] = { 0x52,0x51, // product ID 0x01, // Data Type (USB Info) 0x09,0x00, // Data Size (9 bytes) 0x80,...
Page 65
20000630 Bug fixed on wait for read for last byte in high speed. uC is too slow to set SRD bit. +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ #include ”types.h” #include ”i2c.h” #include ”tusb5052.h” #ifdef I2C_TEST #include ”delay.h” #include ”gpio.h” #endif static BYTE bDeviceCategory; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−...
Page 66
File List if( bType > I2C_CATEGORY_LAST) return; // invalid memory type else bDeviceCategory = bType; //−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− BYTE i2cWaitForRead(VOID) // wait until data is ready or ERR=1 while((bI2CSTA & I2CSTA_RXF) != I2CSTA_RXF) if((bI2CSTA & I2CSTA_ERR) == I2CSTA_ERR){ bI2CSTA |= I2CSTA_ERR; // clear error flag return ERROR;...
Page 73
header.c C Header Routines /*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ Sub−routines go here... +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−*/ BYTE headerCheckProductIDonI2c(VOID) // in simulation, if error, abEepromHeader could be xx. abEepromHeader[0] = 0x00; abEepromHeader[1] = 0x00; abEepromHeader[2] = 0x00; abEepromHeader[3] = 0x00; if(i2cRead(bi2cDeviceAddress, 0x0000, 0x02, &abEepromHeader[0]) == NO_ERROR){ if((abEepromHeader[0] == FUNCTION_PID_L) && (abEepromHeader[1] == FUNCTION_PID_H)){ bCurrentHeaderMediumType = DATA_MEDIUM_HEADER_I2C;...
Page 74
header.c C Header Routines // only support i2c due to memory size BYTE headerGetDataType(WORD wNumber) WORD wAddress; tHeaderPrefix tData; bCurrentDataType = DATA_TYPE_HEADER_END; wAddress = OFFSET_HEADER_FIRST_DATA_SECTION; if(bCurrentHeaderMediumType == DATA_MEDIUM_HEADER_I2C){ while(wNumber != 0x0000){ i2cRead(bi2cDeviceAddress, wAddress, sizeof(tHeaderPrefix),(PBYTE)&tData); bCurrentDataType = tData.bDataType; wCurrentDataSize = (WORD)tData.bDataSize_L; wCurrentDataSize += (WORD)(tData.bDataSize_H <<...
Page 75
header.c C Header Routines WORD wTemp,wAddress; tHeaderUsbInfoBasic *ptUsbInfoBasic; wAddress = ulCurrentHeaderPointer; ptUsbInfoBasic = (tHeaderUsbInfoBasic *)abEepromHeader; if(i2cRead(bi2cDeviceAddress,wAddress, wCurrentDataSize, &abEepromHeader[0x0000]) != NO_ERROR) return ERROR; // get check sum bChecksum = 0x00; for(wTemp=0x0000;wTemp<wCurrentDataSize;wTemp++) bChecksum += abEepromHeader[wTemp]; // check if the data is for hub info if(bChecksum == bCurrentDataChecksum){ // download VID and VIP Information from EEPROM bHUBVIDL = ptUsbInfoBasic−>bVID_L;...
Page 81
// Function Reset Interrupt Enable Bit // 0: disable, 1:enable #define USBCTL_DIR 0x01 // USB traffic direction 0: USB out packet, 1:in // packet (from TUSB5052 to The host) #define USBCTL_SIR 0x02 // Setup interrupt status bit // 0: SETUP interrupt is not served.
Page 82
UMP-Related Header File #define HUBCNF1_P3A 0x20 // Hub Port 3 connection bit // 0: removable, 1:fixed #define HUBCNF1_P4E 0x40 // Hub Port 4 enable/disable control bit // 0: disable, 1:enable #define HUBCNF1_P4A 0x80 // Hub Port 4 connection bit...
Page 94
usb.h USB-Related Header File BYTE bLength; // Length of this descriptor (9h bytes) BYTE bDescriptorType; // Type code of this descriptor (02h) WORD wTotalLength; // Size of this config desc plus all interface, // endpoint, class, and vendor descriptors BYTE bNumInterfaces;...
Type Definition Header File 6.6 types.h Type Definition Header File /*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ Texas Instruments USB to Multiport Controller Type definition +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ Source: types.h, v 1.0 99/01/26 14:34:34 Author: Horng−Ming Lobo Tai lobotai@ti.com Header: (none) For more information, contact Lobo Tai...
Page 96
C-Related Header File 6.7 i2c.h C-Related Header File /*−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ Texas Instruments I2C Header File +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ Source: i2c.h, v 1.0 1999/11/24 16:01:49 Author: Horng−Ming Lobo Tai lobotai@ti.com Header: (none) For more information, contact Lobo Tai Texas Instruments 12500 TI Blvd, MS 8761 Dallas, TX 75243 Tel 214−480−3145...
Page 97
i2c.h C-Related Header File #define I2C_CATEGORY_3 #define I2C_CATEGORY_LAST #define BIT_I2C_READ #define BIT_I2C_DEVICE_TYPE_MEMORY 0xA0 #define MASK_I2C_DEVICE_ADDRESS 0x07 #ifdef __cplusplus #endif #endif //−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Cut along the line −−−−−−−−−−−−−−−−−−−−−−−−−−−− Programming Considerations and Bootcode File List 6-57...
Keyboard Hub Micro−Controller Header +−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−+ Source: header.h, v 1.0 2000/05/28 12:59:29 Author: Horng−Ming Lobo Tai lobotai@ti.com Header: (none) For more information, contact Lobo Tai Texas Instruments 12500 TI BLVD, MS8761 Dallas, TX 75243 Tel 214−480−3145 Fax 214−480−3443 Logs: WHEN WHAT...
Page 99
header.h C Header-Process-Related Header File } tFirmwareRevision, *ptFirmwareRevision; typedef struct _tHeaderUsbInfoBasic BYTE bBitSetting; // Bit 0: Bus/self power in bUSBCRL // Bit 6: Individual/Gang Power Control // Bit 7: PWRSW BYTE bVID_L; // Vendor ID BYTE bVID_H; BYTE bPID_HUB_L; // Hub Product ID BYTE bPID_HUB_H;...
Need help?
Do you have a question about the TUSB5052 and is the answer not in the manual?
Questions and answers