日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

嵌入式系统作业12(SD卡读取)

發布時間:2024/8/1 windows 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 嵌入式系统作业12(SD卡读取) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

掌握 SD 卡協議原理,用 STM32F103 完成對 SD 卡的數據讀取(FAT文件模式)。

目錄

  • 一、SD 卡協議
    • 1. SD 卡
      • 概述
    • 2. SD 卡總線
      • 協議
      • 命令
      • 響應
    • 3.STM32 的 SDIO 功能
  • 二 、SD 卡的數據讀取(工程、代碼)
    • 1. 創建項目
    • 2.代碼文件
  • 三、SD卡數據讀取(電路,實現)
    • 1.電路連接
    • 2. 注意事項
    • 3.結果展示
  • 四、總結

一、SD 卡協議

1. SD 卡

SD存儲卡是一種基于半導體快閃記憶器的新一代記憶設備,由于它體積小、數據傳輸速度快、可熱插拔等優良的特性,被廣泛地于便攜式裝置上使用,例如數碼相機、平板電腦和多媒體播放器等。

概述

SD存儲卡(Secure Digital Memory Card)是一種基于半導體快閃存儲器的新一代高速存儲設備。SD存儲卡的技術是從MMC卡(MultiMedia Card格式上發展而來,在兼容SD存儲卡基礎上發展了SDIO(SD Input/ Output)卡,此兼容性包括機械,電子,電力,信號和軟件,通常將SD、SDIO卡俗稱SD存儲卡。
SD卡具有高記憶容量、快速數據傳輸率、極大的移動靈活性以及很好的安全性,它被廣泛地應用于便攜式裝置上,例如數碼相機、平板電腦和多媒體播放器等。
SD卡的結構能保證數字文件傳送的安全性,也很容易重新格式化,所以有著廣泛的應用領域。音樂、電影等多媒體文件都可以方便地保存到SD卡中。目前市場上SD卡的品牌很多諸如:SANDISK、Kingmax、Panasonic和Kingston。
SD卡作為一種新型的存儲設備,具有以下特點:
**●高存儲容量:**最常用的容量:8GB、16GB、32GB、128GB、256GB等。
**●內置加密技術:**適應基于SDMI協議的著作版權保護功能。
**●高速數據傳送:**最大讀寫速率為100MB/s。
**●體積輕小:**便于攜帶,具有很強的抗沖擊能力。

  • SDIO 全稱是安全數字輸入/輸出接口,多媒體卡(MMC)、SD 卡、SD I/O 卡都有 SDIO 接口。
  • STM32F10x 系列控制器有一個 SDIO 主機接口,它可以與 MMC 卡、SD 卡、SD I/O 卡以及CE-ATA 設備進行數據傳輸。MMC 卡可以說是 SD 卡的前身,現階段已經用得很少。
  • SD I/O 卡本身不是用于存儲的卡,它是指利用 SDIO 傳輸協議的一種外設。比如 Wi-Fi Card,它主要是提供 Wi-Fi 功能,有些 Wi-Fi 模塊是使用串口或者 SPI 接口進行通信的,但 Wi-Fi SDIO Card 是使用 SDIO 接口進行通信的。并且一般設計 SD I/O 卡是可以插入到 SD 的插槽。
  • CE-ATA 是專為輕薄筆記本硬盤設計的硬盤高速通訊接口。

2. SD 卡總線

SD 卡一般都支持 SDIO 和 SPI 這兩種接口。
STM32F42x 系列控制器的 SDIO 是不支持 SPI 通信模式的,如果需要用到 SPI 通信只能使用 SPI 外設。
具體的 SPI 通信方式可以參看我之前的博客:基于 SPI 協議用 0.96 寸 OLED 顯示漢字及溫濕度數據
SD 卡使用 9-pin 接口通信,其中 3 根電源線、1 根時鐘線、1 根命令線和 4 根數據線。

SDIO 的通信時序要簡單許多,SDIO 不管是從主機控制器向 SD 卡傳輸,還是 SD 卡向主機控制器傳輸都只以 CLK 時鐘線的上升沿為有效。

協議

通訊由一個起始位(“0”),由一個停止位(“1”)終止。SD 通信一般是主機發送一個命令(Command),從設備在接收到命令后作出響應(Response),如有需要會有數據(Data)傳輸參與。
SD 總線的基本交互是命令與響應交互。
SD 數據是以塊(Black)形式傳輸的,SDHC 卡數據塊長度一般為 512 字節,數據可以從主機到卡,也可以是從卡到主機。數據塊需要 CRC 位來保證數據傳輸成功。CRC 位由 SD 卡系統硬件生成。STM32 控制器可以控制使用單線或 4 線傳輸。
主機向 SD 卡寫入數據塊操作示意如下:

命令

SD 命令由***主機***發出,以廣播命令和尋址命令為例,廣播命令是針對與 SD 主機總線連接的所有從設備發送的,尋址命令是指定某個地址設備進行命令傳輸。
SD 命令格式固定為 48bit,都是通過 CMD 線連續傳輸的(數據線不參與)

響應

響應由*** SD 卡向主機***發出,部分命令要求 SD 卡作出響應,這些響應多用于反饋 SD 卡的狀態。
SDIO 總共有 7 個響應類型(代號:R1~R7),其中 SD 卡沒有 R4、R5 類型響應。特定的命令對應有特定的響應類型,比如當主機發送 CMD3 命令時,可以得到響應 R6。與命令一樣,SD 卡的響應也是通過 CMD 線連續傳輸的。根據響應內容大小可以分為短響應和長響應。短響應是 48bit 長度,只有 R2 類型是長響應,其長度為 136bit。

3.STM32 的 SDIO 功能

STM32 控制器有一個 SDIO,由兩部分組成:SDIO 適配器和 AHB 接口。

  • SDIO 適配器提供 SDIO 主機功能,可以提供 SD 時鐘、發送命令和進行數據傳輸。
  • AHB 接口用于控制器訪問 SDIO 適配器寄存器并且可以產生中斷和 DMA 請求信號

二 、SD 卡的數據讀取(工程、代碼)

1. 創建項目

其實直接打開壓縮文件的工程,然后生成代碼就行了
(下面還是加了幾張工程截圖)




配置 PA4 引腳為 GPIO_Output,并命名為 SD_CS

2.代碼文件

代碼網盤鏈接
**提取碼:e63q **

修改main.c 中 while循環

while (1){WritetoSD(WriteBuffer,sizeof(WriteBuffer)); HAL_Delay(500);/*WriteBuffer[0] = WriteBuffer[0] +10;WriteBuffer[1] = WriteBuffer[1] +10;*/write_cnt ++;while(write_cnt > 0){ printf(" while \r\n");HAL_Delay(500);}

三、SD卡數據讀取(電路,實現)

1.電路連接

STM32F103C8T6SD卡
PA4CS
PA5SCK
PA6MISO
PA7MOSI

按如圖所示找到對應引腳進行連接

2. 注意事項

在讀卡前先格式化一下選擇FAT模式

不要在運行過程中拔卡
否者會失敗

  • 注意:
    SD 卡操作需要時間,得等一會,如果串口一直沒有回應,可以試試以下操作:
    可以將SD卡換成內存小點的 4G/8G
    將最小核心板連接 5V,為其供給高電壓
    盡量減少連線,或者使用短線連接

3.結果展示

編譯燒錄后,打開串口調試助手,可以看到:

然后會顯示while

此時將SD卡從芯片中拔出,插入U盤,在電腦中可以看見有一個txt文件,打開可以看見。

四、總結

這次實驗不是很好做,雖然能夠成功燒錄,但是實驗效果不容易出來,串口調試助手一直沒顯示,多嘗試一下,看看有沒有線沒有連穩,或者芯片接觸 不良。有時候是串口反應較慢,耐心等待一會或許會有結果讀出。

總結

以上是生活随笔為你收集整理的嵌入式系统作业12(SD卡读取)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。