发新帖我要提问
12
返回列表
打印
[牛人杂谈]

SD卡操作

[复制链接]
手机看帖
扫描二维码
随时随地手机跟帖
21
天灵灵地灵灵|  楼主 | 2019-10-21 21:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
/****************************************
*函数名称:SD_GetCID
*输 入:cid_data
arg 命令参数
crc crc 校验值
*输 出:SD 卡返回的响应
*功 能:获取 SD 卡的 CID 信息,包括制造商信息
******************************************/
UINT8 SD_GetCID(UINT8 *cid_data)
{
UINT8 r1;
/* 发 CMD10 命令,读 CID */
r1=SD_SendCmd(CMD10,0,0x01);
if(r1==0x00)
{
/* 接收 16 个字节的数据 */
r1=SD_RecvData(cid_data,16);
}
/* 取消片选 */
SD_DisSelect();
if(r1)
{
return 1;
}
return 0;
}

使用特权

评论回复
22
天灵灵地灵灵|  楼主 | 2019-10-21 21:46 | 只看该作者
[5]CSD(Card-Specific Data)寄存器提供了读写 SD 卡的一些信息。其中的一些单元可以由用户重新编程,CSD 内容非常的丰富,将 SD 卡的所有信息完全描述出来,包含 SD 卡的扇区大小、最大最小读取电流、最大数据传输速率等,具体的 CSD 结构如下:

使用特权

评论回复
23
天灵灵地灵灵|  楼主 | 2019-10-21 21:46 | 只看该作者
/****************************************
*函数名称:SD_GetCSD
*输 入:csd_data 存放 CSD 的内存,至少 16Byte
*输 出:0 NO_ERR
1 错误
*功 能:获取 SD 卡的 CSD 信息,包括容量和速度信息
******************************************/
UINT8 SD_GetCSD(UINT8 *csd_data)
{
UINT8 r1;
/* 发 CMD9 命令,读 CSD */
r1=SD_SendCmd(CMD9,0,0x01);
if(r1==0)
{
/* 接收 16 个字节的数据 */
r1=SD_RecvData(csd_data, 16);
}
/* 取消片选 */
SD_DisSelect();
if(r1)
{
return 1;
}
return 0;
}

使用特权

评论回复
24
天灵灵地灵灵|  楼主 | 2019-10-21 21:47 | 只看该作者
#include "SmartM_M4.h"
/****************************************
*函数名称:main
*输 入:无
*输 出:无
*功 能:函数主体
******************************************/
INT32 main(void)
{
UINT8 buf[512]={0};
UINT8 i=0;
PROTECT_REG
(
/* 系统时钟初始化 */
SYS_Init(PLL_CLOCK);
/* 串口 0 初始化 */
UART0_Init(115200);
)
printf("\r\n================================================ \r\n");
printf("\r\n SD Card Test \r\n");
printf("\r\n SD Card Show CID & CSD \r\n");
printf("\r\n================================================ \r\n");
/* SD Card 初始化 */
while(SD_Initialize())
{
Delayms(500);
printf("Please insert SD Card\r\n");
}
/* SD Card 获取 CID */
SD_GetCID(buf);
printf("\r\nSD Card CID is:");
for(i=0;i<16;i++)
{
printf("%02X",buf[i]);
}
printf("\r\n");
/* SD Card 获取 CSD */
SD_GetCSD(buf);
printf("\r\nSD Card CSD is:");
for(i=0;i<16;i++)
{
printf("%02X",buf[i]);
}
printf("\r\n");
while(1);
}

使用特权

评论回复
25
643757107| | 2019-10-21 22:06 | 只看该作者
很详细,多谢分享。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则