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

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

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

STM32用一線式驅(qū)動SD NAND,SDIO的一線式驅(qū)動

mkfounder ? 來源:mkfounder ? 作者:mkfounder ? 2023-12-19 14:14 ? 次閱讀

SDIO的一線式和四線式

SDIO(Secure Digital Input/Output)是一種用于在嵌入式系統(tǒng)中連接外部設(shè)備的標(biāo)準(zhǔn)接口。在SDIO標(biāo)準(zhǔn)中,一線式和四線式是指SDIO接口的不同工作模式。

一線式(Single-Line Mode):

工作原理: 在一線式模式下,SDIO接口僅使用單個數(shù)據(jù)線進行通信。這個模式通常用于相對簡單的應(yīng)用,其中數(shù)據(jù)傳輸速度要求不是很高。

適用情境: 適用于對數(shù)據(jù)傳輸速度要求不高的場景,例如連接一些低速外設(shè)。

四線式(Four-Line Mode):

工作原理: 在四線式模式下,SDIO接口使用四根線進行通信,包括一個命令線、一個數(shù)據(jù)線、一個時鐘線和一個電源線。這個模式支持更高的數(shù)據(jù)傳輸速度。

適用情境: 適用于對數(shù)據(jù)傳輸速度有較高要求的應(yīng)用,例如連接高速外設(shè),比如攝像頭、Wi-Fi模塊等。

選擇一線式還是四線式取決于具體的應(yīng)用需求。如果應(yīng)用對速度要求不高,或者對硬件資源有限,可以選擇一線式。如果需要更高的數(shù)據(jù)傳輸速度,特別是在連接高速外設(shè)的情況下,四線式可能更為合適。

需要注意的是,使用四線式模式可能會對系統(tǒng)的硬件和軟件設(shè)計提出更高的要求,因為需要支持更復(fù)雜的通信協(xié)議和更高的時鐘頻率。

STM32的SDIO一線式驅(qū)動[SD NAND]([SD NAND | MK-米客方德])

有些平臺和MCU沒有SDIO接口的,STM32大部分型號有SDIO接口,具體可以看芯片手冊,

程序代碼

SD NAND初始化

/**
 * @brief初始化SD
 * @param
 * @retval返回值:0 初始化正確;其他值,初始化錯誤
 */uint8_tsd_init(void){

uint8_t SD_Error;

/* 初始化時的時鐘不能大于400KHZ */
g_sdcard_handler.Instance = SDIO;
g_sdcard_handler.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;                       /* 上升沿 */
g_sdcard_handler.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;                  /* 不使用bypass模式,直接用HCLK進行分頻得到SDIO_CK */
g_sdcard_handler.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;           /* 空閑時不關(guān)閉時鐘電源 */
g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B;                               /* 1位數(shù)據(jù)線 */
g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE;  /* 開啟硬件流控 */
g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV;                         /* SD傳輸時鐘頻率最大25MHZ */

SD_Error =HAL_SD_Init(&g_sdcard_handler);
if(SD_Error != HAL_OK)
{
return1;
}
//SD_Error = HAL_SD_ConfigWideBusOperation(&g_sdcard_handler, SDIO_BUS_WIDE_4B);/* 使能寬總線模式,-O0 優(yōu)化會有問題 *///if (SD_Error != HAL_OK)//{//return 2;//}


return0;}

測試SD NAND的寫入

/**
 * @brief初始化SD
 * @param
 * @retval返回值:0 初始化正確;其他值,初始化錯誤
 */uint8_tsd_init(void){

uint8_t SD_Error;

/* 初始化時的時鐘不能大于400KHZ */
g_sdcard_handler.Instance = SDIO;
g_sdcard_handler.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;                       /* 上升沿 */
g_sdcard_handler.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;                  /* 不使用bypass模式,直接用HCLK進行分頻得到SDIO_CK */
g_sdcard_handler.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;           /* 空閑時不關(guān)閉時鐘電源 */
g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B;                               /* 1位數(shù)據(jù)線 */
g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE;  /* 開啟硬件流控 */
g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV;                         /* SD傳輸時鐘頻率最大25MHZ */

SD_Error =HAL_SD_Init(&g_sdcard_handler);
if(SD_Error != HAL_OK)
{
return1;
}
//SD_Error = HAL_SD_ConfigWideBusOperation(&g_sdcard_handler, SDIO_BUS_WIDE_4B);/* 使能寬總線模式,-O0 優(yōu)化會有問題 *///if (SD_Error != HAL_OK)//{//return 2;//}


return0;}

