OpenEdv-开源电子网

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

SD 卡写入多个扇区?

[复制链接]

11

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2010-12-21
在线时间
0 小时
发表于 2011-4-18 22:00:03 | 显示全部楼层 |阅读模式
u8 SD_Write_MultiBlock(u32 sector, const u8 *data, u8 count)
{
    u8 r1;
    u16 i;  
      
    if(SD_Type != SD_TYPE_V2HC)
    {
     sector = sector<<9;   
    }
    if(SD_Type != SD_TYPE_MMC) 
     r1 = SD_Send_Command(ACMD23, count, 0x00,RELEASE);   
    
    r1 = SD_Send_Command(CMD25, sector, 0x00,RELEASE);
    if(r1 != 0x00)
     return r1;  
      
    SD_CS_L;    
    SPIx_ReadWrite_Byte(0xff);
    SPIx_ReadWrite_Byte(0xff);  
    SPIx_ReadWrite_Byte(0xff);
     
    do
    {
        
        SPIx_ReadWrite_Byte(0xFC);  
        
        for(i=0;i<512;i++)
        {
            SPIx_ReadWrite_Byte(*data++);
        }
        
        SPIx_ReadWrite_Byte(0xff);
        SPIx_ReadWrite_Byte(0xff);
        
        
        r1 = SPIx_ReadWrite_Byte(0xff);
        if((r1&0x1F)!=0x05)
        {
            SD_CS_H;    
            return r1;
        }   
        
        if(SD_Wait_DataReady()==1)
        {
            SD_CS_H;    
            return 1;
        }   
    }while(--count);  
    
    r1 = SPIx_ReadWrite_Byte(0xFD);
    if(r1==0x00)
    {
        count =  0xfe;  //???????????????????????????????????????
    }   
    if(SD_Wait_DataReady()) //等待数据写入完成
{
SD_CS_H;
return 1;  
}
    
    SD_CS_H;
    SPIx_ReadWrite_Byte(0xff);  
    return count;  
}


上面问号处,是什么意思呢? 

写入停止0xFD后,即   r1 = SPIx_ReadWrite_Byte(0xFD); 如何响应的?     count =  0xfe; 为什么写入的扇区个数为这个值呢? 


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2011-4-18 22:55:02 | 显示全部楼层
回复【楼主位】cybrian:
-------------------------------
这我倒没注意过,copy过来的.呵呵.
重点看看count,是个什么东西,在外部被调用的时候,它有什么用,估计就能找出原因了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

11

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2010-12-21
在线时间
0 小时
 楼主| 发表于 2011-4-19 21:31:38 | 显示全部楼层
回复【2楼】正点原子:
-------------------------------
count就是要写入的扇区个数,看了几次都没弄明白有什么关系~~
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2011-4-19 21:49:16 | 显示全部楼层
回复【3楼】cybrian:
-------------------------------
刚开始进入函数的时候,确实是计数器.但是到了后面,count是一个返回值了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2011-3-4
在线时间
2 小时
发表于 2011-4-22 19:14:49 | 显示全部楼层
请问这个写多个块的驱动通过了吗,原子例程里的读多个块可以,写多个块的写不了
回复 支持 反对

使用道具 举报

12

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
777
金钱
777
注册时间
2012-4-23
在线时间
66 小时
发表于 2012-11-2 22:29:29 | 显示全部楼层

这个SD程序与U盘驱动有多大区别呢?我的U盘被写保护了,格式化也好不了,请问有谁个懂的?

我不相信命运,人定胜天!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-3-1 00:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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