40.8.5 SDHC_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 SDHC_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 SDHC_PSR.CMDINHD is '1'.

Table 40-5. Determining the Transfer Type
MSBSEL BCEN SDHC_BCR.BLKCNT Function
0 Don’t care Don’t care Single Transfer
1 0 Don’t care Infinite Transfer
1 1 Not Zero Multiple Transfer
1 1 Zero Stop Multiple Transfer
Table 40-6. Register Bit Attribute Legend
Symbol Description Symbol Description Symbol Description
R Readable bit HC Cleared by Hardware (Grey cell) Unimplemented
W Writable bit HS Set by Hardware X Bit is unknown at Reset
K Write to clear S Software settable bit
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 SDHC_BCR to '1'.

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
0 WRITE Writes data from the peripheral to the device.
1 READ Reads 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 SDHC_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 SDHC_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 SDHC_CR, the peripheral issues a CMD23 first and then issues a command specified by the SDHC_CR.CMDIDX field. If CMD23 response errors are detected, the second command is not issued. A CMD23 error is indicated in SDHC_ACESR. The CMD23 argument (32-bit block count value) is defined in SDHC_SSAR.

This field determines the use of auto command functions.

ValueNameDescription
0 DISABLED

Auto Command Disabled

1 CMD12

Auto CMD12 Enabled

2 CMD23

Auto CMD23 Enabled

3 Reserved

Reserved

Bit 1 – BCEN Block Count Enable

This bit is used to enable SDHC_BCR, which is only relevant for multiple block transfers. When this bit is 0, SDHC_BCR is disabled, which is useful when executing an infinite transfer . 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
0 DISABLED Block count is disabled
1 ENABLED Block 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 SDHC_CA0R.ADMA2SUP. One of the DMA modes can be selected using the field SDHC_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 SDHC_CR.

ValueNameDescription
0 DISABLED DMA functionality is disabled
1 ENABLED DMA functionality is enabled