測試SD NAND的讀出

/**
 * @brief測試SD卡的讀取
 *@notesecaddr地址開始,讀取seccnt個扇區(qū)的數(shù)據(jù)
 * @paramsecaddr : 扇區(qū)地址
 * @paramseccnt: 扇區(qū)數(shù)
 * @retval
 */voidsd_test_read(uint32_t secaddr,uint32_t seccnt){

uint32_t i;
uint8_t*buf;
uint8_t sta =0;

buf =mymalloc(SRAMIN, seccnt *512);     /* 申請內(nèi)存,從SDRAM申請內(nèi)存 */
sta =sd_read_disk(buf, secaddr, seccnt);/* 讀取secaddr扇區(qū)開始的內(nèi)容 */

if(sta ==0)
{
lcd_show_string(30,170,200,16,16,"USART1 Sending Data...", BLUE);
printf("SECTOR %d DATA:rn", secaddr);

for(i =0; i < seccnt *512; i++)
{
printf("%x ", buf[i]);/* 打印secaddr開始的扇區(qū)數(shù)據(jù) */
}

printf("rnDATA ENDEDrn");
lcd_show_string(30,170,200,16,16,"USART1 Send Data Over!", BLUE);
}
else
{
printf("err:%drn", sta);
lcd_show_string(30,170,200,16,16,"SD read Failure!      ", BLUE);
}

myfree(SRAMIN, buf);/* 釋放內(nèi)存 */}

實驗現(xiàn)象

image.png

image.png

使用的芯片是MK-米客方德的工業(yè)級芯片MKDV1GIL-AS,

image.png

需要工程的可以聯(lián)系MK-米客方德。

審核編輯:湯梓紅

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

    關(guān)注

    456

    文章

    51004

    瀏覽量

    425249
  • 嵌入式
    +關(guān)注

    關(guān)注

    5087

    文章

    19150

    瀏覽量

    306374
  • NAND
    +關(guān)注

    關(guān)注

    16

    文章

    1686

    瀏覽量

    136279
  • 驅(qū)動
    +關(guān)注

    關(guān)注

    12

    文章

    1844

    瀏覽量

    85402
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10914

    瀏覽量

    356723
