Secure digital input/output interface (SDIO)
RM0090
1022/1731
DocID018909 Rev 11
Figure 333. Data path state machine (DPSM)
•
Idle: the data path is inactive, and the SDIO_D[7:0] outputs are in Hi-Z. When the data
control register is written and the enable bit is set, the DPSM loads the data counter
with a new value and, depending on the data direction bit, moves to either the Wait_S
or the Wait_R state.
•
Wait_R: if the data counter equals zero, the DPSM moves to the Idle state when the
receive FIFO is empty. If the data counter is not zero, the DPSM waits for a start bit on
SDIO_D. The DPSM moves to the Receive state if it receives a start bit before a
timeout, and loads the data block counter. If it reaches a timeout before it detects a
start bit, or a start bit error occurs, it moves to the Idle state and sets the timeout status
flag.
•
Receive: serial data received from a card is packed in bytes and written to the data
FIFO. Depending on the transfer mode bit in the data control register, the data transfer
mode can be either block or stream:
–
In block mode, when the data block counter reaches zero, the DPSM waits until it
receives the CRC code. If the received code matches the internally generated
CRC code, the DPSM moves to the Wait_R state. If not, the CRC fail status flag is
set and the DPSM moves to the Idle state.
–
In stream mode, the DPSM receives data while the data counter is not zero. When
the counter is zero, the remaining data in the shift register is written to the data
FIFO, and the DPSM moves to the Wait_R state.
If a FIFO overrun error occurs, the DPSM sets the FIFO error flag and moves to the
Idle state:
•
Wait_S: the DPSM moves to the Idle state if the data counter is zero. If not, it waits until
the data FIFO empty flag is deasserted, and moves to the Send state.
Idle
Busy
Send
Wait_R
Receive
End of packet
Disa
b
led or CRC fail
or timeout
Not
b
usy
Disa
b
led or
end of data
Data ready
End of packet or
end of data or
FIFO overrun
Ena
b
le and not send
Disa
b
led or
Rx FIFO empty or timeout or
start
b
it error
Disa
b
led or FIFO underrun or
end of data or CRC fail
ai14809
b
Wait_S
Start
b
it
On reset
Disa
b
led or CRC fail
Ena
b
le and send
DPSM disa
b
led
Read Wait
DPSM ena
b
led and
Read Wait Started
and SD I/O mode ena
b
led
ReadWait Stop
Data received and
Read Wait Started and
SD I/O mode ena
b
led