色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > STM32F407之SD卡讀數據介紹

STM32F407之SD卡讀數據介紹 時間:2019-07-09      來源:長沙中心,劉老師

1,SD卡基礎知識

SD卡(Secure Digital Memory Card)即:安全數字存儲卡,它是在MMC的基礎上發展而來,作為存儲器件廣泛應用于電子產品中。

1.1  SD卡有SDIO和SPI兩種傳輸方式,具體信號定義如下:

其中紅色選中的信號是必需的。

1.2   SD卡的內部結構

1.3  SD中的兩個重要概念: Sector與Block

Sector:  A number of blocks, basic erase unit (SD擦除單位)

可以設置為N*block。

Block :   A number of bytes, basic data transfer unit (SD中最小的讀寫單位)。

block length 可以被 SET_BLOCKLEN (CMD16)設置 。

1.4 SD 常用命令

Class0 :(卡的識別、初始化等基本命令集)

CMD0:復位SD 卡.

CMD1:讀OCR寄存器.

CMD9:讀CSD寄存器.

CMD10:讀CID寄存器.

CMD12:停止讀多塊時的數據傳輸

CMD13:讀 Card_Status 寄存器

Class2 (讀卡命令集):

CMD16:設置塊的長度

CMD17:讀單塊.

CMD18:讀多塊,直至主機發送CMD12為止 . 

Class4(寫卡命令集) :

CMD24:寫單塊.

CMD25:寫多塊.

CMD27:寫CSD寄存器 .

Class5 (擦除卡命令集):

CMD32:設置擦除塊的起始地址.

CMD33:設置擦除塊的終止地址.

CMD38: 擦除所選擇的塊.

2,STM32讀取SD流程

STM32的SDIO接口提供 APB2 外設總線與多媒體卡 (MMC)、SD 卡、SDIO 卡以及 CE-ATA 設備之間的接口。

2.1 時鐘

三個時鐘信號:卡時鐘SDIO_CK(傳輸速率0-25MHZ)、SDIO適配器時鐘SDIOCLK(用于驅動適配器來產生卡時鐘,與所掛載的總線時鐘相同)、總線時鐘PCLK2(F1為HCLK2)

   SDIO_CK計算公式:SDIO_CK=SDIOCLK/(2+CLKp)   CLKp為可配置的分頻系數,在初始化時不可以超過400khz ,初始化完成后可全速運行。

2.2 操作流程

A, 初始化相關 GPIO 及 SDIO 外設;

B, 配置 SDIO 基本通信環境進入卡識別模式,通過幾個命令處理后得到卡類型;

C,  如果是可用卡就進入數據傳輸模式,接下來就可以進行讀、寫、擦除的操作。

2.3  SD 卡初始化

SD 卡初始化過程主要是卡識別和相關 SD 卡狀態獲取。整個初始化函數流程如下:

具體執行流程如下:

(1) 配置 NVIC,SD 卡通信用到 SDIO 中斷,如果用到 DMA 傳輸還需要配置 DMA 中 斷。注意中斷服務函數不是定義在 stm32f4xx_it.c 文件的,是直接定義在 bsp_sdio_sd.c 文件中,中斷服務函數定義在個文件問題都不大,只要定義正確就 可以的,編譯器會自動尋找。 

(2) 執行 SD_LowLevel_Init 函數,其功能是對底層 SDIO 引腳進行初始化以及開啟相 關時鐘,該函數在之前已經講解。

(3) SDIO_DeInit 函數用于解除初始化 SDIO 接口,它只是簡單調用 SD_LowLevel_DeInit 函數。而 SD_LowLevel_DeInit 函數是與 SD_LowLevel_Init 函數相反功能,關閉相關時鐘,關閉 SDIO 電源,讓 SDIO 接近上電復位狀態。 恢復復位狀態后再進行相關配置,可以防止部分沒有配置的參數采用非默認值而 導致錯誤,這是 ST 官方驅動常用的一種初始化方式。 

(4) 調用 SD_PowerON 函數,它用于查詢卡的工作電壓和時鐘控制配置,并返回 SD_Error 類型錯誤。

2.4 SD卡讀操作

從 SD 卡讀取數據可分為單塊讀取和多塊讀取。這里介紹單塊讀操作流程。

SD_ReadBlock 函數執行流程如下: 

(1) 將 SDIO 外設的數據控制寄存器 (SDIO_DCTRL)清理,復位之前的傳輸設置。 

(2) 調用 SDIO_ITConfig 函數使能相關中斷,包括數據 CRC 失敗中斷、數據超時中斷、數 據結束中斷等等。然后調用 SD_LowLevel_DMA_RxConfig 函數,配置使能 SDIO 從 SD 卡的讀取數據的 DMA 請求。為使 SDIO 發送 DMA 請求,需要調用 SDIO_DMACmd 函數使能。對于高容量的 SD 卡要求塊大小必 須為 512 字節,程序員有責任保證目標讀取地址與塊大小的字節對齊問題。 

(3) 對 SD 卡進行數據讀寫之前,都必須發送 CMD16 指定塊的大小,對于標準卡,讀取 BlockSize 長度字節的塊;對于 SDHC 卡,讀取 512 字節的塊。 

(4) 利用 SDIO_DataInitTypeDef 結構體類型變量配置數據傳輸的超時、塊數量、數據塊大 小、數據傳輸方向等參數并使用 SDIO_DataConfig 函數完成數據傳輸環境配置。 

(5) 最后控制器向 SD 卡發送單塊讀數據命令 CMD17,SD 卡在接收到命令后就會通過數據線把數據傳輸到控制器數據 FIFO 內,并自動生成 DMA 傳輸請求。

(6)SD_WaitReadOperation 函數用于等待數據讀取操作完成,只有在確保數據讀取完成了,我們就可以放心使用數據。

 


上一篇:STM32 keil開發環境搭建

下一篇:Java數據結構——線性表

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 疯狂做受XXXX高潮不断 | 99精品视屏 | 最近最好看的2018中文字幕 | 中文无码制服丝袜人妻AV | 国产路线1国产路线2022 | 国产freesexvideos性中国 | 无码男男肉片在线观看 | 成人艳情一二三区 | 国产午夜精品一区二区 | 新狼窝色AV性久久久久久 | 日韩69永久免费视频 | 网站黄色在线观看免费 | 章节把亲妺妺强h怀孕小说 夜夜揉揉日日人人青青 | 亚洲av无码乱码在线观看富二代 | 西西人体大胆午夜视频 | 两个人看的视频www 亚洲成a人片在线观看你懂的 | 少妇高潮灌满白浆毛片免费看 | 99久免费精品视频在线观看 | 少妇大战黑吊在线观看 | a级黑粗大硬长爽猛出猛进 91极品视频在线观看 | 精品香蕉99久久久久成人网站 | 四虎免费在线观看 | aV性色在线乱叫 | 色综合伊人丁香五月桃花婷婷 | 青椒国产97在线熟女 | 中文天堂最新版在线WWW | 爱情岛亚洲论坛成人网站 | 婷婷国产成人精品视频 | 好大好硬好爽免费视频 | av一本久道久久综合久久鬼色 | 嫩草影院在线播放 | 欧洲精品VA无码一区二区三区 | 日韩亚av无码一区二区三区 | 亚洲一区二区三区无码国产 | 最新国模无码国产在线视频 | 国产品无码一区二区三区在线 | 蜜桃av资源 | 国产一区二区三区怡红院 | 中文字幕二三区 | 内射少妇36P九色 | 色情无码WWW视频无码区 |