在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32入門學(xué)習(xí)筆記之SD卡基礎(chǔ)讀寫實(shí)驗(yàn)1

jf_78858299 ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 15:09 ? 次閱讀

20.1 概述

SD卡是嵌入式系統(tǒng)中最常見的存儲器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動,尺寸可供選擇,能滿足不同應(yīng)用的要求。STM32F1系列自帶了標(biāo)準(zhǔn)的4位SDIO接口,最高通信速度可達(dá)24MHz,最高每秒能傳輸12M字節(jié)的數(shù)據(jù)。

20.1.1 SDIO框圖

STM32F1的SDIO控制器包括2部分,SDIO適配器模塊和AHB總線接口,功能框圖如下圖所示。

圖片

其中SDIO適配器模塊主要用于實(shí)現(xiàn)所有MMC/SD卡的相關(guān)功能,如時鐘的產(chǎn)生,命令和數(shù)據(jù)的傳輸,AHB總線接口則用于操作SDIO適配器模塊中的寄存器并產(chǎn)生中斷和DMA請求信號。復(fù)位后默認(rèn)情況下SDIO_D0用于數(shù)據(jù)傳輸。初始化后主機(jī)可以改變數(shù)據(jù)總線的寬度。

如果一個多媒體卡接到了總線上,則SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于數(shù)據(jù)傳輸。MMC版本V3.31和之前版本的協(xié)議只支持1位數(shù)據(jù)線,所以只能用SDIO_D0(為了通用性考慮,在程序里面我們只要檢測到是MMC卡就設(shè)置為1位總線數(shù)據(jù))。

如果一個SD卡接到了總線上,可以通過主機(jī)配置數(shù)據(jù)傳輸使用SDIO_D0或SDIO_D[3:0]。所有的數(shù)據(jù)線都工作在推挽模式。

SDIO_CMD有兩種操作模式:

(1)用于初始化時的開路模式(僅用于MMC版本V3.31或之前版本)

(2)用于命令傳輸?shù)耐仆炷J剑⊿D卡和MMCV4.2在初始化時也使用推挽驅(qū)動)

20.1.2 SDIO時鐘

從SDIO框圖我們可以看到SDIO總共有3個時鐘,分別是:

(1)卡時鐘SDIO_CK:每個時鐘周期在命令和數(shù)據(jù)線上傳輸1位命令或數(shù)據(jù)。對于多媒體卡V3.31協(xié)議,時鐘頻率可以在0MHz至20MHz間變化;對于多媒體卡V4.0/4.2協(xié)議,時鐘頻率可以在0MHz至48MHz間變化;對于SD卡,時鐘頻率可以在0MHz至25MHz間變化。

(2)SDIO適配器時鐘SDIOCLK:該時鐘用于驅(qū)動SDIO適配器,其頻率等于AHB總線頻率HCLK,并用于產(chǎn)生SDIO_CK時鐘

(3)AHB總線接口時鐘HCLK/2:該時鐘用于驅(qū)動SDIO的AHB總線接口,其頻率為HCLK/2。

我們的SD卡時鐘SDIO_CK,根據(jù)卡的不同,可能有好幾個區(qū)間,這就涉及到時鐘頻率的設(shè)置,SDIO_CK與SDIOCLK的關(guān)系為:

SDIO_CK=SDIOCLK/(2+CLKDIV)

其中,SDIOCLK為HCLK,一般是72MHz,而CLKDIV則是分配系數(shù),可以通過SDIO的SDIO_CLKCR寄存器進(jìn)行設(shè)置,確保SDIO_CK不超過卡的最大操作頻率。

注:在SD卡剛剛初始化的時候,其時鐘頻率SDIO_CK不能超過400KHz,否則可能無法完成初始化。在初始化以后,就可以設(shè)置時鐘頻率到最大了,但不可超過SD卡的最大操作時鐘頻率。

20.1.3 SDIO的命令與響應(yīng)

