注册 登录
查看: 913|回复: 10

[摄像头组] SD卡的写入问题...

[复制链接]
发表于 2013-6-20 19:02:12 | 显示全部楼层 |阅读模式
用的山外的:
void img_sd_init(void) //初始化SD
{
    int   fireres;
    char  myfilename[20];
    u16 imgsize[] = {CAMERA_H, CAMERA_W};
    u32 mybw;
    u32 Imag_num = 0;
   
    f_mount(0, &firefs);
   
    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
   
    if ( fireres == FR_OK )
    {
        fireres = f_write(&firesrc, imgsize, sizeof(imgsize), (UINT *)&mybw);  //先写入高和宽,方便上位机处理
    }
    else
    {
        f_close(&firesrc);
        firesrc.fs = 0;
    }
}
void img_sd_save(u8 * imgaddr)  //存SD
{
#define SD_ONEWRITE_MAX 600
    int   fireres;
    u32 mybw;
    static u8 time = 0;
    u32 size = CAMERA_SIZE;
    if(firesrc.fs != 0)
    {
        time ++;
        while(size > SD_ONEWRITE_MAX)
        {
            fireres = f_write(&firesrc, imgaddr, SD_ONEWRITE_MAX , (UINT *)&mybw);  
            imgaddr +=   SD_ONEWRITE_MAX;  
            size -=  SD_ONEWRITE_MAX;
        }
        
        fireres = f_write(&firesrc, imgaddr, size , (UINT *)&mybw);  
        
        if(fireres != FR_OK)
        {
            f_close(&firesrc);
            firesrc.fs = 0;
        }
        
        if(time > 30)
        {
            time = 0 ;
            f_sync(&firesrc);
        }
    }
}
程序
但总是写不成功,生成了FIRE1.SD文件,里面没有内容,文件大小0KB
调试时,发现程序卡在这里...

问山外哥是什么问题呢?怎么解决呢?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-6-20 21:27:52 | 显示全部楼层
换一下 SD卡试试,用 1G 或者2G 的卡看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 21:36:09 | 显示全部楼层
虚竹 发表于 2013-6-20 21:27
换一下 SD卡试试,用 1G 或者2G 的卡看看

用过2G的..还是有问题...
回复 支持 反对

使用道具 举报

发表于 2013-6-20 22:00:17 | 显示全部楼层
(≥_э_≤) 发表于 2013-6-20 21:36
用过2G的..还是有问题...

先用我们SD卡的测试例程,测试一下是否可用
回复 支持 反对

使用道具 举报

发表于 2013-6-20 22:01:02 | 显示全部楼层
(≥_э_≤) 发表于 2013-6-20 21:36
用过2G的..还是有问题...

如果可用,试下修改下面的宏定义
#define SD_ONEWRITE_MAX 600

改成 500 或者 256 甚至以下
回复 支持 反对

使用道具 举报

发表于 2013-6-20 22:03:06 | 显示全部楼层
有可能是硬件问题导致的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-20 22:44:53 | 显示全部楼层
山外メ雲ジ 发表于 2013-6-20 22:03
有可能是硬件问题导致的

我换了个单片机也不行,行.我试试你说的方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 20:50:14 | 显示全部楼层
山外メ雲ジ 发表于 2013-6-20 22:03
有可能是硬件问题导致的

太棒了,非常感谢
我把那个值改成奇数就成功了...但是又一个可怕的问题,用你们上位机解出来的图片是顺序放的吗?
总是有一帧错误....隔10附图就有一帧错了....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-21 21:39:47 | 显示全部楼层
山外メ雲ジ 发表于 2013-6-20 22:03
有可能是硬件问题导致的

太棒了,非常感谢
非常感谢,我的问题.现在解决了
回复 支持 反对

使用道具 举报

发表于 2013-6-22 11:57:26 | 显示全部楼层
(≥_э_≤) 发表于 2013-6-21 21:39
太棒了,非常感谢
非常感谢,我的问题.现在解决了

怎么解决的?我来学习一下,太棒了,非常感谢
回复 支持 反对

使用道具 举报

发表于 2016-6-20 17:41:01 | 显示全部楼层
问下你是怎么调用的那个代码       里面一些声明不对啊      求教了
回复 支持 反对

使用道具 举报

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

本版积分规则

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