一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

jf_78858299 ? 來(lái)源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 15:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

20.1 概述

SD卡是嵌入式系統(tǒng)中最常見的存儲(chǔ)器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動(dòng),尺寸可供選擇,能滿足不同應(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)功能,如時(shí)鐘的產(chǎn)生,命令和數(shù)據(jù)的傳輸,AHB總線接口則用于操作SDIO適配器模塊中的寄存器并產(chǎn)生中斷和DMA請(qǐng)求信號(hào)。復(fù)位后默認(rèn)情況下SDIO_D0用于數(shù)據(jù)傳輸。初始化后主機(jī)可以改變數(shù)據(jù)總線的寬度。

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

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

SDIO_CMD有兩種操作模式:

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

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

20.1.2 SDIO時(shí)鐘

從SDIO框圖我們可以看到SDIO總共有3個(gè)時(shí)鐘,分別是:

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

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

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

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

SDIO_CK=SDIOCLK/(2+CLKDIV)

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

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

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)都是通過(guò)SDIO_CMD引腳傳輸?shù)?,任何命令的長(zhǎng)度都是固定為48位,SDIO的命令格式如下表所示。

Bit位 寬度 說(shuō)明
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卡在接收到命令之后,都會(huì)回復(fù)一個(gè)應(yīng)答(但是CMD0無(wú)應(yīng)答),這個(gè)應(yīng)答我們稱之為響應(yīng),響應(yīng)也是在CMD線上串行傳輸?shù)?。STM32F1的SDIO控制器支持2種響應(yīng)類型,48位的短響應(yīng)和136位的長(zhǎng)響應(yīng),這兩種響應(yīng)類型都帶CRC錯(cuò)誤檢測(cè),不帶CRC的響應(yīng)應(yīng)該忽略CRC錯(cuò)誤標(biāo)志,如CMD1的響應(yīng)。

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

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

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

Bit位 寬度 說(shuō)明
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é)束位等信息,對(duì)于短響應(yīng),命令索引存放在SDIO_RESPCMD寄存器,參數(shù)則存放在SDIO_RESP1寄存器里面。對(duì)于長(zhǎng)響應(yīng),則僅留CID/CSD位域,存放在SDIO_RESP1到SDIO_RESP4等4個(gè)寄存器。SD卡總共有5類響應(yīng)(R1、R2、R3、R6、R7),這里以R1為例簡(jiǎn)單介紹一下。R1(普通響應(yīng)命令)響應(yīng)屬于短響應(yīng),其長(zhǎng)度為48位,R1響應(yīng)的格式如下表所示。

Bit位 寬度 說(shuō)明
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ù)塊讀操作

對(duì)于SD卡,數(shù)據(jù)是以數(shù)據(jù)塊的形式傳輸?shù)?,我們常用的卡就是SD卡,所以不考慮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硬件自動(dòng)處理,單個(gè)數(shù)據(jù)塊讀的時(shí)候,在收到1個(gè)數(shù)據(jù)塊以后即可以停止了,不需要發(fā)送停止命令CMD12。但是多塊數(shù)據(jù)讀的時(shí)候,SD卡將一直發(fā)送數(shù)據(jù)給主機(jī),直到接到主機(jī)發(fā)送的STOP命令CMD12。

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

圖片

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

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

圖片

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)閉,卡的時(shí)鐘停止

01:保留

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

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

20.2.2 SDIO時(shí)鐘控制寄存器: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:在主時(shí)鐘SDIOCLK的上升沿產(chǎn)生SDIO_CK

1:在主時(shí)鐘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:旁路時(shí)鐘分頻器

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

1:使能旁路:SDIOCLK直接驅(qū)動(dòng)SDIO_CK輸出信號(hào)

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

0:始終輸出SDIO_CK

1:僅在有總線活動(dòng)時(shí)才輸出SDIO_CK

Bit 8:時(shí)鐘使能位

0:SDIO_CK關(guān)閉

1:SDIO_CK使能

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

這個(gè)域定義了輸入時(shí)鐘(SDIOCLK)與輸出時(shí)鐘(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ā)送到卡中命令的一部分,如果一個(gè)命令包含一個(gè)參數(shù),必須在寫命令到命令寄存器之前加載這個(gè)寄存器

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) 長(zhǎ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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44969

    瀏覽量

    649181
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7644

    瀏覽量

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

    關(guān)注

    2

    文章

    578

    瀏覽量

    65470
  • SDIO
    +關(guān)注

    關(guān)注

    2

    文章

    76

    瀏覽量

    19855
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SDIO操作原理 ?SD讀寫實(shí)現(xiàn)
    的頭像 發(fā)表于 05-18 09:36 ?1966次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第十二講 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ū)動(dòng)SD,在SD中進(jìn)行文件讀寫。需要說(shuō)明的是arduino的
    發(fā)表于 10-24 10:09

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

    接觸式IC讀寫實(shí)驗(yàn) 一. 實(shí)驗(yàn)目的了解接觸式IC 的知識(shí),
    發(fā)表于 09-22 17:20 ?4991次閱讀
    接觸式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)知識(shí)學(xué)習(xí)教材資料——ARM基礎(chǔ)應(yīng)用實(shí)驗(yàn)06SD讀寫
    發(fā)表于 09-13 17:23 ?0次下載

    STM32CubeMX生成一個(gè)SD讀寫程序

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

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

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

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

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

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

    SD是嵌入式系統(tǒng)中最常見的存儲(chǔ)器,不僅容量可以做的很大,并且接口通用,支持SPI/SDIO驅(qū)動(dòng),尺寸可供選擇,能滿足不同應(yīng)用的要求。
    的頭像 發(fā)表于 03-01 14:46 ?2014次閱讀
    <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 ?2426次閱讀
    淺談<b class='flag-5'>STM32</b><b class='flag-5'>之</b><b class='flag-5'>SD</b><b class='flag-5'>卡</b>

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

    通過(guò)本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?SDIO操作原理 ?SD讀寫實(shí)現(xiàn)
    的頭像 發(fā)表于 06-23 10:49 ?1140次閱讀
    【GD32F303紅楓派開發(fā)板使用手冊(cè)】第二十三講 SDIO-<b class='flag-5'>SD</b><b class='flag-5'>卡</b><b class='flag-5'>讀寫實(shí)驗(yàn)</b>