分享到plurk 分享到twitter 分享到facebook

版本 e307b50a6dafff1c6985bda3e1aa171916e1a341

Secure digital input/output interface (SDIO)

Introduction

What is SDIO?

  • A SDIO (Secure Digital Input Output) card is an extension of the SD specification to cover I/O functions.
  • Host devices that support SDIO can use the SD slot to support:
    1. GPS receivers.
    2. digital cameras.
    3. RFID readers.
    4. FM radio tuners.
    5. TV tuners.
    6. Wi-Fi.
    7. Bluetooth.

Many other SDIO devices have been proposed, but it is now more common for I/O devices to connect using the USB interface. - SDIO cards support most of the memory commands of SD cards. SDIO cards can be structured as 8 logical cards, although currently, the typical way that an SDIO card uses this capability is to structure itself as one I/O card and one memory card.

.. image:: /sdio1.png .. image:: /sdio2.png

Difference of SD/MMC/SDIO

Speed class rating

SDIO bus topology

.. image:: /Selection_015.png .. image:: /Selection_016.png Note: The SDIO will not send any data as long as the Busy signal is asserted (SDIO_D0 pulled low).

.. image:: /Selection_017.png .. image:: /Selection_018.png .. image:: /Selection_019.png

SDIO functional description

.. image:: /sdio_functional_description.png

圖說明:

  • SDIO_D0預設是用來當作資料傳輸 , 而在初始化時 , host端可以設定其資料寬度。
  • 當MMC連至bus時 , MMC可以支援只有1bit模式。
  • 當SD/SD I/O連至bus時,data transfer可以由host端來設定是SDIO_D0(1bit mode) 或者是 SDIO_D3:0 而所有的data lines都是操作於push-pull mode.

SDIO_CMD has two operational modes:

  • Open-drain for initialization (only for MMCV3.31 or previous)

  • Push-pull for command transfer (SD/SD I/O card MMC4.2 use push-pull drivers also for initialization)

SDIO_CK is the clock to the card:

  • 在clock cycle 中 , 1 bit是用來切換command 或是 data lines.
  • clock的頻率依照規格不同有所不同:
    • between 0 and 20 MHz (for a MultiMediaCard V3.31).
    • between 0 and 48 MHz for a MultiMediaCard V4.0/4.2).
    • between 0 and 25 MHz (for an SD/SD I/O card).
  • The SDIO uses two clock signals:
    • SDIO adapter clock(SDIOCLK = 48MHz is coming from a specific output of PLL (PLL48CLK) ).
    • APB2 bus clock(PCLK2). NOTE: PCLK2 與 SDIO_CLK 之clock頻率必須遵循以下條件: Frequency PCLK2 ≥ (3/8) * Frequency SDIO_CK ?????????????????

The signals shown in Table 149 are used on the MultiMediaCard/SD/SD I/O card bus

.. image:: /SDIO_IO_definitions.png

SDIO adapter

block diagram of an SDIO adapter.

.. image:: /sdio_adapter.png

上圖中包含了五個子單元:

  • Adapter register block
  • Control unit
  • Command path
  • Data path
  • Data FIFO

由圖中可以看出 , adapter registers 和 FIFO都是採用APB2 bus clock domain (PCLK2), 而control unit , command path , data path 則是採用SDIO adapter clock domain(SDIOCLK).

Q&A : WHY??????????????????????????????????????????????????????

上圖中之左側部份(Adapter registers and FIFO): Adapter registers 主要包含了所有SDIO的暫存器 , 而這些暫存器是用來配置一些參數,以用來實現SD協定中的時序,最終目的是用來實現SD卡的命令傳輸。 而FIFO則是為了實現與data path的傳輸 , 而這兩個分別代表著對SD卡的兩種操作模式 , 一個是命令的傳輸 , 一個是資料的傳輸。

上圖中之右側 主要分為三個子單元 , Control Unit , Command Path and Data Path , Control Unit主要用來控制電源以及時鐘的控制 , 而這些控制是根據Adapter registers當中的暫存器來做配置 , 而Command Path連結SDIO_CMD , 他用來控制命令的傳輸 , 最後Data Path則是連結SDIO_D[7:0],控制資料的傳輸。

底下分單元描述 - Adapter register block:

  The adapter register block contains all system registers. This block also generates the 
  signals that clear the static flags in the multimedia card. The clear signals are generated  
  when 1 is written into the corresponding bit location in the SDIO Clear register.
  • Control Unit:

    這部份又在其內部分為兩個子單元 , 一個是Power management , 另一個是Clock management , 其兩個子單元都受控制於Adapter registers.
    
    詳見下圖(Figure 328)

.. image:: /control_unit.png

  Power management:

     There are three power phases:

     * power-off

     * power-up

     * power-on

       NOTE!! The power management subunit disables the card bus output signals during the 
       power-off and power-up phases.


  Clock management:
     用來產生和控制SDIO_CK , 而其SDIO_CK又可選擇兩種模式: 

     * clock Divide (SDIO_CK = SDIO_CLK/div .)  

     * clock Bypass (SDIO_CK = SDIO_CLK).

     而在底下的情況下 , Clock是不輸出訊號的

     * after reset

     * during the power-off or power-up phases

     * if the power saving mode is enabled and the card bus is in the Idle state (eight clock 
       periods after both the command and data path subunits enter the Idle phase).

Reference

  • Secure Digital wiki<http://en.wikipedia.org/wiki/Secure_Digital#SDIO>_
  • SDIO接口介绍<http://en.wikipedia.org/wiki/Secure_Digital#SDIO>_
  • Linux(open source)的 SD/MMC/SDIO 支援現況概要<http://www.jollen.org/blog/2007/01/open_source_sd_mmc_sdio.html>_
  • SD/MMC/SDIO概念區分<http://bbs.ednchina.com/BLOG_ARTICLE_198217.HTM>_
  • STM32 控制 SD 卡<http://www.360doc.com/content/12/0411/15/9707346_202767012.shtml>_
  • STM32 + SDIO + FATFS 文件系统 直讀 SD 卡<http://ntn314.blog.163.com/blog/static/16174358420112263456948/>_
  • 零死角玩轉 stm32 - 高級篇之 SDIO(4bit + DMA、支持SDHC、帶協議分析)<http://www.eeboard.com/tutorials/%E9%9B%B6%E6%AD%BB%E8%A7%92%E7%8E%A9%E8%BD%ACstm32-%E9%AB%98%E7%BA%A7%E7%AF%87%E4%B9%8Bsdio%EF%BC%884bit-dma%E3%80%81%E6%94%AF%E6%8C%81sdhc%E3%80%81%E5%B8%A6%E5%8D%8F%E8%AE%AE%E5%88%86%E6%9E%90/>_