V307 MSC_U-disk SD卡媒介

CH32V307VCT6-EVT-R2開發(fā)板

以USBHS?DEVICE MSC_U-Disk例程為基礎(chǔ),簡(jiǎn)單融入SDIO例程,將SD卡作為媒介,修改SW_UDISK.c和.h文件

#define STORAGE_MEDIUM? ? ? ? ? ? ?MEDIUM_SD_FLASH


#elif (STORAGE_MEDIUM == MEDIUM_SD_FLASH)

? ? #define DEF_CFG_DISK_SEC_SIZE? ? ? 512? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 磁盤扇區(qū)大小 */

? ? #define DEF_FLASH_SECTOR_SIZE? ? ? 512? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 定義FLASH扇區(qū)大小 */

? ? #define DEF_UDISK_SECTOR_SIZE? ? ? DEF_CFG_DISK_SEC_SIZE? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 定義U盤扇區(qū)大小 */

#elif(STORAGE_MEDIUM == MEDIUM_SD_FLASH)

????SD_ReadBlock();

#elif(STORAGE_MEDIUM ==?MEDIUM_SD_FLASH)

????SD_WriteBlock();

可以實(shí)現(xiàn)基礎(chǔ)SD卡模擬U盤功能。

遇到問題:

1 SD卡默認(rèn)配置,開機(jī)識(shí)別U盤速度,格式化速度,讀寫速度非常慢,單個(gè)10MB文件寫入350KB/s,讀取1.4MB/s

2 將SD卡配置成DMA SD_SetDeviceMode( SD_DMA_MODE);不可運(yùn)行

2.1 單獨(dú)配置讀取啟動(dòng)DMA,運(yùn)行正常,但是速度沒有變化

2.2 單獨(dú)配置寫入啟動(dòng)DMA,不可運(yùn)行。

2.3 SD啟動(dòng)DMA,初始化后的測(cè)試?yán)陶?,只有在作為U盤媒介時(shí),寫入啟動(dòng)DMA異常

????????for(i=0; i

????? ? ? ? if(SD_WriteDisk(buf,i,1)) printf("Wr %d sector fail\n", i);

????? ? ? ? if(SD_ReadDisk(Readbuf,i,1)) printf("Rd %d sector fail\n", i);

????? ? ? ? if(memcmp(buf, Readbuf, 512)){

????? ? ? ? ? ? printf(" %d sector Verify fail\n", i);

????? ? ? ? ? ? break;

????? ? ? ? }

????? ? }

3 在SW_UDISK.c中屏蔽寫入代碼,測(cè)試寫入速度15MB/s。

請(qǐng)問如何提高模擬U盤的讀寫速度,包括格式化和USB識(shí)別速度?

CH565W開發(fā)板,EMMC媒介模擬U盤,USB2.0接口,讀寫速度35MB/s,USB3.0接口,讀寫44MB/s。307與565差距太大了。

您好,


????????問題1:我們EVT中的例程,只是展示了V307能夠作為U盤進(jìn)行使用,沒有對(duì)速度進(jìn)行優(yōu)化,您測(cè)試得到的速度還是比較快的。如果您需要CH32V307VCT6芯片,使用高速USB實(shí)現(xiàn)SD卡讀卡器功能的參考工程,麻煩發(fā)送郵件至lbw@wch.cn獲取。請(qǐng)簡(jiǎn)要說明產(chǎn)品功能并附上您的聯(lián)系方式及公司名稱(或?qū)W校信息),謝謝。


????????問題2:

????????①請(qǐng)檢查sdio.c文件下的SD_ReadBlock、SD_ReadMultiBlocks、SD_WriteBlock與SD_WriteMultiBlocks函數(shù)中,有沒有使能對(duì)應(yīng)的DMA通道。建議您到官網(wǎng)下載最新版本EVT例程(http://www.findthetime.net/products/CH32V307.html?)。

????????②你提到的只啟用DMA對(duì)讀寫速度沒有影響,這一點(diǎn)我也有所發(fā)現(xiàn)。我認(rèn)為可能是因?yàn)樵赪indows系統(tǒng)下USB的BOT協(xié)議單包最大512字節(jié),使用DMA只是實(shí)現(xiàn)了USB數(shù)據(jù)由內(nèi)存到SDIO接口這一過程的加速,并沒有減少SDIO接口發(fā)送的額外的數(shù)據(jù)量,即SDIO依然使用單塊進(jìn)行SD卡的讀寫操作??梢酝ㄟ^將USB的數(shù)據(jù)進(jìn)行緩存,累積一定數(shù)量的數(shù)據(jù)后,通過多塊讀寫的方式一次性進(jìn)行傳輸。實(shí)際測(cè)試發(fā)現(xiàn),隨著累積的數(shù)據(jù)量的增多,USB的速度趨于穩(wěn)定。在此方法上進(jìn)行改進(jìn),使用循環(huán)緩沖區(qū)實(shí)現(xiàn)USB數(shù)據(jù)的接收與SDIO的寫卡同步操作,應(yīng)該可以進(jìn)一步提升讀寫性能。


????????問題3:

????????①屏蔽SD_WriteBlock或SD_WriteMultiBlocks函數(shù)測(cè)試得到的速度,可以粗略的認(rèn)為是USB在這一工程下的傳輸速度,實(shí)際工作過程為USB接收后不進(jìn)行寫卡操作,內(nèi)存中的數(shù)據(jù)反復(fù)被新數(shù)據(jù)覆蓋。提高模擬U盤的讀寫速度可以參考問題2中的②的回答,可以提供的參考工程是使用緩存一段時(shí)間的數(shù)據(jù)再寫入的方式,循環(huán)緩沖區(qū)暫無(wú)參考工程,需自行開發(fā)。

????????②USB的格式化可以分為全部格式化和快速格式化,如果希望快速完成卡的格式化操作,直接使用快速格式化刪除卡中記錄的文件分配表即可。但要注意的是部分小容量的卡,可能存在不支持BOT協(xié)議中的擦除指令,計(jì)算機(jī)通常反復(fù)使用寫指令(CMD25)來(lái)完成這一過程。

????????③USB的識(shí)別速度是指什么,從USB本身來(lái)講,主機(jī)完成枚舉后,U盤的識(shí)別過程就已經(jīng)完成了。可以嘗試關(guān)閉你的殺毒軟件,避免殺毒軟件對(duì)U盤的掃描,長(zhǎng)時(shí)間的占用你的U盤。如果您手中有USB分析儀,也可以觀察下U盤的枚舉是否存在異常。

? ? ? ? ④eMMC相較于SD卡而言,能夠支持8線模式,相同的時(shí)鐘頻率下,傳輸速度在理論上是SD卡2倍,這個(gè)是物理屬性所決定的,軟件上沒有辦法進(jìn)行突破。V307的SDIO接口也提供了8線模式,同樣也能夠?qū)崿F(xiàn)eMMC的操作,最新的例程還在整理,完成后會(huì)第一時(shí)間在官網(wǎng)的EVT中進(jìn)行發(fā)布。





非常感謝您的解答,已發(fā)送申請(qǐng),郵箱個(gè)人信息保護(hù),已隱藏


速度非常NICE,讀取15MB/s,寫入12MB/s!感謝!BANQ V30 64GB卡。Netac U3 64GB卡若一些,讀取13MB/s。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频