SDIO的命令分為應(yīng)用相關(guān)命令ACMD和通用命令CMD兩部分,應(yīng)用相關(guān)命令A(yù)CMD的發(fā)送,必須先發(fā)送通用命令CMD55,然后才能發(fā)送應(yīng)用相關(guān)命令A(yù)CMD。SDIO的所有命令和響應(yīng)都是通過SDIO_CMD引腳傳輸?shù)模魏蚊畹拈L度都是固定為48位,SDIO的命令格式如下表所示。

Bit位 寬度 說明
47 1 0 起始位
46 1 1 傳輸位
45:40 6 - 命令索引
39:8 32 - 參數(shù)
7:1 7 - CRC7
0 1 1 結(jié)束位

所有的命令都是由STM32F1發(fā)出,其中開始位、傳輸位、CRC7和結(jié)束位由SDIO硬件控制,我們需要設(shè)置的就只有命令索引和參數(shù)部分。其中命令索引在SDIO_CMD寄存器里面設(shè)置,命令參數(shù)則由寄存器SDIO_ARG設(shè)置。一般情況下,選中的SD卡在接收到命令之后,都會回復(fù)一個應(yīng)答(但是CMD0無應(yīng)答),這個應(yīng)答我們稱之為響應(yīng),響應(yīng)也是在CMD線上串行傳輸?shù)摹TM32F1的SDIO控制器支持2種響應(yīng)類型,48位的短響應(yīng)和136位的長響應(yīng),這兩種響應(yīng)類型都帶CRC錯誤檢測,不帶CRC的響應(yīng)應(yīng)該忽略CRC錯誤標(biāo)志,如CMD1的響應(yīng)。

短響應(yīng)的格式如下表所示。

Bit位 寬度 說明
47 1 0 起始位
46 1 0 傳輸位
45:40 6 - 命令索引
39:8 32 - 參數(shù)
7:1 7 - CRC7或者1111111
0 1 1 結(jié)束位

長響應(yīng)的格式如下表所示。

Bit位 寬度 說明
135 1 0 起始位
134 1 0 傳輸位
133:128 6 111111 保留
127:1 127 - CID或CSD(包括內(nèi)部CRC7)
0 1 1 結(jié)束位

硬件為我們?yōu)V除了開始位、傳輸位、CRC7以及結(jié)束位等信息,對于短響應(yīng),命令索引存放在SDIO_RESPCMD寄存器,參數(shù)則存放在SDIO_RESP1寄存器里面。對于長響應(yīng),則僅留CID/CSD位域,存放在SDIO_RESP1到SDIO_RESP4等4個寄存器。SD卡總共有5類響應(yīng)(R1、R2、R3、R6、R7),這里以R1為例簡單介紹一下。R1(普通響應(yīng)命令)響應(yīng)屬于短響應(yīng),其長度為48位,R1響應(yīng)的格式如下表所示。

Bit位 寬度 說明
47 1 0 起始位
46 1 1 傳輸位
45:40 6 X 命令索引
39:8 32 X 參數(shù)
7:1 7 X CRC7
0 1 1 結(jié)束位

在收到R1響應(yīng)后,我們可以從SDIO_RESPCMD寄存器和SDIO_RESP1寄存器分別讀出命令索引和卡狀態(tài)信息。

20.1.4 數(shù)據(jù)塊讀操作

對于SD卡,數(shù)據(jù)是以數(shù)據(jù)塊的形式傳輸?shù)模覀兂S玫目ň褪荢D卡,所以不考慮MMC形式的讀寫操作,因?yàn)镸MC卡數(shù)據(jù)以數(shù)據(jù)塊或者數(shù)據(jù)流的形式傳輸。

