HSMCI Status Register
Bit | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | |
UNRE | OVRE | ACKRCVE | ACKRCV | XFRDONE | FIFOEMPTY | BLKOVRE | |||
Access | |||||||||
Reset | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | |
CSTOE | DTOE | DCRCE | RTOE | RENDE | RCRCE | RDIRE | RINDE | ||
Access | |||||||||
Reset | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Bit | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
CSRCV | SDIOWAIT | SDIOIRQA | |||||||
Access | |||||||||
Reset | 0 | 0 | 0 |
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
NOTBUSY | DTIP | BLKE | TXRDY | RXRDY | CMDRDY | ||||
Access | |||||||||
Reset | 1 | 0 | 0 | 1 | 0 | 1 |
Command Ready (cleared by writing in HSMCI_CMDR)
Value | Description |
---|---|
0 | A command is in progress. |
1 | The last command has been sent. |
Receiver Ready (cleared by reading HSMCI_RDR)
Value | Description |
---|---|
0 | Data has not yet been received since the last read of HSMCI_RDR. |
1 | Data has been received since the last read of HSMCI_RDR. |
Transmit Ready (cleared by writing in HSMCI_TDR)
Value | Description |
---|---|
0 | The last data written in HSMCI_TDR has not yet been transferred in the Shift Register. |
1 | The last data written in HSMCI_TDR has been transferred in the Shift Register. |
Data Block Ended (cleared on read)
This flag must be used only for Write Operations.
Refer to the MMC or SD Specification for more details concerning the CRC Status.
Value | Description |
---|---|
0 | A data block transfer is not yet finished. |
1 | A data block transfer has ended, including the CRC16 Status transmission. The flag is set for each transmitted CRC Status. |
Data Transfer in Progress (cleared at the end of CRC16 calculation)
Value | Description |
---|---|
0 | No data transfer in progress. |
1 | The current data transfer is still in progress, including CRC16 calculation. |
HSMCI Not Busy
A block write operation uses a simple busy signalling of the write operation duration on the data (DAT0) line: during a data transfer block, if the card does not have a free data receive buffer, the card indicates this condition by pulling down the data line (DAT0) to LOW. The card stops pulling down the data line as soon as at least one receive buffer for the defined data transfer block length becomes free.
Refer to the MMC or SD Specification for more details concerning the busy behavior.
For all the read operations, the NOTBUSY flag is cleared at the end of the host command. For the Infinite Read Multiple Blocks, the NOTBUSY flag is set at the end of the STOP_TRANSMISSION host command (CMD12).
For the Single Block Reads, the NOTBUSY flag is set at the end of the data read block.
For the Multiple Block Reads with predefined block count, the NOTBUSY flag is set at the end of the last received data block.
The NOTBUSY flag allows to deal with these different states.
Value | Description |
---|---|
0 | The HSMCI is not ready for new data transfer. Cleared at the end of the card response. |
1 | The HSMCI is ready for new data transfer. Set when the busy state on the data line has ended. This corresponds to a free internal data receive buffer of the card. |
SDIO Interrupt for Slot A (cleared on read)
Value | Description |
---|---|
0 | No interrupt detected on SDIO Slot A. |
1 | An SDIO Interrupt on Slot A occurred. |
SDIO Read Wait Operation Status
Value | Description |
---|---|
0 | Normal Bus operation. |
1 | The data bus has entered IO wait state. |
CE-ATA Completion Signal Received (cleared on read)
Value | Description |
---|---|
0 | No completion signal received since last status read operation. |
1 | The device has issued a command completion signal on the command line. |
Response Index Error (cleared by writing in HSMCI_CMDR)
Value | Description |
---|---|
0 | No error. |
1 | A mismatch is detected between the command index sent and the response index received. |
Response Direction Error (cleared by writing in HSMCI_CMDR)
Value | Description |
---|---|
0 | No error. |
1 | The direction bit from card to host in the response has not been detected. |
Response CRC Error (cleared by writing in HSMCI_CMDR)
Value | Description |
---|---|
0 | No error. |
1 | A CRC7 error has been detected in the response. |
Response End Bit Error (cleared by writing in HSMCI_CMDR)
Value | Description |
---|---|
0 | No error. |
1 | The end bit of the response has not been detected. |
Response Time-out Error (cleared by writing in HSMCI_CMDR)
Value | Description |
---|---|
0 | No error. |
1 | The response time-out set by MAXLAT in the HSMCI_CMDR has been exceeded. |
Data CRC Error (cleared on read)
Value | Description |
---|---|
0 | No error. |
1 | A CRC16 error has been detected in the last data block. |
Data Time-out Error (cleared on read)
Value | Description |
---|---|
0 | No error. |
1 | The data time-out set by DTOCYC and DTOMUL in HSMCI_DTOR has been exceeded. |
Completion Signal Time-out Error (cleared on read)
Value | Description |
---|---|
0 | No error. |
1 | The completion signal time-out set by CSTOCYC and CSTOMUL in HSMCI_CSTOR has been exceeded. |
DMA Block Overrun Error (cleared on read)
Value | Description |
---|---|
0 | No error. |
1 | A new block of data is received and the DMA controller has not started to move the current pending block, a block overrun is raised. |
FIFO empty flag
Value | Description |
---|---|
0 | FIFO contains at least one byte. |
1 | FIFO is empty. |
Transfer Done flag
Value | Description |
---|---|
0 | A transfer is in progress. |
1 | Command Register is ready to operate and the data bus is in the idle state. |
Boot Operation Acknowledge Received (cleared on read)
Value | Description |
---|---|
0 | No Boot acknowledge received since the last read of the HSMCI_SR. |
1 | A Boot acknowledge signal has been received since the last read of HSMCI_SR. |
Boot Operation Acknowledge Error (cleared on read)
Value | Description |
---|---|
0 | No boot operation error since the last read of HSMCI_SR |
1 | Corrupted Boot Acknowledge signal received since the last read of HSMCI_SR. |
Overrun (if FERRCTRL = 1, cleared by writing in HSMCI_CMDR or cleared on read if FERRCTRL = 0)
If FERRCTRL = 1 in HSMCI_CFG, OVRE is cleared on read.
If FERRCTRL = 0 in HSMCI_CFG, OVRE is cleared by writing HSMCI_CMDR.
Value | Description |
---|---|
0 | No error. |
1 | At least one 8-bit received data has been lost (not read). |
Underrun (if FERRCTRL = 1, cleared by writing in HSMCI_CMDR or cleared on read if FERRCTRL = 0)
If FERRCTRL = 1 in HSMCI_CFG, OVRE is cleared on read.
If FERRCTRL = 0 in HSMCI_CFG, OVRE is cleared by writing HSMCI_CMDR.
Value | Description |
---|---|
0 | No error. |
1 | At least one 8-bit data has been sent without valid information (not written). |