W86L388
Programming Information
6. REGISTER
The register in the W86L388 is direct access registers and indirect access registers. The direct access
registers and indirect access registers are listed as follows:
Addr
A[3:1]
Register Name
(note 1)
Direct Access Registers:
000
Command Pipe Reg.
B
15
B
14
B
13
B
12
B
11
B
10
Content (note 2)
B
B
9
6
B
8
B
7
B
5
B
4
Command pipe registers / Response registers
0
0
0
0
-
-
-
-
0
0
Receive data buffer
0
0
Transmit data buffer
0
0
Control
0
0
0
0
0
0
B
3
0
-
B
2
0
-
0
0
B
1
0
-
1
0
B
0
0
-
0
0
X X X X X X X X X X X X X X X X
-
-
-
-
-
-
-
-
(WO)
Response Reg. (RO)
Status Reg. (RO)
Control Reg. (R/W)
Receive Data Buffer
(R/O)
Transmit Data Buffer
(WO)
Interrupt Status Reg.
(RC)
Interrupt Enable Reg.
(R/W)
General I/O Port Data
Reg. (R/W)
General I/O Port
Control Reg. (R/W)
General IP Interrupt
Status Reg. (RC)
General IP Interrupt
Enable Reg. (R/W)
Index Address Reg.
(R/W)
Index Data Register
001
001
010
010
011
011
100
100
101
101
110
111
0
0
-
0
0
0
-
0
0
0
-
0
0
0
0
Status
0
1
-
-
0
0
0
-
0
0
-
0
-
Interrupt status
0
0
-
-
0
-
0
-
0
0
-
0
-
0
0
-
0
-
0
-
0
-
-
0
-
0
-
-
0
-
0
-
-
GIO data
X X X X X
-
-
-
-
-
GIO interrupt status
0
-
0
-
0
-
0
-
-
-
-
-
0
-
-
0
-
0
-
0
-
0
0
-
0
-
0
Interrupt enable
1
0
-
-
0
-
0
-
1
-
0
-
0
-
GIO control
0
0
-
-
0
-
0
-
0
-
GIO interrupt enable
0
0
0
0
0
0
0
Index address
0
0
0
0
0
0
Index data register
0
Indirect Access Registers:
000
Extend Status Reg.
(RO)
000
001
010
011
Setting Reg. (R/W)
Data Format Register
(R/W)
Nac Time-out Register
(R/W)
Error Status Reg. (RO)
X X X X X X X X X X X X X X X X
0
-
W
0
0
0
-
-
0
1
0
-
-
0
1
Extend status
0
-
-
0
0
1
1
Status
0
-
0
1
0
-
0
-
-
0
-
-
-
-
-
Setting register
1
0
0
0
0
Nac time out register
0
1
0
1
Data length
0
1
-
0
1
-
0
1
-
0
1
-
0
1
-
0
1
-
-
0
0
1
-
-
1
0
1
-
100
0
0
Test
0
0
Note 1: R/W means the register can be read and write.
Ready & Data Size
Register (R/W)
0
0
0
0
0
0
RO means the register is read only.
RC means the register is read only and read clear.
WO means the register is write only.
0
0
0
0
0
0
F
0
-
0
-
0
-
0
-
0
-
0
-
0
8-
0
Note 2: The data bit in the content is the initial value during hardware reset.
0: the bit value is 0.
1: the bit value is 1.
X: the bit value is unknow.
-: Undefined bit in the register and the value will read 0.
6.1 Register Description
6.1.1 Direct Access Registers
Command Pipe Register A[3:1] = 000, Write only:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Command pipe registers
1
Bit 47 Bit 46 Bit 45 Bit 44 Bit 43 Bit 42 Bit 41 Bit 40 Bit 39 Bit 38 Bit 37 Bit 36 Bit 35 Bit 34 Bit 33 Bit 32
Bit 31 Bit 30 Bit 29 Bit 28 Bit 27 Bit 26 Bit 25 Bit 24 Bit 23 Bit 22 Bit 21 Bit 20 Bit 19 Bit 18 Bit 17 Bit 16
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1
The 48-bit of SD command is located at the 3 words of command pipe, the Host must write three
words continuously, the first write word is bit 47 to bit 32 of the command, the second write word is
bit 31 to bit 16, the third word is bit 15 to bit 1, bit 0 of the command is 1 always. The 7-bit CRC
code is located at bit [7:1] of command, these bits are ignored and the CRC code will generated
automatically if the CMD_CRC bit in the setting register is enabled. The command will not started
until the three word of the register has been written. When the CMD12 write to the command pipe
register, the time period from the first word write action to the end of third word write action must
longer than the clock period of the system clock.
These registers will be cleared during hardware or software reset.
When the CPU data size is 8-bit, the 48-bit of SD command is located at the 6 bytes of command
pipe, the Host must write six bytes continuously. If the 7-bit CRC code is generated automatically,
the last byte also must write but the content of this byte is ignored.
Response Register A[3:1] = 000, Read only:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
48-bit respnse registers
Bit 47 Bit 46 Bit 45 Bit 44 Bit 43 Bit 42 Bit 41 Bit 40 Bit 39 Bit 38 Bit 37 Bit 36 Bit 35 Bit 34 Bit 33 Bit 32
Bit 31 Bit 30 Bit 29 Bit 28 Bit 27 Bit 26 Bit 25 Bit 24 Bit 23 Bit 22 Bit 21 Bit 20 Bit 19 Bit 18 Bit 17 Bit 16
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
1
0
0
0
0
0
0
Bit
130
Bit
114
Bit
Bit
128
131
Bit
Bit
115
112
Bit 99 Bit 98 Bit 97 Bit 96
Bit
129
Bit
113
0
136-bit respnse registers
0
Bit
134
Bit
118
Bit
102
Bit
135
Bit
119
Bit
103
Bit
120
Bit
104
Bit
121
Bit
105
Bit
133
Bit
117
Bit
101
Bit
132
Bit
116
Bit
100
Bit
122
Bit
106
Bit
123
Bit
107
Bit
124
Bit
108
Bit
126
Bit
110
Bit
125
Bit
109
Bit
127
Bit
111
Bit 95 Bit 94 Bit 93 Bit 92 Bit 91 Bit 90 Bit 89 Bit 88 Bit 87 Bit 86 Bit 85 Bit 84 Bit 83 Bit 82 Bit 81 Bit 80
Bit 79 Bit 78 Bit 77 Bit 76 Bit 75 Bit 74 Bit 73 Bit 72 Bit 71 Bit 70 Bit 69 Bit 68 Bit 67 Bit 66 Bit 65 Bit 64
Bit 63 Bit 62 Bit 61 Bit 60 Bit 59 Bit58 Bit 57 Bit 56 Bit 55 Bit 54 Bit 53 Bit 52 Bit 51 Bit 50 Bit 49 Bit 48
Bit 47 Bit 46 Bit 45 Bit 44 Bit 43 Bit 42 Bit 41 Bit 40 Bit 39 Bit 38 Bit 37 Bit 36 Bit 35 Bit 34 Bit 33 Bit 32
Bit 31 Bit 30 Bit 29 Bit 28 Bit 27 Bit 26 Bit 25 Bit 24 Bit 23 Bit 22 Bit 21 Bit 20 Bit 19 Bit 18 Bit 17 Bit 16
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1
The 48-bit or 136-bit card response data may be read this register repeatedly, the first word is bit 47
to 32 of the response if the response is 48 bits, the first word is bit 135 to bit 128 at the data pin of bit
7 to 0 if the response if 136 bits.
These registers will be cleared during hardware or software reset.
1
Status Register A[3:1] = 001, Read only:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
INT DRQ R2 CMD_
-
RSP
0
DAT_
RV
0
DAT_
TX
0
Buf_
Full
0
Buf_
Epty
1
0
0
0
-
-
-
-
-
-
-
INT (Interrupt): This bit = 1 when the interrupt input becomes active (low) regardless any state of
INT_E bit of the interrupt enable register.
DRQ (DMA request): This bit = 1 when DMA request input (DRQN) becomes active (low).
R2 (R2 response): This bit reflects the data stored in the response registers are the R2 response and
136 bits effective. The 48-bit of response is stored if this bit = 0. This bit will updated if the card
response has been received and RSP bit (bit 12) of this register is active.
CMD_RSP (Card command response): This bit indicates that the response from the card has been
received and R2 status is updated. This bit will be cleared automatically if the Host read response
data.
Buf_Epty (Buffer empty): This bit = 1 when the command is receive data on the data line and the
receive data buffer is empty or when the command is transmit data on the data line and the transmit
data buffer is empty. The receive and transmit data buffer will set to empty during reset.
Buf_Full (Buffer full): This bit = 1 when the command is receive data on the data line and the receive
data buffer is full or when the command is transmit data on the data line and the transmit data buffer
is full.
DAT_TX (Data transmit): This bit indicates the data will transmit to the card on the data line. It will
reset to low when the command has been executed completedly.
DAT_RV (Data receive): This bit indicates the data receive from the card on the data line. It will set
high when the command pipe of read command has been write completedly and will reset to low
when the data length and CRC-16 has been received and the receive data buffer has been read out
completedly. In multi block read operation, this bit stays in high until the STOP_TRANSMISSION
command is written. The buffer status bits of Buf_Epty and Buf_Full reflect the status of receive data
buffer if this bit is high, the Buf_Epty and Buf_Full reflect the status of transmit data buffer if this bit
is low.
Bit [15:8] of this register will set to default value during hardware or software reset.
Control Register A[3:1] = 001, Read/Write:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5
PWD RST DBF_
RST
0
Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
SIEN
PWD (Power down): This bit = 1 is used to power down the internal logic and crystal driver. Set this
bit to low will enabled the W86L388 when the W86L388 is in power down state. But the W86L388
will never enabled if Host interface type 2 is configured and the Host I/F clock (HCKI) input is
disabled.
RST (Reset): This bit = 1 is software reset and is used to reset the internal logic and receive and
transmit data buffer, the content of other registers are not affected. The command register pipe and
response registers will be cleared. This bit will return to low after software reset.
DBF_RST (Data buffer reset): This bit is used to reset the receive and transmit data buffer, it will
return to low automatically after the data buffer have been reset.
C_CLKS
0
0
0
0
1
0
0
-
-
-
-
-
-
-
-
SIEN (Serial interface enable): The SD/MMC bus interface is enabled when this bit is high. It may be
disabled if card is not exist or during the card is programming. The CLK of SD/MMC may be
disabled by writing this bit to low during the card is programming.
C_CLKS (System and card clock set): These bits are used to set the clock frequency of the system
and card, 0010 = XTI clock/8192, 0011 = XTI clock/4096, 0100 = XTI clock/2048, 0101 = XTI
clock/1024, 0110 = XTI clock/512, 0111 = XTI clock/256, 1000 = XTI clock/128, 1001 = XTI
clock/64, 1010 = XTI clock/32, 1011 = XTI clock/16, 1100 = XTI clock/8, 1101 = XTI clock/4, 1110
= XTI clock/2, 1111 = XTI clock.
Bit 7 and Bit [5:0] of this register will remained unchange during software reset.
Receive Data Buffer Register A[3:1] = 010, Read only:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Receive data buffer
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Receive Data Buffer Register A[3:0] = 0100, Read only, 8-bit data size:
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Receive data buffer
0
0
0
0
0
0
0
0
The data received from the DAT pin or DAT[3:0] pins will be recorded in receive data buffer if the
data read on the data line, the BUF_Epty and BUF_Full bits in the status register will reflect the
buffer status and XDRQN will actived. The received data can be read out by reading this register
repeatedly until receive data buffer is empty. Only high byte data (bit [15:8]) is valid if the last data is
one byte only.
The data is located at bit[7:0] and address bit 0 must set 0 when read the receive data buffer register
with 8-bit data size is configured.
Transmit Data Buffer Register A[3:1] = 010, Write only:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Transmit data buffer
X
X
X
X
X
X
X
X
X
X
X
Transmit Data Buffer Register A[3:0] = 0100, Write only, 8-bit data size:
X
X
X
X
X
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Transmit data buffer
X
X
X
X
X
X
X
X
The data stored in the transmit data buffer will transmitted to the DAT pin or DAT[3:0] pins if the
data will write to the card on the data line, the BUF_Epty and BUF_Full bits in the status register will
reflect the buffer status and XDRQN will actived. The transmit data must be writen to this register
repeatedly until the data size specified in the command register is enough. Only high byte data
(bit[15:8]) is valid if the last data is one byte only.
The data is located at bit [7:0] and address bit 0 must set 0 when write the transmit data buffer
register with 8-bit data size of Host CPU.
Interrupt Status Register A[3:1] = 011, Read only and Read Clear:
Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
-
TOE
-
-
-
-
-
-
-
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9
CRC7 CRC16/
CMDE PRGE DREQ GIT
Cwr_
ERR
INS/
Cwr_
RSP
0
0
0
0
0
0
0
0
CMDE (Command ended): Command ended and response received if the command response is
needed. This bit will be cleared if the Host start write command pipe register.
PRGE (Program ended): Program ended or next block of data can be transmitted in block write
command or multi block write command. This bit will active at the end of the busy state on the DAT
signal. This bit will be cleared if the Host start write command pipe register.
DREQ (DMA request interrupt in): This bit = 1 when the data transfer is requested.
GIT (General IO interrupt in): This bit = 1 when the enabled general input port goes low.
INS/Cwr_RSP: The INS interrupt in is effective when SIEN bit in the control register is low, the
Cwr_RSP interrupt in is effective when SIEN bit is high.
INS (Card insert/remove interrupt in): This bit = 1 if CD/DAT3 pin goes high or goes low. This bit
indicates the card is inserting or removing and the XINTN will be actived even if the chip is in power
down state and when INS_IE and INT_E in the interrupt enable register is configured in high. This bit
will not affected when the SD data bit is 4-bit width and the data will transfer on the data line.
Cwr_RSP (Card write data response): This bit indicates that the CRC status or programming status of
the write data has been received, if write data CRC error occurs or programming error occurs the
error status will reflected on the CRC16/Cwr_ERR.
CRC7 (Response CRC error interrupt): This bit = 1 when the received response with CRC error
checked. This bit will be disabled when NO_CRC bit is set in the control register.
CRC16/Cwr_ERR (Data CRC error or Card write error interrupt): This bit = 1 when the received data
with CRC error checked if read data from the card, it will be disabled when NO_CRC bit is set in the
control register. This bit will set high if the write data CRC error occurs or programming error occurs
from the card and regardless the state of NO_CRC bit. The Host should read Cpg_ERR bit of the
error status register to check is CRC error or programming error.
TOE (Time out error interrupt): This bit = 1 when any one of the time out error occurs.
The XINTN goes low when any bit of interrupt status register becomes high, the XINTN signal will
return to high and the interrupt status register will cleared when read the interrupt status register. The
related bit in the interrupt status register also will be recorded but INT bit in the status register and
XINTN pin will not activated if the related interrupt enable bit is disabled.
Bit [15:8] of this register will be cleared during hardware or software reset.
Interrupt Enable Register A[3:1] = 011, Read/Write:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8
-
Bit 7
CMDE_
Bit 5
DREQ_
Bit 6
PRGE_
-
-
-
-
-
-
-
Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIT_
INT_
IE
E
CRC_
IE
TOE_
IE
IE
IE
IE
INS_
IE/
Cwr_
RSP_
IE
0
0
0
0
0
1
1
0
The interrupt status will reflect the status and the XINTN pin will active if the related bit interrupt is
enabled and global interrupt enable bit is enabled. The interrupt status bit will be recorded but INT bit
in the status register and XINTN pin will not active if the related bit of this register is disabled.
CMDE_IE (Command ended interrupt enable):
PRGE_IE (Program ended interrupt enable):
DREQ_IE (DMA request interrupt enable):
GIT_IE (General IO interrupt enable):
INS_IE/Cwr_RSP_IE (Card insert or Card write Response interrupt enable): The INS_IE can be
programmed or read when SIEN bit in the control register is low and Cwr_RSP_IE can be
programmed or read when SIEN bit is high.
CRC_IE (CRC7 and CRC16/Cwr_ERR interrupt enable): This bit is used to enable both CRC7 and
CRC16/Cwr_ERR interrupt.
TOE_IE (Time out interrupt enable):
INT_E (Global interrupt enable): The interrupt pin XINTN will not actived if this bit is disabled, the
interrupt status register and INT bit in the status register are not affected.
Bit [7:0] of this register will remained unchange during software reset.
General I/O Port Data Register A[3:1] = 100, Read/Write:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
-
-
-
-
-
-
-
-
-
-
- GIN4/
GO4
X
0
GIN3/
GO3
X
GIN2/
GO2
X
GIN1/
GO1
X
GIN0/
GO0
X
0
0
GIN[4:0]: is the read data from general input port [4:0] pins. The read bit is high when the input pin
is low.
GO[4:0]: is the data output to the GO[4:0] pins, write 1 in the register will output high on the related
GO pin. The read value will be the same as write value when the GIO[4:0] is defined as output.
General I/O Port Control Register A[3:1] = 100, Read/Write:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GOEN
- GOEN
GOEN
GOEN
GOEN
-
-
-
-
-
-
-
-
-
-
0
0
0
4
0
3
0
2
0
1
0
0
0
GOEN[4:0] (General output enable): The bit = 1 is used to enable the related general output pin of
GO[4:0].
Bit [4:0] of this register will remained unchange during software reset.
General IO Port Interrupt Status Register A[3:1] = 101, Read Only and Read Clear:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
-
-
-
-
-
-
-
-
-
0
-
0
-
0
GIT4 GIT3 GIT2 GIT1 GIT0
0
0
0
0
0
GIT0 (General input output interrupt): The bit = 1 indicates the GIO0 pin has been change state (goes
from high to low or from low to high), read this register will clear the GIT0 to low.
GIT[4:1] (General input output interrupt): The bit = 1 indicates the related GIO pin has been actived
(low), read this register will clear the general IO port interrupt status to low if the related GIO[4:1] is
high.
Bit [12:8] of this register will be cleared during hardware or software reset.
General IO Port Interrupt Enable Register A[3:1] = 101, Read/Write:
Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
GIT_
EN0
0
GIT_
EN4
0
GIT_
EN3
0
GIT_
EN2
0
GIT_
EN1
0
0
0
0
-
-
-
-
-
-
-
-
-
-
-