所用平台:官方LCDKC6748
主频:300MHz
SDIO_CLK频率:25MHz(用示波器测量过)
例程模板:C:\ti\pdk_omapl138_1_0_6\packages\ti\drv\mmcsd\example\fatfs_console
TF卡:Kingston Class 4 8GB
功能:实现了文件的正常读写。
测试MMCSD写卡速度的代码:
#defineBUF_SIZE(72ul<<10) unsigned char test_Buf[BUF_SIZE]; static void fill_buf(unsigned char *buf) {unsigned int i;for(i=0; i<BUF_SIZE; i++) {*buf++ = i;} } void SD_wr_speed_test(void) {FRESULT res;UInt i;unsigned int bytes_writed;res = f_open(&rec_file, "rec_ch1.txt", FA_CREATE_ALWAYS | FA_WRITE);if(FR_OK != res) {return;}fill_buf(test_Buf);i= 1024;while(i--) {f_write(&rec_file, test_Buf, BUF_SIZE, &bytes_writed); // BUF_SIZE=72KBf_sync(&rec_file);}rec_wav_file_close(&rec_file); }
文件写入正确,文件大小72MB,耗时约106秒。写入速度约695KB每秒。
Shide Lu:
MMCSD的初始化配置参数,直接使用例程原来引用的MMCSD_soc.c文件,所在目录是C:\ti\pdk_omapl138_1_0_6\packages\ti\drv\mmcsd\soc\omapl138。
参数未作任何修改,如下图:
后来查看C:\ti\pdk_omapl138_1_0_6\packages\ti\drv\mmcsd\src中的驱动文件,发现需要定义宏MMCSD_EDMA_ENABLED以支持MMCSD使用EDMA。
在工程属性中添加了该宏:
测试速度不变,约695KB/s。
我们目前产品是6通道录音,96k/24bit采样,需要写入速度至少1.7MB/s。当前速度无法满足需求。
请问,如何修改配置参数,才能提高SD卡写入速度?
Nancy Wang:
回复 Shide Lu:
看一下这个帖子,检查一下是不是lib里面buffer的大小限制了速度。
e2e.ti.com/…/463253
Shide Lu:
回复 Nancy Wang:
我无法访问这个网址,能否直接告诉我解决方法?谢谢!
另外,如果我已经自己移植了FATFS,也就是直接使用FATFS源文件,又该修改哪个地方呢?
Shide Lu:
回复 Nancy Wang:
我可以打开那个网页了。
其中描述的setvbuf()是stdio.h中的函数,但是我使用的是pdk_omapl138_1_0_6中的fatfs函数,并不是stdio.h的函数。
也就是和例程C:\ti\pdk_omapl138_1_0_6\packages\ti\drv\mmcsd\example\fatfs_console是一样的。请问速度受限于什么因素?
Shide Lu:
回复 Nancy Wang:
您所发的帖子链接中,有如下描述:(raw SD例程的写入速度可达6MB/s)
请问StarterWare或者PDK有MMCSD的raw写入例程吗?如果有,我可以自己移植到FATFS。
我在C:\ti\C6748_StarterWare_1_20_04_01和C:\ti\pdk_omapl138_1_0_6没有找到。
【注:我使用的IDE是CCS 7.4.0】