99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

基于庫(kù)函數(shù)的SD卡硬件驅(qū)動(dòng)層代碼實(shí)現(xiàn)方案

嵌入式應(yīng)用開(kāi)發(fā) ? 來(lái)源:嵌入式應(yīng)用開(kāi)發(fā) ? 作者:嵌入式應(yīng)用開(kāi)發(fā) ? 2022-06-14 17:13 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式開(kāi)發(fā)中經(jīng)常會(huì)用到對(duì)外部SD卡進(jìn)行相關(guān)的讀寫操作。下圖是CPU硬件連接示意圖

poYBAGKoTYqAQogKAAKby66bF-c220.pngCPU硬件連接

引腳配置瑞如下:

void SD_LowLevel_DeInit(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  
  /*!< Disable SDIO Clock */
  SDIO_ClockCmd(DISABLE);

  /*!< Set Power State to OFF */
  SDIO_SetPowerState(SDIO_PowerState_OFF);

  /*!< DeInitializes the SDIO peripheral */
  SDIO_DeInit();

  /*!< Disable the SDIO AHB Clock */
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO, DISABLE);

  /*!< Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /*!< Configure PD.02 CMD line */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
}

DMA部分配置如下:

void SD_LowLevel_DMA_TxConfig(uint32_t *BufferSRC, uint32_t BufferSize)
{

  DMA_InitTypeDef DMA_InitStructure;

  DMA_ClearFlag(SD_SDIO_DMA_FLAG_TC | SD_SDIO_DMA_FLAG_TE | SD_SDIO_DMA_FLAG_HT | SD_SDIO_DMA_FLAG_GL);

  /*!< DMA2 Channel4 disable */
  DMA_Cmd(SD_SDIO_DMA_CHANNEL, DISABLE);

  /*!< SDIO DMA CHANNEL Config */
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SDIO_FIFO_ADDRESS;
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)BufferSRC;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_BufferSize = BufferSize / 4;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(SD_SDIO_DMA_CHANNEL, &DMA_InitStructure);

  DMA_ITConfig(SD_SDIO_DMA_CHANNEL, DMA_IT_TC, ENABLE);

  /*!< SDIO DMA CHANNEL enable */
  DMA_Cmd(SD_SDIO_DMA_CHANNEL, ENABLE);  
}



void SD_LowLevel_DMA_RxConfig(uint32_t *BufferDST, uint32_t BufferSize)
{
  DMA_InitTypeDef DMA_InitStructure;

  DMA_ClearFlag(SD_SDIO_DMA_FLAG_TC | SD_SDIO_DMA_FLAG_TE | SD_SDIO_DMA_FLAG_HT | SD_SDIO_DMA_FLAG_GL);

  /*!< SDIO DMA CHANNEL disable */
  DMA_Cmd(SD_SDIO_DMA_CHANNEL, DISABLE);

  /*!< SDIO DMA CHANNEL Config */
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SDIO_FIFO_ADDRESS;
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)BufferDST;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
  DMA_InitStructure.DMA_BufferSize = BufferSize / 4;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_Init(SD_SDIO_DMA_CHANNEL, &DMA_InitStructure);

  DMA_ITConfig(SD_SDIO_DMA_CHANNEL, DMA_IT_TC, ENABLE);

  /*!< SDIO DMA CHANNEL enable */
  DMA_Cmd(SD_SDIO_DMA_CHANNEL, ENABLE);  
}


  
  

uint32_t SD_DMAEndOfTransferStatus(void)
{
  return (uint32_t)DMA_GetFlagStatus(DMA2_FLAG_TC4);
}

SDIO函數(shù)中斷部分

///sd卡狀態(tài)判斷
void SDCARD_Config(void)
{
	SD_Error Status = SD_OK;
	Status = SD_Init();	        //初始化SDIO
	if (Status != SD_OK)
	{
		Display_ErrorWithoutSD((u8 *)"No_SDCard");
	}
	SDCARD_NVIC_Config();	
}



