OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6461|回复: 8

问个51中SD卡的问题

[复制链接]

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-7-31
在线时间
2 小时
发表于 2013-5-1 09:38:22 | 显示全部楼层 |阅读模式
 


如上图:所有测试都成功,最后读写SD卡测试失败!!请看我main中代码:
         void main()
{
    int i=0;
    unsigned char flag=0;
    p34=0; //open com & GND
// ea=0;
    delay(1);
    p34=1; // close com & GND
    DE_RE=0;
  
    Uart_port_Init();
    UART_Send_Str("串口设置完毕\r\n");
   
    SD_Reset();
    UART_Send_Str("SD卡复位完毕\r\n");
    SD_Init();
    UART_Send_Str("SD卡初始化完毕\r\n");

    for(i=0;i<512;i++)
            pbuf=i;
    UART_Send_Str("向数组缓冲区装入数据完毕\r\n");

    SD_Write_Sector(ADDR,pbuf);
    UART_Send_Str("写SD卡扇区完毕\r\n");

    for(i=0;i<512;i++)
           pbuf=0;
    UART_Send_Str("清空缓冲区完毕\r\n");
 /*   for(i=0;i<512;i++)
    {
     if(i<256)
     {
         pbuf=i;
     }
     else
     {
        pbuf=i-255;
       
     }
    }*/
    SD_Read_Sector(ADDR,pbuf);
    UART_Send_Str("读取SD卡扇区完毕\r\n");

    for(i=0;i<512;i++)
    {

     if(((unsigned char)i)!=pbuf)
     {
          flag=1;
          break;
     }
    }
    UART_Send_Str("数据匹配完毕\r\n");

    if(flag)
    {
        UART_Send_Str("SD卡扇区读写测试失败!\r\n");
    }
    else
    {
        UART_Send_Str("SD卡扇区读写测试成功!\r\n");
    }
    while(1);

求路过大神们给分析下?谢谢!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-5-1 10:29:47 | 显示全部楼层
回复【楼主位】overlordtony:
---------------------------------
你这里面很多步骤都是不痛不痒的。
当然不会报错,原因很可能出在SD卡写这里。
也就是:SD_Write_Sector(ADDR,pbuf);
话说,你这些函数都没有返回值的?
通过返回值判断函数有没有执行成功,比较可靠,你这printf,完全就是在观察代码有没有运行到某一行,至于运行的代码有没有什么问题,完全不知道。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-7-31
在线时间
2 小时
 楼主| 发表于 2013-5-1 11:47:01 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
谢谢原子哥!!!
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-7-31
在线时间
2 小时
 楼主| 发表于 2013-5-1 12:13:13 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
接着问个问题:
     因为我单片机的RAM是256字节,SD每一扇区是512字节的,我定义了unsigned char xdata pbuf[512]
        这个定义是不是也存在问题?求教原子哥。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-5-1 14:05:10 | 显示全部楼层
回复【4楼】overlordtony:
---------------------------------
你的单片机有xdata么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-5-1 14:05:22 | 显示全部楼层
就是说外扩了ram么?
如果没外扩,那就死了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-7-31
在线时间
2 小时
 楼主| 发表于 2013-5-1 15:02:16 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
人家的板子,我查了下没有外扩。对于256RAM该怎么读取数据啊??
分二次???二次的读取该怎么定义代码呢??谢谢!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-5-1 19:07:14 | 显示全部楼层
回复【7楼】overlordtony:
---------------------------------
256字节的,没考虑过,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2012-7-31
在线时间
2 小时
 楼主| 发表于 2013-5-2 10:01:04 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
55555555555555555.............................
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 11:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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