從機(jī)在收到主機(jī)相關(guān)命令后,開始發(fā)送數(shù)據(jù)塊給主機(jī),所有數(shù)據(jù)塊都帶有CRC校驗(yàn)值,CRC由SDIO硬件自動處理,單個數(shù)據(jù)塊讀的時候,在收到1個數(shù)據(jù)塊以后即可以停止了,不需要發(fā)送停止命令CMD12。但是多塊數(shù)據(jù)讀的時候,SD卡將一直發(fā)送數(shù)據(jù)給主機(jī),直到接到主機(jī)發(fā)送的STOP命令CMD12。

SDIO多數(shù)據(jù)塊的讀操作如下圖所示。

圖片

20.1.5 數(shù)據(jù)塊寫操作

數(shù)據(jù)塊寫操作同數(shù)據(jù)塊讀操作基本類似,只是數(shù)據(jù)塊寫的時候,多了一個忙判斷,新的數(shù)據(jù)塊必須在SD卡非忙的時候發(fā)送。這里的忙信號由SD卡拉低SDIO_D0,以表示忙,SDIO硬件自動控制,不需要我們軟件處理。

圖片

20.2 SDIO相關(guān)寄存器

20.2.1 SDIO電源控制寄存器:SDIO_POWER

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CTRL

Bit 1~Bit 0:電源控制位

00:電源關(guān)閉,卡的時鐘停止

01:保留

10:保留的上電狀態(tài)

11:上電狀態(tài),卡的時鐘開啟

20.2.2 SDIO時鐘控制寄存器:SDIO_CLKCR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- HWFC_EN NEGEDGE WIDBUS BYPASS PWRSAV CLKEN CLKDIV

Bit 14:硬件流控制使能

0:關(guān)閉硬件流控制

1:使能硬件流控制

Bit 13:SDIO_CK相位選擇位

0:在主時鐘SDIOCLK的上升沿產(chǎn)生SDIO_CK

1:在主時鐘SDIOCLK的下降沿產(chǎn)生SDIO_CK

Bit 12~Bit 11:寬總線模式使能位

00:默認(rèn)總線模式,使用SDIO_D0

01:4位總線模式,使用SDIO_D[3:0]

10:8位總線模式,使用SDIO_D[7:0]

Bit 10:旁路時鐘分頻器

0:關(guān)閉旁路:驅(qū)動SDIO_CK輸出信號之前,依據(jù)CLKDIV數(shù)值對SDIOCLK分頻

1:使能旁路:SDIOCLK直接驅(qū)動SDIO_CK輸出信號

Bit 9:省電配置位(為了省電,當(dāng)總線為空閑時,設(shè)置PWRSAV位可以關(guān)閉SDIO_CK時鐘輸出)

0:始終輸出SDIO_CK

1:僅在有總線活動時才輸出SDIO_CK

Bit 8:時鐘使能位

0:SDIO_CK關(guān)閉

1:SDIO_CK使能

Bit 7~Bit 0:時鐘分頻系數(shù)

這個域定義了輸入時鐘(SDIOCLK)與輸出時鐘(SDIO_CK)間的分頻系數(shù):SDIO_CK頻率=SDIOCLK/[CLKDIV+2]

20.2.3 SDIO參數(shù)寄存器:SDIO_ARG

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
CMDARG[31:16]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
CMDARG[16:0]

Bit 31~Bit 0:命令參數(shù)

屬于發(fā)送到卡中命令的一部分,如果一個命令包含一個參數(shù),必須在寫命令到命令寄存器之前加載這個寄存器

20.2.4 SDIO命令響應(yīng)寄存器:SDIO_RESPCMD

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- RESPCMD

Bit 5~Bit 0:響應(yīng)的命令索引

只讀位,包含最后收到的命令響應(yīng)中的命令索引

20.2.5 SDIO相應(yīng)寄存器組:SDIO_RESP1~SDIO_RESP4

寄存器 短響應(yīng) 長響應(yīng)
SDIO_RESP1 卡狀態(tài)[31:0] 卡狀態(tài)[127:96]
SDIO_RESP2 未使用 卡狀態(tài)[95:64]
SDIO_RESP3 未使用 卡狀態(tài)[31:0]
SDIO_RESP4 未使用 卡狀態(tài)[31:0]

