
Philips Semiconductors
ISP1160
Embedded USB Host Controller
Product data
Rev. 03 — 27 February 2003
26 of 89
9397 750 10765
Koninklijke Philips Electronics N.V. 2003. All rights reserved.
Following is an example of a C program that shows how to write data into the ATL
buffer RAM. The total number of data bytes to be transferred is 80 (decimal) that will
be set into the HcTransferCounter register as 50H. The data consists of four types of
PTD data:
1. The rst PTD header (IN) is 8 bytes, followed by 16 bytes of space reserved for
its payload data;
2. The second PTD header (IN) is also 8 bytes, followed by 8 bytes of space
reserved for its payload data;
3. The third PTD header (OUT) is 8 bytes, followed by 16 bytes of payload data with
values beginning from 0H to FH incrementing by 1;
4. The fourth PTD header (OUT) is also 8 bytes, followed by 8 bytes of payload data
with values beginning from 0H to EH incrementing by 2.
In all PTDs, we have assigned device address as 5 and endpoint 1. ActualBytes is
always zero (0). TotalBytes equals the number of payload data bytes transferred.
However, note that for bulk and control transfers, TotalBytes can be greater that
MaxPacketSize.
Table 6 shows the results after running this program.
//The example program for writing ATL buffer RAM
#include <conio.h>
#include <stdio.h>
#include <dos.h>
//Define register commands
#define wHcTransferCounter 0x22
#define wHcuPInterrupt 0x24
#define wHcATLBufferLength 0x2b
#define wHcBufferStatus 0x2c
// Define I/O Port Address for HC
#define HcDataPort 0x290
#define HcCmdPort 0x292
//Declare external functions to be used
unsigned int HcRegRead(unsigned int wIndex);
void HcRegWrite(unsigned int wIndex,unsigned int wValue);
void main(void)
{
unsigned int i;
unsigned int wCount,wData;
// Prepare PTD data to be written into HC ATL buffer RAM:
unsigned int PTDData[0x28]=
{
0x0800,0x1010,0x0810,0x0005, //PTD header for IN token #1
//Reserved space for payload data of IN token #1
0x0000,0x0000,0x0000,0x0000, 0x0000,0x0000,0x0000,0x0000,
0x0800,0x1008,0x0808,0x0005, //PTD header for IN token #2