This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

LCDKC6748开发板写SD卡速度较慢,请问是否驱动配置有问题?

所用平台:官方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写卡速度的代码:

#define   BUF_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=72KB
        f_sync(&rec_file);
    }
    rec_wav_file_close(&rec_file);
}

文件写入正确,文件大小72MB,耗时约106秒。写入速度约695KB每秒。

  • 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卡写入速度?

  • 看一下这个帖子,检查一下是不是lib里面buffer的大小限制了速度。
    e2e.ti.com/.../463253
  • 我无法访问这个网址,能否直接告诉我解决方法?谢谢!

    另外,如果我已经自己移植了FATFS,也就是直接使用FATFS源文件,又该修改哪个地方呢?

  • 我可以打开那个网页了。
    其中描述的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是一样的。

    请问速度受限于什么因素?
  • 您所发的帖子链接中,有如下描述:(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】