//中斷配置 部分

void SDCARD_NVIC_Config(void)
{
	NVIC_InitTypeDef NVIC_InitStructure;

	/* Configure the NVIC Preemption Priority Bits */
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

	NVIC_InitStructure.NVIC_IRQChannel = SDIO_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
}



中斷函數(shù)
void SDIO_IRQHandler(void)
{
	/* Process All SDIO Interrupt Sources */
	SD_ProcessIRQSrc();
}

審核編輯:符乾江
聲明:本文內(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)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5149

    文章

    19659

    瀏覽量

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

    關(guān)注

    2

    文章

    578

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    第二十五章 SDIO——SD讀寫測(cè)試

    本章介紹了W55MH32的SDIO接口,其可與SD 等通信,采用9針接口,分識(shí)別與數(shù)據(jù)傳輸模式。還提及SDIO功能框圖、初始化結(jié)構(gòu)體,并有SD
    的頭像 發(fā)表于 06-20 14:01 ?935次閱讀
    第二十五章 SDIO——<b class='flag-5'>SD</b><b class='flag-5'>卡</b>讀寫測(cè)試

    貼片式SD如何在STM32硬件實(shí)現(xiàn)高效日志記錄#貼片式sd #貼片式tf #stm32 #硬件

    硬件
    深圳市雷龍發(fā)展有限公司
    發(fā)布于 :2025年06月18日 17:10:22

    什么是SD、TF寫保護(hù)?寫保護(hù)的常見(jiàn)原因

    部分SD、TF適配器或套上設(shè)有物理寫保護(hù)開(kāi)關(guān),當(dāng)開(kāi)關(guān)滑動(dòng)到"鎖定"位置時(shí),卡片會(huì)自動(dòng)進(jìn)入寫保護(hù)狀態(tài)。這是最常見(jiàn)也是最容易解決的寫保護(hù)原因。
    的頭像 發(fā)表于 06-10 00:00 ?903次閱讀
    什么是<b class='flag-5'>SD</b><b class='flag-5'>卡</b>、TF<b class='flag-5'>卡</b>寫保護(hù)?寫保護(hù)的常見(jiàn)原因

    【STM32系統(tǒng)】基于STM32設(shè)計(jì)的SD數(shù)據(jù)讀取與上位機(jī)顯示系統(tǒng)(SDIO接口驅(qū)動(dòng)、雷龍貼片SD

      5. 系統(tǒng)實(shí)現(xiàn)   5.1 系統(tǒng)架構(gòu)   5.2 硬件連接與調(diào)試   6. 實(shí)驗(yàn)與測(cè)試   6.1 實(shí)驗(yàn)方案設(shè)計(jì)   6.2 實(shí)驗(yàn)過(guò)程   6.2.1 SD
    發(fā)表于 05-09 16:11

    Nand flash 和SDSD NAND)存儲(chǔ)扇區(qū)分配表異同

    NAND)接口與主機(jī)設(shè)備連接,主機(jī)設(shè)備通過(guò)文件系統(tǒng)接口來(lái)訪問(wèn) SDSD NAND),對(duì)存儲(chǔ)扇區(qū)分配表的操作是通過(guò)文件系統(tǒng)的函數(shù)和接口來(lái)間接實(shí)現(xiàn)
    發(fā)表于 03-13 10:45

    HAL庫(kù)的函數(shù)調(diào)用示例

    HAL(Hardware Abstraction Layer,硬件抽象)庫(kù)是STM32等微控制器中常用的庫(kù),它為開(kāi)發(fā)者提供了訪問(wèn)和控制硬件設(shè)備的接口。以下是一些常用的HAL庫(kù)函數(shù)及其
    的頭像 發(fā)表于 12-02 14:01 ?1580次閱讀

    一文帶你了解什么是SD NAND存儲(chǔ)芯片

    XST_FAILURE; } return XST_SUCCESS; }   以上是本次實(shí)驗(yàn)使用到的部分代碼,里面包含了外設(shè),標(biāo)準(zhǔn)的打印函數(shù)SD控制器的功能,在程序中先進(jìn)行
    發(fā)表于 11-13 15:20

    Arduino程序:實(shí)現(xiàn)SD NAND(貼片sd)的讀寫功能

      單片機(jī)上傳程序的時(shí)候,有時(shí)候感覺(jué)它的rom和 ram有時(shí)直接限制了他的使用,之前使用eeprom,和sd模塊. []()   然后最近看到了出的SD NAND 就是下面這個(gè)
    發(fā)表于 11-07 17:45

    工業(yè)級(jí)SD:穩(wěn)健發(fā)展,未來(lái)可期

    SD,自1999年由松下、東芝和SanDisk聯(lián)合推出以來(lái),已經(jīng)走過(guò)了二十余年的發(fā)展歷程。從最初的2GB容量、150KB/s的傳輸速度,到如今動(dòng)輒數(shù)百GB容量、數(shù)GB/s的傳輸速度,SD
    的頭像 發(fā)表于 11-07 10:16 ?791次閱讀
    工業(yè)級(jí)<b class='flag-5'>SD</b><b class='flag-5'>卡</b>:穩(wěn)健發(fā)展,未來(lái)可期

    TFSD的區(qū)別

    在數(shù)字時(shí)代,存儲(chǔ)成為了我們生活中不可或缺的一部分。無(wú)論是手機(jī)、相機(jī)還是平板電腦,都需要存儲(chǔ)來(lái)擴(kuò)展存儲(chǔ)空間。TFSD是兩種市面上最常
    的頭像 發(fā)表于 11-04 09:50 ?2539次閱讀

    SD-WAN能實(shí)現(xiàn)幾層防護(hù)層級(jí)?安全保障怎么實(shí)行?

    保障措施覆蓋了從物理到應(yīng)用的多個(gè)層面,確保企業(yè)網(wǎng)絡(luò)的穩(wěn)定性和安全性。 一、SD-WAN實(shí)現(xiàn)的防護(hù)層級(jí) 1、物理和數(shù)據(jù)鏈路層(第1
    的頭像 發(fā)表于 09-26 10:53 ?840次閱讀

    瀚海微SD NAND之SD 協(xié)議(29)硬件接口

    SD存儲(chǔ)硬件接口 SD存儲(chǔ)有6條通信線路和3條供電線路: CMD:命令是雙向信號(hào)。主機(jī)和
    的頭像 發(fā)表于 09-24 10:19 ?658次閱讀
    瀚海微<b class='flag-5'>SD</b> NAND之<b class='flag-5'>SD</b> 協(xié)議(29)<b class='flag-5'>硬件</b>接口

    MK米客方德存儲(chǔ):TFSD的詳細(xì)解讀

    在這個(gè)數(shù)字化時(shí)代,數(shù)據(jù)存儲(chǔ)變得至關(guān)重要。TF(TransFlash)和SD(Secure Digital)作為兩種常見(jiàn)的存儲(chǔ)介質(zhì),它
    的頭像 發(fā)表于 09-02 11:03 ?1341次閱讀
    MK米客方德存儲(chǔ)<b class='flag-5'>卡</b>:TF<b class='flag-5'>卡</b>與<b class='flag-5'>SD</b><b class='flag-5'>卡</b>的詳細(xì)解讀

    樹(shù)莓派4b支持多大的sd

    樹(shù)莓派4B是一款非常受歡迎的微型計(jì)算機(jī),它具有強(qiáng)大的性能和豐富的擴(kuò)展功能。在樹(shù)莓派4B的使用過(guò)程中,SD是一個(gè)非常重要的組件,因?yàn)樗菢?shù)莓派的啟動(dòng)設(shè)備,同時(shí)也是存儲(chǔ)系統(tǒng)文件和應(yīng)用程序的地方。 樹(shù)莓
    的頭像 發(fā)表于 08-30 17:02 ?2473次閱讀