36.7.5 Transfer Mode Register

This register is used to control data transfers. The user shall set this register before issuing a command which transfers data (refer to bit DPSEL in CR), or before issuing a Resume command. The user must save the value of this register when the data transfer is suspended (as a result of a Suspend command) and restore it before issuing a Resume command. To prevent data loss, this register cannot be written while data transactions are in progress. Writes to this register are ignored when bit PSR.CMDINHD is '1'.

Table 36-1. Determining the Transfer Type
MSBSELBCENBCR.BCNT Function
0Don’t careDon’t careSingle Transfer
10Don’t careInfinite Transfer
11Not ZeroMultiple Transfer
11ZeroStop Multiple Transfer
Name: TMR
Offset: 0x0C
Reset: 0x0000
Property: -

Bit 15141312111098 
          
Access  
Reset  
Bit 76543210 
   MSBSELDTDSELACMDEN[1:0]BCENDMAEN 
Access R/WR/WR/WR/WR/WR/W 
Reset 000000 

Bit 5 – MSBSEL Multi/Single Block Selection

Write this bit to '1' when issuing multiple-block transfer commands using DAT line(s). For any other commands, write this bit to 0. If this bit is 0, it is not necessary to write BCR to '1' (refer to Table 1-4).

Bit 4 – DTDSEL Data Transfer Direction Selection

This bit defines the direction of the DAT lines data transfers. Write this bit to '1' to transfer data from the device (SD Card/SDIO/e.MMC) to the peripheral. Write this bit to '0' for all other commands.

ValueNameDescription
0WRITEWrites data from the peripheral to the device.
1READReads data from the device to the peripheral.

Bits 3:2 – ACMDEN[1:0] Auto Command Enable

Two methods can be used to stop Multiple-block read and write operation:
  1. Auto CMD12: when the ACMDEN field is set to 1, the peripheral issues CMD12 automatically when the last block transfer is completed. An Auto CMD12 error is indicated to ACESR. Auto CMD12 is not enabled if the command does not require CMD12.
  2. Auto CMD23: when the ACMDEN field is set to 2, the peripheral issues a CMD23 automatically before issuing a command specified in CR.
The following conditions are required to use Auto CMD23:
  • A memory card that supports CMD23 (SCR[33] = 1)
  • If DMA is used, it must be ADMA (SDMA not supported).
  • Only CMD18 or CMD25 is issued.
Note: The peripheral does not check the command index.

Auto CMD23 can be used with or without ADMA. By writing CR, the peripheral issues a CMD23 first and then issues a command specified by the CR.CMDIDX field. If CMD23 response errors are detected, the second command is not issued. A CMD23 error is indicated in ACESR. The CMD23 argument (32-bit block count value) is defined in SSAR.

This field determines the use of auto command functions.

ValueNameDescription
0DISABLED

Auto Command Disabled

1CMD12

Auto CMD12 Enabled

2CMD23

Auto CMD23 Enabled

3Reserved

Reserved

Bit 1 – BCEN Block Count Enable

This bit is used to enable BCR, which is only relevant for multiple block transfers. When this bit is 0, BCR is disabled, which is useful when executing an infinite transfer (refer to Table 1-4). If an ADMA2 transfer is more than 65535 blocks, this bit is set to 0 and the data transfer length is designated by the Descriptor Table.

ValueNameDescription
0DISABLEBlock count is disabled
1ENABLEBlock count is enabled

Bit 0 – DMAEN DMA Enable

This bit enables the DMA functionality described in section “Supporting DMA” in “SD Host Controller Simplified Specification V3.00” . DMA can be enabled only if it is supported as indicated by the bit CA0R.ADMA2SUP. One of the DMA modes can be selected using the field HC1R.DMASEL. If DMA is not supported, this bit is meaningless and then always reads 0. When this bit is set to 1, a DMA operation begins when the user writes to the upper byte of CR.

ValueNameDescription
0DISABLEDMA functionality is disabled
1ENABLEDMA functionality is enabled