📄 sdcmd.h
字号:
/****************************************Copyright (c)**************************************************** Guangzhou ZHIYUAN electronics Co.,LTD.** ** http://www.zyinside.com****--------------File Info-------------------------------------------------------------------------------** File Name: sdcmd.h** Last modified Date: 2006.01.09** Last Version: V1.0 ** Description: SD/MMC卡支持的命令(头文件) ** commands that sd/mmc card supported(header file)**------------------------------------------------------------------------------------------------------** Created By: Ming Yuan Zheng 郑明远** Created date: 2006.01.09** Version: V1.0** Descriptions: The original version 初始版本****------------------------------------------------------------------------------------------------------** Modified by:** Modified date:** Version:** Description:**********************************************************************************************************/#ifndef __SDCMD_H__ #define __SDCMD_H__/* ******************************************************* SD 卡的相关命令与响应宏定义 ********************************************************//* 命令响应定义 define command's response */#define R0 0 /* 用于SD模式 */#define R1 1#define R1B 2#define R2 3#define R3 4#define R6 7#define CARDSTATUS_ERR_MSK3 0xFF#define CARDSTATUS_ERR_MSK2 0xF9#define CARDSTATUS_ERR_MSK1 0xE0#define CARDSTATUS_ERR_MSK0 0x08#define SD_CRC_STATUS_MSK 0x1C#define SD_CRC_STATUS_OK 0x08 /********************************************** SD卡 命令集**********************************************//******************************** 基本命令集 Basic command set **************************//* 复位SD 卡 Reset cards to idle state */#define CMD0 0#define CMD0_R R0/* 读所有SD总线上的SD卡的CID寄存器 asks any device to send their CID numbers on the CMD Line*/#define CMD1 1#define CMD1_R R3/* 读所有SD总线上的SD卡的CID寄存器 asks any device to send their CID numbers on the CMD Line*/#define CMD2 2#define CMD2_R R2/* 要求设备发送一个新的相对地址 asks the device to publish a new relative adderss */#define CMD3 3#define CMD3_R R6/* 选择/断开选择卡 select/deselect card */#define CMD7 7#define CMD7_R R1/* 读CSD寄存器 Card sends the CSD */#define CMD9 9#define CMD9_R R2/* 读CID寄存器 Card sends CID */#define CMD10 10#define CMD10_R R2/* 停止读多块时的数据传输 Stop a multiple block (stream) read/write operation */#define CMD12 12#define CMD12_R R1B/* 读 Card_Status 寄存器 Get the addressed card's status register */#define CMD13 13#define CMD13_R R1/* 设置设备处于停止状态 set the device to inactive state */#define CMD15 15#define CMD15_R R0/* 设置块的长度 Set the block length */#define CMD16 16#define CMD16_R R1/* 读单块 Read a single block */#define CMD17 17#define CMD17_R R1/* 读多块,直至主机发送CMD12为止 Read multiple blocks until a CMD12 */#define CMD18 18#define CMD18_R R1/***************************** 块写命令集 Block write commands *************************//* 写单块 Write a block of the size selected with CMD16 */#define CMD24 24#define CMD24_R R1/* 写多块 Multiple block write until a CMD12 */#define CMD25 25#define CMD25_R R1/* 写CSD寄存器 Program the programmable bits of the CSD */#define CMD27 27#define CMD27_R R1/***************************** 写保护 Write protection *****************************//* Set the write protection bit of the addressed group */#define CMD28 28#define CMD28_R R1B/* Clear the write protection bit of the addressed group */#define CMD29 29#define CMD29_R R1B/* Ask the card for the status of the write protection bits */#define CMD30 30#define CMD30_R R1/***************************** 擦除命令 Erase commands *******************************//* 设置擦除块的起始地址 Set the address of the first write block to be erased */#define CMD32 32#define CMD32_R R1/* 设置擦除块的终止地址 Set the address of the last write block to be erased */#define CMD33 33#define CMD33_R R1/* 擦除所选择的块 Erase the selected write blocks */#define CMD38 38#define CMD38_R R1B/***************************** 锁卡命令 Lock Card commands ***************************//* 设置/复位密码或上锁/解锁卡 Set/reset the password or lock/unlock the card */#define CMD42 42#define CMD42_R R1B/* Commands from 42 to 54, not defined here *//***************************** 应用命令 Application-specific commands ****************//* 禁止下一个命令为应用命令 Flag that the next command is application-specific */#define CMD55 55#define CMD55_R R1/* 应用命令的通用I/O General purpose I/O for application-specific commands */#define CMD56 56#define CMD56_R R1/* 读OCR寄存器,只用于SPI模式 Read the OCR (SPI mode only) */#define CMD58 58#define CMD58_R R3/* 使能或禁止 CRC Turn CRC on or off */ //SD卡没有此功能#define CMD59 59 //SD卡没有此功能#define CMD59_R R1 //SD卡没有此功能/***************************** 应用命令 Application-specific commands ***************/#define ACMD6 6#define ACMD6_R R1/* 获取 SD Status寄存器 Get the SD card's status */#define ACMD13 13#define ACMD13_R R1/* 得到已写入卡中的块的个数 Get the number of written write blocks (Minus errors ) */#define ACMD22 22#define ACMD22_R R1/* 在写之前,设置预先擦除的块的个数 Set the number of write blocks to be pre-erased before writing */#define ACMD23 23#define ACMD23_R R1/* 读取OCR寄存器 Get the card's OCR (SD mode) */#define ACMD41 41#define ACMD41_R R3/* 连接/断开CD/DATA[3]引脚上的上拉电阻 Connect or disconnect the 50kOhm internal pull-up on CD/DAT[3] */#define ACMD42 42#define ACMD42_R R1/* 读取SCR寄存器 Get the SD configuration register */#define ACMD51 51#define ACMD51_R R1INT8U SD_SendCommand(INT8U cmd, INT32U param, INT8U resptype, INT8U *resp);INT8U SD_JudgeResult(INT8U *CardStatus);void word_to_byte(INT32U value, INT8U *pdst);INT8U SD_ResetSD(void);INT8U SD_BlockCommand(INT8U cmd, INT8U resptype, INT32U parameter);/* 读SD卡的CSD寄存器 read CSD register of sd card */INT8U SD_ReadCSD(INT16U RCA, INT8U csdlen, INT8U *recbuf);INT8U SD_ReadAllCID(INT8U cidlen, INT8U *recbuf);/* 读SD卡的CID寄存器 read CID register of sd card */ INT8U SD_ReadCID(INT16U RCA, INT8U cidlen, INT8U *recbuf);INT8U SD_GetRCA(INT8U card_type, INT16U *RCA);INT8U SD_SelectCard(INT16U RCA);INT8U SD_DeSelectCard(void);INT8U SD_StopTransmission(void);INT8U SD_GoInactive(INT16U RCA);//INT8U SD_SetBlockLen(INT32U length);INT8U SD_SetBlockLen(INT16U RCA, INT32U length);INT8U SD_ReadSingleBlock(INT32U blockaddr);INT8U SD_WriteSingleBlock(INT32U blockaddr);/* 读操作条件寄存器OCR read OCR register of sd card */INT8U SD_ReadOCR(INT8U ocrlen, INT8U *recbuf);INT8U MMC_ReadOCR(INT8U ocrlen, INT8U *recbuf);INT8U SD_SetBusWidth(INT16U RCA, INT32U bwidth);INT8U SD_ReadBlockData(INT32U len, INT8U *recbuf,INT32U timeout);INT8U SD_WriteBlockData(INT8U bmulti, INT32U len, INT8U *sendbuf, INT32U timeout); #endif/*********************************************************************************************************** End Of File**********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -