====== SD Host Controller ======
{{template>:meta:template:pageinfo#tpl
|desc=Introduce the SD host controller (SDHC) specified in SD specification.}}
SDHC is the __standard__ controller specified by
[[https://www.sdcard.org/developers/sd-standard-overview/host-controllers/|SD Association]]
to manage SD Cards (SD Memory and SDIO).
SDHC has been extended in connection with the Physical Layer functions extension.
Major improvement aimed increase of data transfer rate by supporting __higher SD
bus speed modes__ and improvement of __Direct Memory Access (DMA)__.
* SD Host Ver.2 supported **ADMA2** that can handle scattered paging data in system memory (scatter gather DMA).
* SD Host Ver.3 supported **UHS-I** bus modes.
* SD Host Ver.4 supported **UHS-II** bus modes, **ADMA3** ((note:>ADMA3 can execute __multiple of ADMA2 data transfers__ without intervention of Host Driver by Descriptor programing.
)) and **64-bit** system memory addressing.
===== Features List =====
^ Feature |^ Version |||||
^ Description ^ Key Component ^ 2.00 ^ 3.00 ^ 4.00 ^ 4.10 ^ 4.20 ^
| ADMA2 16-bit Data Length | ADMA2 descriptor | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| ADMA2 26-bit Data Length | ADMA2 descriptor | - | - | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| Re-define SDMA_R to 32-bit Block Count | SDMA_R ''000h'' | - | - | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| PLL control | Clock Control ''02Ch'' | - | - | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| 10-bit divided clock mode | Clock Control ''02Ch'' | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| Programmable clock mode | Clock Control ''02Ch'' | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| Clock generator select (__Programmable clock mode__ / __Divided clock mode__) | Clock Control ''02Ch'' | - | {{fa>check-circle?color=green}} | - | - | - |
| Auto CMD12 | Transfer Mode ''00Ch'' | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| [[#auto_cmd23|Auto CMD23]] | Transfer Mode ''00Ch'' | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| Auto CMD auto select | Transfer Mode ''00Ch'' | - | - | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
| Response error check | Transfer Mode ''00Ch [8:6]'' | - | - | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} | {{fa>check-circle?color=green}} |
==== Auto CMD23 ====
* 32-bit block count value for ''CMD23'' is set to SDMA. ((:sdhc420-p43))
{{template>meta:template:refnote#note}}
{{template>meta:template:refnote#ref}}
===== Further Reading =====
* //[[https://www.sdcard.org/developers/sd-standard-overview/host-controllers/]]//
* //[[https://www.sdcard.org/downloads/pls/]]//