www.ti.com
Procedures for Common Operations
3.6MMC/SD Mode Multiple-Block Write Operation Using CPU
To perform a
Note: The procedure in this section uses a STOP_TRANSMISSION command to end the block transfer. This assumes that the value in the MMC number of blocks counter register (MMCNBLK) is 0. A
The procedure for this operation is:
1.Write the card’s relative address to the MMC argument registers (MMCARGH and MMCARGL). Load the high part of the address to MMCARGH and the low part of the address to MMCARGL.
2.Read card CSD to determine the card'smaximum block length.
3.Use the MMC command register (MMCCMD) to send the SET_BLOCKLEN command (if the block length is different than the length used in the previous operation). The block length must be a multiple of 512 bytes and less then the maximum block length specified in the CSD.
4.Reset the FIFO (FIFORST bit in MMCFIFOCTL).
5.Set the FIFO direction to transmit (FIFODIR bit in MMCFIFOCTL).
6.Set the access width (ACCWD bits in MMCFIFOCTL).
7.Set the FIFO threshold (FIFOLEV bit in MMCFIFOCTL).
8.Enable the MMC interrupt.
9.Enable DXRDYINT interrupt.
10.Write the first 32 bytes of the data block to the MMC data transmit register (MMCDXR).
11.Use MMCCMD to send the WRITE_MULTI_BLOCK command to the card.
12.Wait for MMC interrupt.
13.Use the MMC status register 0 (MMCST0) to check for errors and to determine the status of the FIFO. If more bytes are to be written and the FIFO is not full, go to step 14. If the all of the data has been written, go to step 15.
14.Write the next n bytes (depends on setting of FIFOLEV in MMCFIFOCTL: 0 = 16 bytes, 1 = 32 bytes) of the data block to MMCDXR, and go to step 12.
15.Use MMCCMD to send the STOP_TRANSMISSION command.
The sequence of events in this operation is shown in Figure 16.
36 | Multimedia Card (MMC)/Secure Digital (SD) Card Controller | SPRUE30B |