智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 820|回复: 2
打印 上一主题 下一主题

SD卡,不能写入数据,感觉在初始化的时候就有问题,求指导

[复制链接]

21

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1978
威望
1017
贡献
617
兑换币
625
注册时间
2015-8-15
在线时间
172 小时
毕业学校
浙江理工
跳转到指定楼层
1#
发表于 2016-5-24 17:13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void img_sd_init(void)
{
    int     fireres;
    char    myfilename[20];
    uint16  imgsize[] = {
                            CAMERA_H,
                            CAMERA_W,
                            //CAMERA_COLOR,
                         };      //高、宽、摄像头颜色类型
    uint32  mybw;
    uint32  Imag_num = 0;

    f_mount(0, &firefs);
    printf("DSS!\n");

    do
    {
        Imag_num ++;
        sprintf(myfilename, "0:/fire%d.sd", Imag_num);
        fireres = f_open( &firesrc , myfilename, FA_CREATE_NEW | FA_WRITE);

        if(firefs.fs_type == 0)
        {
            firesrc.fs = 0;
            return;
        }

    }while(fireres == FR_EXIST);        //如果文件存在,则命名继续加1

      printf("DSS2!\n");
    if ( fireres == FR_OK )
    {
         OLED_P6x8Str(10,1,"SD Card OK!");
         printf("SD Card OK!\n");
        fireres = f_write(&firesrc, imgsize, sizeof(imgsize),&mybw);  //先写入高和宽,方便上位机处理

    }
    else
    {
        OLED_P6x8Str(10,1,"SD Card Error!");
        printf("SD Card Error!\n");
        f_close(&firesrc);
        firesrc.fs = 0;
        while(1);
    }
}

程序运行到    do
    {
        Imag_num ++;
        sprintf(myfilename, "0:/fire%d.sd", Imag_num);
        fireres = f_open( &firesrc , myfilename, FA_CREATE_NEW | FA_WRITE);

        if(firefs.fs_type == 0)
        {
            firesrc.fs = 0;
            return;
        }
就返回了,有人知道是为什么吗
硬件我检查了一下,没有问题。
SD卡使用,写入图像前,需要格式化或者新建文件吗

回复

使用道具 举报

28

主题

2228

帖子

1

精华

杰出人士

Rank: 12Rank: 12Rank: 12

积分
15822

论坛元老奖章在线王奖章活跃会员奖章优秀会员奖章资源大师奖章

QQ
威望
7433
贡献
4215
兑换币
5195
注册时间
2013-12-9
在线时间
2087 小时
2#
发表于 2016-5-24 20:29:16 | 只看该作者
*外的库,有时候需要多换几个卡试试
回复 支持 反对

使用道具 举报

21

主题

58

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1978
威望
1017
贡献
617
兑换币
625
注册时间
2015-8-15
在线时间
172 小时
毕业学校
浙江理工
3#
 楼主| 发表于 2016-5-25 09:29:01 | 只看该作者
六步上篮 发表于 2016-5-24 20:29
*外的库,有时候需要多换几个卡试试

SD卡使用前,使用的那几个引脚不用初始化吗,感觉他们的函数都没有初始化

    FIL     fdst;   //文件
    FATFS   fs;     //文件系统

    uint32 size, sizetmp;
    int res;
    char *str = "感谢您选用 野火Kinetis开发板 !^_^\n野火初学123论坛:chuxue123.com";
    uint8 buff[BUFF_SIZE];

    memset(buff,0,BUFF_SIZE);

    f_mount(0, &fs);                                                               //挂载文件系统

    //初始化 SD卡 在 f_open 上执行,目前代码只支持打开一个文件(由 _FS_SHARE 配置),频繁打开文件会消耗CPU资源
    res = f_open(&fdst, "0:/FireDemo.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);  //打开文件,如果没有就创建,带读写打开

    if( res == FR_DISK_ERR)
    {
        printf( "\n没插入SD卡??\n" );
        return;
    }
    else if ( res == FR_OK )
    {
        printf( "\n文件打开成功 \n" );
    }
    else
    {
        printf("\n返回值异常");
        return;
    }


    f_puts(str, &fdst);                     //往文件里写入字符串

    f_sync(&fdst);                          //刚才写入了数据,实际上数据并没真正完成写入,需要调用此函数同步或者关闭文件,才会真正写入

    size = f_size(&fdst);                   //获取文件的大小

    printf( "\n文件大小为:%d \n" , size);  //串口打印文件的大小

    if(size > BUFF_SIZE)size = BUFF_SIZE;   //防止溢出

    f_lseek(&fdst, 0);                      //把指针指向文件顶部
    f_read (&fdst, buff, size, &sizetmp);   //读取

    printf("文件内容为:\n%s", (char const *)buff);

    f_close(&fdst);                         //关闭文件
    while(1);

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 14:43 , Processed in 0.053026 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表