收藏 人收藏

    評論

    相關(guān)推薦

    USB一線通監(jiān)控副屏設(shè)計方案

    在2024年全國大學(xué)生嵌入芯片與系統(tǒng)設(shè)計競賽中,各大高校學(xué)子紛紛展現(xiàn)出卓越的創(chuàng)新能力和扎實的技術(shù)功底。今天,特別為大家分享獲獎作品——USB一線通監(jiān)控副屏,它以其獨特的設(shè)計和實用的功能贏得廣泛好評與認(rèn)可。
    的頭像 發(fā)表于 11-28 09:45 ?789次閱讀
    USB<b class='flag-5'>一線</b>通監(jiān)控副屏設(shè)計方案

    今日話題:一線城市 or 二城市?

    `社會學(xué)家鄭也夫說人生不外乎在追求三種狀態(tài):舒服、刺激、牛B。其實也是道城市選擇題:皆因年輕的我們,愛冒險勝過愛安逸,愛牛B勝過愛舒服,自愿進入人生愿境最誘人、生存邏輯又最殘酷的一線城市。這是
    發(fā)表于 03-09 10:10

    JQ8400一線串口我應(yīng)該怎么接線啊?兩串口該怎么接線?

    JQ8400一線串口我應(yīng)該怎么接線?。績?b class='flag-5'>線串口該怎么接線?淘寶買的那測試程序不響,不知道是不是接線出問題還是怎樣,求教??!
    發(fā)表于 01-03 21:14

    一線城市程序員薪資數(shù)據(jù)概述

    一線城市程序員薪資數(shù)據(jù)出爐,你屬于哪檔?
    發(fā)表于 06-26 16:05

    lcd2004一線屏仿真

    )圖5四,編輯main.c 代碼如Proteus8.9 VSM Studio GCC編譯器仿真STM32F407ZGT6系列015_lcd2004一線屏(如下圖6所示)圖6五,Main.c 代碼:/* Main.c file generated by New Projec
    發(fā)表于 12-13 07:20

    SD NANDSDIOSTM32上的應(yīng)用詳解(上篇)

    的命令訪問(STM32主機通過驅(qū)動SDIO外設(shè)通過CMD命令向從機SD卡發(fā)送命令),SDIO
    發(fā)表于 11-15 15:17

    rt-thread SDIO驅(qū)動框架分析(SD卡flash驅(qū)動\SD Nand flash驅(qū)動

    (點擊跳轉(zhuǎn)))在 rt_hw_sdio_init 函數(shù)中,驅(qū)動程序主要初始化以下幾個結(jié)構(gòu)體:stm32外設(shè)HAL庫配置結(jié)構(gòu)體 SD_HandleTypeDef hsd
    發(fā)表于 04-04 16:26

    基于TINI的一線制網(wǎng)絡(luò)互連技術(shù)

    概述 TINI的基本概念和工作原理,分析 TINI的軟件環(huán)境;簡述基于一線制技術(shù)的溫度型iButton DS1920和小型氣象儀,給出利用 TINI實現(xiàn)一線制網(wǎng)絡(luò)與 Internet連接的應(yīng)用實例。
    發(fā)表于 04-13 10:15 ?20次下載

    一線總線器件實現(xiàn)移動數(shù)據(jù)收集

    一線總線是DALLSA公司推出的總線標(biāo)準(zhǔn).文中介紹了一線總線信息紐扣器件iBUT-TON設(shè)計手持移動數(shù)據(jù)收集器的設(shè)計方法,給出了該設(shè)計的硬件構(gòu)成和軟件框圖,最后給出了將該數(shù)據(jù)收
    發(fā)表于 04-22 13:57 ?14次下載

    溫度傳感器和一線總線協(xié)議

    數(shù)字一線溫度傳感器的出現(xiàn)為數(shù)字傳感器的發(fā)展奠定了基礎(chǔ)。介紹了一線總線溫度傳感器的工作原理及其采用的協(xié)議規(guī)范,討論了其同單片機和有關(guān)電路同其的接口電路,給出了試
    發(fā)表于 06-24 10:17 ?10次下載

    基于一線傳感器嵌入軟件系統(tǒng)設(shè)計的實現(xiàn)

    闡述了無操作系統(tǒng)的嵌入軟件系統(tǒng)設(shè)計的不同結(jié)構(gòu)類型,并結(jié)合使用一線溫度傳感器的測溫系統(tǒng),給出了嵌入軟件系統(tǒng)設(shè)計主要使用的兩種方案。同時,對DS18B20 使用C 語言
    發(fā)表于 08-29 10:55 ?33次下載

    DS18B20 一線總線數(shù)字傳感器

    DS18B20、DS1822 “一線總線”數(shù)字化溫度傳感器是DALLAS最新單線數(shù)字溫度傳感器, 同DS1820樣,DS18B20也支持“一線總線”接口,測量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精
    發(fā)表于 01-16 15:15 ?134次下載

    一線Linux嵌入開發(fā)工程師的對話

    知識,從你一線開發(fā)經(jīng)驗來說,給我們些建議: 陳工回答: 對于嵌入Linux入門,如果有定基礎(chǔ),可以從驅(qū)動開始;如果沒有基礎(chǔ),我個人建議
    的頭像 發(fā)表于 03-14 07:43 ?4760次閱讀

    rt-thread SDIO驅(qū)動框架分析(貼片SD卡flash驅(qū)動\SD Nand flash驅(qū)動

    文章目錄rt-threadSDIO驅(qū)動框架分析之SD驅(qū)動1.前言2.SDIO通用驅(qū)動框架介紹3.文件架構(gòu)分析4.
    的頭像 發(fā)表于 04-04 17:41 ?1036次閱讀
    rt-thread <b class='flag-5'>SDIO</b><b class='flag-5'>驅(qū)動</b>框架分析(貼片<b class='flag-5'>SD</b>卡flash<b class='flag-5'>驅(qū)動</b>\<b class='flag-5'>SD</b> <b class='flag-5'>Nand</b> flash<b class='flag-5'>驅(qū)動</b>)

    芯知識 | 語音芯片支持一線串口和兩串口的作用與應(yīng)用優(yōu)勢

    隨著科技的不斷進步,語音芯片作為現(xiàn)代電子產(chǎn)品中的核心組件,其功能和性能也在不斷提升。其中,語音芯片支持一線串口和兩串口的功能,在實際應(yīng)用中具有重要的作用和優(yōu)勢。首先,讓我們了解一線串口和兩
    的頭像 發(fā)表于 12-20 08:39 ?759次閱讀
    芯知識 | 語音芯片支持<b class='flag-5'>一線</b>串口和兩<b class='flag-5'>線</b>串口的作用與應(yīng)用優(yōu)勢