初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2013-8-28
- 在线时间
- 0 小时
|
5金钱
求助原子哥,下面发送命令的“cmd|0x40”是什么意思啊?
//向SD卡发送一个命令
//输入: u8 cmd 命令
// u32 arg 命令参数
// u8 crc crc校验值
//返回值:SD卡返回的响应
u8 SD_SendCmd(u8 cmd, u32 arg, u8 crc)
{
u8 r1;
u8 Retry=0;
SD_DisSelect();//取消上次片选
if(SD_Select())return 0XFF;//片选失效
//发送
SD_SPI_ReadWriteByte(cmd | 0x40);//分别写入命令
SD_SPI_ReadWriteByte(arg >> 24);
SD_SPI_ReadWriteByte(arg >> 16);
SD_SPI_ReadWriteByte(arg >> 8);
SD_SPI_ReadWriteByte(arg);
SD_SPI_ReadWriteByte(crc);
if(cmd==CMD12)SD_SPI_ReadWriteByte(0xff);//Skip a stuff byte when stop reading
//等待响应,或超时退出
Retry=0X1F;
do
{
r1=SD_SPI_ReadWriteByte(0xFF);
}while((r1&0X80) && Retry--);
//返回状态值
return r1;
}
|
最佳答案
查看完整内容[请看2#楼]
SD卡的指令由6个字节组成,字节1的最高2位固定为01,低6位为命令号(比如CMD16,
为10000B即16进制的0X10,完整的CMD16,第一个字节为01010000,即0X10+0X40)。
要仔细的看文档呀。
|