注:總是先收到卡狀態(tài)的最高位,SDIO_RESP3寄存器的最低位始終為0。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6063

    文章

    44925

    瀏覽量

    647084
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7636

    瀏覽量

    166445
  • SD卡
    +關(guān)注

    關(guān)注

    2

    文章

    575

    瀏覽量

    65173
  • SDIO
    +關(guān)注

    關(guān)注

    2

    文章

    74

    瀏覽量

    19767
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    【紫光同創(chuàng)國產(chǎn)FPGA教程】【第八章】SD讀寫實(shí)驗(yàn)

    SD是現(xiàn)在嵌入式設(shè)備重要的存儲模塊,內(nèi)部集成了nand flash控制器,方便了主機(jī)的的管理。本實(shí)驗(yàn)主要是練習(xí)對sd的扇區(qū)進(jìn)行
    的頭像 發(fā)表于 02-05 11:35 ?8657次閱讀
    【紫光同創(chuàng)國產(chǎn)FPGA教程】【第八章】<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    【GD32F470紫藤派開發(fā)板使用手冊】第十二講 SDIO-SD讀寫實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SDIO操作原理 ?SD讀寫實(shí)現(xiàn)
    的頭像 發(fā)表于 05-18 09:36 ?1890次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊】第十二講 SDIO-<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    arduino學(xué)習(xí)筆記18 - SD讀寫實(shí)驗(yàn)

    本次實(shí)驗(yàn)使用arduino驅(qū)動SD,在SD中進(jìn)行文件讀寫。需要說明的是arduino的
    發(fā)表于 10-24 10:09

    接觸式IC讀寫實(shí)驗(yàn)

    接觸式IC讀寫實(shí)驗(yàn) 一. 實(shí)驗(yàn)目的了解接觸式IC 的知識,
    發(fā)表于 09-22 17:20 ?4957次閱讀
    接觸式IC<b class='flag-5'>卡</b><b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    STM32開發(fā)板_SD學(xué)習(xí)

    資料包括《SD讀寫規(guī)范》和《SD接口規(guī)范》以及《SD
    發(fā)表于 06-08 17:29 ?15次下載

    ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)06_SD讀寫

    ARM嵌入式應(yīng)用程序架構(gòu)設(shè)計(jì)實(shí)例精講--ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)06SD讀寫
    發(fā)表于 07-08 11:08 ?0次下載

    ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)_SD讀寫

    電子專業(yè)單片機(jī)相關(guān)知識學(xué)習(xí)教材資料——ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)06SD讀寫
    發(fā)表于 09-13 17:23 ?0次下載

    STM32CubeMX生成一個SD讀寫程序

    本文檔內(nèi)容介紹了一個STM32CubeMX生成一個SD讀寫程序,由于本程序是直接操作SD的物
    發(fā)表于 01-08 11:23 ?57次下載

    SD基礎(chǔ)讀寫實(shí)驗(yàn)詳解

    SD是嵌入式系統(tǒng)中最常見的存儲器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動,尺寸可供選擇,能滿足不同應(yīng)用的要求。STM32F1系列自帶了標(biāo)準(zhǔn)的4位SDIO接口,最高通信速度可達(dá)24MHz,最高每秒能傳輸12
    的頭像 發(fā)表于 01-31 18:01 ?3196次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>基礎(chǔ)<b class='flag-5'>讀寫實(shí)驗(yàn)</b>詳解

    STM32入門學(xué)習(xí)筆記SD基礎(chǔ)讀寫實(shí)驗(yàn)2

    SD是嵌入式系統(tǒng)中最常見的存儲器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動,尺寸可供選擇,能滿足不同應(yīng)用的要求。STM32F1系列自帶了標(biāo)準(zhǔn)的4位SDIO接口,最高通信速度可達(dá)24MHz,最高每秒能傳輸12
    的頭像 發(fā)表于 02-16 15:09 ?1384次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>入門</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之</b><b class='flag-5'>SD</b><b class='flag-5'>卡</b>基礎(chǔ)<b class='flag-5'>讀寫實(shí)驗(yàn)</b>2

    STM32入門學(xué)習(xí)筆記SD基礎(chǔ)讀寫實(shí)驗(yàn)3

    SD是嵌入式系統(tǒng)中最常見的存儲器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動,尺寸可供選擇,能滿足不同應(yīng)用的要求。STM32F1系列自帶了標(biāo)準(zhǔn)的4位SDIO接口,最高通信速度可達(dá)24MHz,最高每秒能傳輸12
    的頭像 發(fā)表于 02-16 15:09 ?1905次閱讀

    STM32入門學(xué)習(xí)筆記SD基礎(chǔ)讀寫實(shí)驗(yàn)4

    SD是嵌入式系統(tǒng)中最常見的存儲器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動,尺寸可供選擇,能滿足不同應(yīng)用的要求。STM32F1系列自帶了標(biāo)準(zhǔn)的4位SDIO接口,最高通信速度可達(dá)24MHz,最高每秒能傳輸12
    的頭像 發(fā)表于 02-16 15:09 ?1616次閱讀

    SD基礎(chǔ)讀寫實(shí)驗(yàn)

    SD是嵌入式系統(tǒng)中最常見的存儲器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動,尺寸可供選擇,能滿足不同應(yīng)用的要求。
    的頭像 發(fā)表于 03-01 14:46 ?1925次閱讀
    <b class='flag-5'>SD</b><b class='flag-5'>卡</b>基礎(chǔ)<b class='flag-5'>讀寫實(shí)驗(yàn)</b>

    淺談STM32SD

    STM32SD
    的頭像 發(fā)表于 10-19 18:28 ?2352次閱讀
    淺談<b class='flag-5'>STM32</b><b class='flag-5'>之</b><b class='flag-5'>SD</b><b class='flag-5'>卡</b>

    【GD32F303紅楓派開發(fā)板使用手冊】第二十三講 SDIO-SD讀寫實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SDIO操作原理 ?SD讀寫實(shí)現(xiàn)
    的頭像 發(fā)表于 06-23 10:49 ?1049次閱讀
    【GD32F303紅楓派開發(fā)板使用手冊】第二十三講 SDIO-<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>讀寫實(shí)驗(yàn)</b>
    主站蜘蛛池模板: 韩国免费特一级毛片 | 欧洲一级鲁丝片免费 | 一级毛片一片毛 | 插吧插吧综合网 | 色老头成人免费视频天天综合 | 人人干人人草 | 亚洲人在线 | 日本黄色短视频 | 日本加勒比高清一本大道 | 6080午夜 | 来啊mm影院亚洲mm影院 | 色久月| 色综合天天操 | 国产黄在线观看免费观看不卡 | 五月激情啪啪 | 久久久精品午夜免费不卡 | 爽好舒服快给老师 | 欧洲精品码一区二区三区免费看 | 免费欧美黄色 | 米奇777四色精品人人爽 | 丁香六月纪婷婷激情综合 | 亚洲成人三级电影 | 日韩三级观看 | 国产牛仔裤系列在线观看 | 五月四房婷婷 | 中文在线免费看影视 | 日韩一区二区三区在线 | 日本中文在线三级在线播放 | 天堂资源在线bt种子8 | 34pao强力打造免费永久视频 | 在线永久免费观看黄网站 | 久久女人网 | 国产网红主播精品福利大秀专区 | 一级做a爱片特黄在线观看免费看 | 四虎a456tncom | 黄在线网站 | 成人免费久久精品国产片久久影院 | 亚洲aaaa级特黄毛片 | 思思久99久女女精品 | 手机看片福利国产 | 亚洲三级黄色 |