SDIO的一線式和四線式
SDIO(Secure Digital Input/Output)是一種用于在嵌入式系統中連接外部設備的標準接口。在SDIO標準中,一線式和四線式是指SDIO接口的不同工作模式。
一線式(Single-Line Mode):
工作原理: 在一線式模式下,SDIO接口僅使用單個數據線進行通信。這個模式通常用于相對簡單的應用,其中數據傳輸速度要求不是很高。
適用情境: 適用于對數據傳輸速度要求不高的場景,例如連接一些低速外設。
四線式(Four-Line Mode):
工作原理: 在四線式模式下,SDIO接口使用四根線進行通信,包括一個命令線、一個數據線、一個時鐘線和一個電源線。這個模式支持更高的數據傳輸速度。
適用情境: 適用于對數據傳輸速度有較高要求的應用,例如連接高速外設,比如攝像頭、Wi-Fi模塊等。
選擇一線式還是四線式取決于具體的應用需求。如果應用對速度要求不高,或者對硬件資源有限,可以選擇一線式。如果需要更高的數據傳輸速度,特別是在連接高速外設的情況下,四線式可能更為合適。
需要注意的是,使用四線式模式可能會對系統的硬件和軟件設計提出更高的要求,因為需要支持更復雜的通信協議和更高的時鐘頻率。
STM32的SDIO一線式驅動[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; /* 空閑時不關閉時鐘電源 */
g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /* 1位數據線 */
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 優化會有問題 *///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; /* 空閑時不關閉時鐘電源 */
g_sdcard_handler.Init.BusWide = SDIO_BUS_WIDE_1B; /* 1位數據線 */
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 優化會有問題 *///if (SD_Error != HAL_OK)//{//return 2;//}
return0;}
測試SD NAND的讀出
/**
* @brief測試SD卡的讀取
*@note從secaddr地址開始,讀取seccnt個扇區的數據
* @paramsecaddr : 扇區地址
* @paramseccnt: 扇區數
* @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); /* 申請內存,從SDRAM申請內存 */
sta =sd_read_disk(buf, secaddr, seccnt);/* 讀取secaddr扇區開始的內容 */
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開始的扇區數據 */
}
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);/* 釋放內存 */}
實驗現象
使用的芯片是MK-米客方德的工業級芯片MKDV1GIL-AS,
需要工程的可以聯系MK-米客方德。
審核編輯:湯梓紅
-
芯片
+關注
關注
457文章
51297瀏覽量
427871 -
嵌入式
+關注
關注
5096文章
19192瀏覽量
308062 -
NAND
+關注
關注
16文章
1697瀏覽量
136532 -
驅動
+關注
關注
12文章
1853瀏覽量
85693 -
STM32
+關注
關注
2273文章
10926瀏覽量
357821
發布評論請先 登錄
相關推薦
USB一線通監控副屏設計方案
![USB<b class='flag-5'>一線</b>通監控副屏設計方案](https://file1.elecfans.com/web3/M00/00/3C/wKgZPGdHy9uAMokPAABH7f8UWbQ202.png)
今日話題:一線城市 or 二線城市?
JQ8400一線串口我應該怎么接線啊?兩線串口該怎么接線?
lcd2004一線屏仿真
rt-thread SDIO驅動框架分析(SD卡flash驅動\SD Nand flash驅動)
基于TINI的一線制網絡互連技術
用一線總線器件實現移動數據收集
溫度傳感器和一線總線協議
基于一線式傳感器嵌入式軟件系統設計的實現
DS18B20 一線總線數字式傳感器
與一線Linux嵌入式開發工程師的對話
rt-thread SDIO驅動框架分析(貼片SD卡flash驅動\SD Nand flash驅動)
![rt-thread <b class='flag-5'>SDIO</b><b class='flag-5'>驅動</b>框架分析(貼片<b class='flag-5'>SD</b>卡flash<b class='flag-5'>驅動</b>\<b class='flag-5'>SD</b> <b class='flag-5'>Nand</b> flash<b class='flag-5'>驅動</b>)](https://file.elecfans.com/web2/M00/9D/30/pYYBAGQr4IuAOGRBAAAdAmYPFvU012.png)
芯知識 | 語音芯片支持一線串口和兩線串口的作用與應用優勢
![芯知識 | 語音芯片支持<b class='flag-5'>一線</b>串口和兩<b class='flag-5'>線</b>串口的作用與應用優勢](https://file1.elecfans.com/web2/M00/B8/22/wKgZomWCN72AcCb9AACYQBXD-rQ475.png)
評論