SDIO的一線式和四線式
SDIO(Secure Digital Input/Output)是一種用于在嵌入式系統(tǒng)中連接外部設(shè)備的標(biāo)準(zhǔn)接口。在SDIO標(biāo)準(zhǔn)中,一線式和四線式是指SDIO接口的不同工作模式。
一線式(Single-Line Mode):
工作原理: 在一線式模式下,SDIO接口僅使用單個(gè)數(shù)據(jù)線進(jìn)行通信。這個(gè)模式通常用于相對(duì)簡(jiǎn)單的應(yīng)用,其中數(shù)據(jù)傳輸速度要求不是很高。
適用情境: 適用于對(duì)數(shù)據(jù)傳輸速度要求不高的場(chǎng)景,例如連接一些低速外設(shè)。
四線式(Four-Line Mode):
工作原理: 在四線式模式下,SDIO接口使用四根線進(jìn)行通信,包括一個(gè)命令線、一個(gè)數(shù)據(jù)線、一個(gè)時(shí)鐘線和一個(gè)電源線。這個(gè)模式支持更高的數(shù)據(jù)傳輸速度。
適用情境: 適用于對(duì)數(shù)據(jù)傳輸速度有較高要求的應(yīng)用,例如連接高速外設(shè),比如攝像頭、Wi-Fi模塊等。
選擇一線式還是四線式取決于具體的應(yīng)用需求。如果應(yīng)用對(duì)速度要求不高,或者對(duì)硬件資源有限,可以選擇一線式。如果需要更高的數(shù)據(jù)傳輸速度,特別是在連接高速外設(shè)的情況下,四線式可能更為合適。
需要注意的是,使用四線式模式可能會(huì)對(duì)系統(tǒng)的硬件和軟件設(shè)計(jì)提出更高的要求,因?yàn)樾枰С指鼜?fù)雜的通信協(xié)議和更高的時(shí)鐘頻率。
STM32的SDIO一線式驅(qū)動(dòng)[SD NAND]([SD NAND | MK-米客方德])
有些平臺(tái)和MCU沒(méi)有SDIO接口的,STM32大部分型號(hào)有SDIO接口,具體可以看芯片手冊(cè),
程序代碼
SD NAND初始化
/*** @brief初始化SD卡
* @param無(wú)
* @retval返回值:0 初始化正確;其他值,初始化錯(cuò)誤
*/uint8_tsd_init(void){
uint8_t SD_Error;
/* 初始化時(shí)的時(shí)鐘不能大于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進(jìn)行分頻得到SDIO_CK */
g_sdcard_handler.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; /* 空閑時(shí)不關(guān)閉時(shí)鐘電源 */
g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /* 1位數(shù)據(jù)線 */
g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE; /* 開(kāi)啟硬件流控 */
g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV; /* SD傳輸時(shí)鐘頻率最大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)化會(huì)有問(wèn)題 *///if (SD_Error != HAL_OK)//{//return 2;//}
return0;}
測(cè)試SD NAND的寫(xiě)入
/*** @brief初始化SD卡
* @param無(wú)
* @retval返回值:0 初始化正確;其他值,初始化錯(cuò)誤
*/uint8_tsd_init(void){
uint8_t SD_Error;
/* 初始化時(shí)的時(shí)鐘不能大于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進(jìn)行分頻得到SDIO_CK */
g_sdcard_handler.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE; /* 空閑時(shí)不關(guān)閉時(shí)鐘電源 */
g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /* 1位數(shù)據(jù)線 */
g_sdcard_handler.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE; /* 開(kāi)啟硬件流控 */
g_sdcard_handler.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV; /* SD傳輸時(shí)鐘頻率最大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)化會(huì)有問(wèn)題 *///if (SD_Error != HAL_OK)//{//return 2;//}
return0;}
測(cè)試SD NAND的讀出
/*** @brief測(cè)試SD卡的讀取
*@note從secaddr地址開(kāi)始,讀取seccnt個(gè)扇區(qū)的數(shù)據(jù)
* @paramsecaddr : 扇區(qū)地址
* @paramseccnt: 扇區(qū)數(shù)
* @retval無(wú)
*/voidsd_test_read(uint32_tsecaddr,uint32_tseccnt){
uint32_t i;
uint8_t*buf;
uint8_t sta =0;
buf =mymalloc(SRAMIN, seccnt *512); /* 申請(qǐng)內(nèi)存,從SDRAM申請(qǐng)內(nèi)存 */
sta =sd_read_disk(buf, secaddr, seccnt);/* 讀取secaddr扇區(qū)開(kāi)始的內(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開(kāi)始的扇區(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)存 */}
實(shí)驗(yàn)現(xiàn)象


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

需要工程的可以聯(lián)系MK-米客方德。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
463文章
53867瀏覽量
463259 -
嵌入式
+關(guān)注
關(guān)注
5194文章
20284瀏覽量
331842 -
NAND
+關(guān)注
關(guān)注
16文章
1754瀏覽量
140804 -
驅(qū)動(dòng)
+關(guān)注
關(guān)注
12文章
1939瀏覽量
88410 -
STM32
+關(guān)注
關(guān)注
2308文章
11150瀏覽量
372470
發(fā)布評(píng)論請(qǐng)先 登錄
USB一線通監(jiān)控副屏設(shè)計(jì)方案
今日話題:一線城市 or 二線城市?
lcd2004一線屏仿真
FPGA的JTAG接口和ARM的JTAG接口線是否可以共用同一線呢
SD NAND 的 SDIO在STM32上的應(yīng)用詳解(上篇)
rt-thread SDIO驅(qū)動(dòng)框架分析(SD卡flash驅(qū)動(dòng)\SD Nand flash驅(qū)動(dòng))
基于TINI的一線制網(wǎng)絡(luò)互連技術(shù)
用一線總線器件實(shí)現(xiàn)移動(dòng)數(shù)據(jù)收集
溫度傳感器和一線總線協(xié)議
基于一線式傳感器嵌入式軟件系統(tǒng)設(shè)計(jì)的實(shí)現(xiàn)
DS18B20 一線總線數(shù)字式傳感器
與一線Linux嵌入式開(kāi)發(fā)工程師的對(duì)話
rt-thread SDIO驅(qū)動(dòng)框架分析(貼片SD卡flash驅(qū)動(dòng)\SD Nand flash驅(qū)動(dòng))
芯知識(shí) | 語(yǔ)音芯片支持一線串口和兩線串口的作用與應(yīng)用優(yōu)勢(shì)
STM32用一線式驅(qū)動(dòng)SD NAND,SDIO的一線式驅(qū)動(dòng)
評(píng)論