亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sd_mmc_spi.h

?? SD卡調試所用的資料
?? H
字號:


/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _SD_MMC_SPI_H
#define _SD_MMC_SPI_H


/* Includes ------------------------------------------------------------------*/
#include "main.h"


/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/

#define SD_MMC_SPI_CS                  GPIOD
#define RCC_APB2Periph_SD_MMC_SPI_CS   RCC_APB2Periph_GPIOD
#define SD_MMC_SPI_CS_Pin_CS           GPIO_Pin_9 

/* CMD0: response R1 */
#define CMD_GO_IDLE_STATE 0x00
/* CMD1: response R1 */
#define CMD_SEND_OP_COND 0x01
/* CMD9: response R1 */
#define CMD_SEND_CSD 0x09
/* CMD10: response R1 */
#define CMD_SEND_CID 0x0a
/* CMD12: response R1 */
#define CMD_STOP_TRANSMISSION 0x0c
/* CMD13: response R2 */
#define CMD_SEND_STATUS 0x0d
/* CMD16: arg0[31:0]: block length, response R1 */
#define CMD_SET_BLOCKLEN 0x10
/* CMD17: arg0[31:0]: data address, response R1 */
#define CMD_READ_SINGLE_BLOCK 0x11
/* CMD18: arg0[31:0]: data address, response R1 */
#define CMD_READ_MULTIPLE_BLOCK 0x12
/* CMD24: arg0[31:0]: data address, response R1 */
#define CMD_WRITE_SINGLE_BLOCK 0x18
/* CMD25: arg0[31:0]: data address, response R1 */
#define CMD_WRITE_MULTIPLE_BLOCK 0x19
/* CMD27: response R1 */
#define CMD_PROGRAM_CSD 0x1b
/* CMD28: arg0[31:0]: data address, response R1b */
#define CMD_SET_WRITE_PROT 0x1c
/* CMD29: arg0[31:0]: data address, response R1b */
#define CMD_CLR_WRITE_PROT 0x1d
/* CMD30: arg0[31:0]: write protect data address, response R1 */
#define CMD_SEND_WRITE_PROT 0x1e
/* CMD32: arg0[31:0]: data address, response R1 */
#define CMD_TAG_SECTOR_START 0x20
/* CMD33: arg0[31:0]: data address, response R1 */
#define CMD_TAG_SECTOR_END 0x21
/* CMD34: arg0[31:0]: data address, response R1 */
#define CMD_UNTAG_SECTOR 0x22
/* CMD35: arg0[31:0]: data address, response R1 */
#define CMD_TAG_ERASE_GROUP_START 0x23
/* CMD36: arg0[31:0]: data address, response R1 */
#define CMD_TAG_ERASE_GROUP_END 0x24
/* CMD37: arg0[31:0]: data address, response R1 */
#define CMD_UNTAG_ERASE_GROUP 0x25
/* CMD38: arg0[31:0]: stuff bits, response R1b */
#define CMD_ERASE 0x26
/* CMD42: arg0[31:0]: stuff bits, response R1b */
#define CMD_LOCK_UNLOCK 0x2a
/* CMD58: response R3 */
#define CMD_READ_OCR 0x3a
/* CMD59: arg0[31:1]: stuff bits, arg0[0:0]: crc option, response R1 */
#define CMD_CRC_ON_OFF 0x3b

/* command responses */
/* R1: size 1 byte */
#define R1_IDLE_STATE 0
#define R1_ERASE_RESET 1
#define R1_ILL_COMMAND 2
#define R1_COM_CRC_ERR 3
#define R1_ERASE_SEQ_ERR 4
#define R1_ADDR_ERR 5
#define R1_PARAM_ERR 6
/* R1b: equals R1, additional busy bytes */
/* R2: size 2 bytes */
#define R2_CARD_LOCKED 0
#define R2_WP_ERASE_SKIP 1
#define R2_ERR 2
#define R2_CARD_ERR 3
#define R2_CARD_ECC_FAIL 4
#define R2_WP_VIOLATION 5
#define R2_INVAL_ERASE 6
#define R2_OUT_OF_RANGE 7
#define R2_CSD_OVERWRITE 7
#define R2_IDLE_STATE (R1_IDLE_STATE + 8)
#define R2_ERASE_RESET (R1_ERASE_RESET + 8)
#define R2_ILL_COMMAND (R1_ILL_COMMAND + 8)
#define R2_COM_CRC_ERR (R1_COM_CRC_ERR + 8)
#define R2_ERASE_SEQ_ERR (R1_ERASE_SEQ_ERR + 8)
#define R2_ADDR_ERR (R1_ADDR_ERR + 8)
#define R2_PARAM_ERR (R1_PARAM_ERR + 8)
/* R3: size 5 bytes */
#define R3_OCR_MASK (0xffffffffUL)
#define R3_IDLE_STATE (R1_IDLE_STATE + 32)
#define R3_ERASE_RESET (R1_ERASE_RESET + 32)
#define R3_ILL_COMMAND (R1_ILL_COMMAND + 32)
#define R3_COM_CRC_ERR (R1_COM_CRC_ERR + 32)
#define R3_ERASE_SEQ_ERR (R1_ERASE_SEQ_ERR + 32)
#define R3_ADDR_ERR (R1_ADDR_ERR + 32)
#define R3_PARAM_ERR (R1_PARAM_ERR + 32)
/* Data Response: size 1 byte */
#define DR_STATUS_MASK 0x0e
#define DR_STATUS_ACCEPTED 0x05
#define DR_STATUS_CRC_ERR 0x0a
#define DR_STATUS_WRITE_ERR 0x0c

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/





/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/
u8 SD_MMC_SPI_Init(void);
u8 SPI1_SendByte(u8 byte);
u8 SD_MMC_ReadWrite_Byte(u8 ch);
void SD_MMC_Low_Speed(void);
void SD_MMC_High_Speed(void);
u8 SD_MMC_Send_Command(u8 cmd, u32 arg);
u8 SD_MMC_Read_Single_Block(u32 sector, u8* buffer);
u8 SD_MMC_Write_Single_Block(u32 sector, u8* buffer);
void SD_MMC_Power_On_Off(u8 On_Off);


///////////////////////////////////////////////////////////////////////////////////


/**
 * \ingroup sd_raw_config
 * Controls MMC/SD write support.
 *
 * Set to 1 to enable MMC/SD write support, set to 0 to disable it.
 */
#define SD_RAW_WRITE_SUPPORT 1

/**
 * \ingroup sd_raw_config
 * Controls MMC/SD write buffering.
 *
 * Set to 1 to buffer write accesses, set to 0 to disable it.
 *
 * \note This option has no effect when SD_RAW_WRITE_SUPPORT is 0.
 */
#define SD_RAW_WRITE_BUFFERING 1

/**
 * \ingroup sd_raw_config
 * Controls MMC/SD access buffering.
 *
 * Set to 1 to save static RAM, but be aware that you will
 * lose performance.
 *
 * \note When SD_RAW_WRITE_SUPPORT is 1, SD_RAW_SAVE_RAM will
 *       be reset to 0.
 */
#define SD_RAW_SAVE_RAM 0

/* configuration checks */
#if SD_RAW_WRITE_SUPPORT
#undef SD_RAW_SAVE_RAM
#define SD_RAW_SAVE_RAM 0
#else
#undef SD_RAW_WRITE_BUFFERING
#define SD_RAW_WRITE_BUFFERING 0
#endif


//////////////////////////////////////////////////////////////////////////////////////
/**
 * \addtogroup sd_raw
 *
 * @{
 */
/**
 * \file
 * MMC/SD raw access header (license: GPLv2 or LGPLv2.1)
 *
 * \author Roland Riegel
 */

/**
 * The card's layout is harddisk-like, which means it contains
 * a master boot record with a partition table.
 */
#define SD_RAW_FORMAT_HARDDISK 0
/**
 * The card contains a single filesystem and no partition table.
 */
#define SD_RAW_FORMAT_SUPERFLOPPY 1
/**
 * The card's layout follows the Universal File Format.
 */
#define SD_RAW_FORMAT_UNIVERSAL 2
/**
 * The card's layout is unknown.
 */
#define SD_RAW_FORMAT_UNKNOWN 3

/**
 * This struct is used by sd_raw_get_info() to return
 * manufacturing and status information of the card.
 */
struct sd_raw_info
{
    /**
     * A manufacturer code globally assigned by the SD card organization.
     */
    u8 manufacturer;
    /**
     * A string describing the card's OEM or content, globally assigned by the SD card organization.
     */
    u8 oem[3];
    /**
     * A product name.
     */
    u8 product[6];
    /**
     * The card's revision, coded in packed BCD.
     *
     * For example, the revision value \c 0x32 means "3.2".
     */
    u8 revision;
    /**
     * A serial number assigned by the manufacturer.
     */
    u32 serial;
    /**
     * The year of manufacturing.
     *
     * A value of zero means year 2000.
     */
    u8 manufacturing_year;
    /**
     * The month of manufacturing.
     */
    u8 manufacturing_month;
    /**
     * The card's total capacity in bytes.
     */
    u32 capacity;
    /**
     * Defines wether the card's content is original or copied.
     *
     * A value of \c 0 means original, \c 1 means copied.
     */
    u8 flag_copy;
    /**
     * Defines wether the card's content is write-protected.
     *
     * \note This is an internal flag and does not represent the
     *       state of the card's mechanical write-protect switch.
     */
    u8 flag_write_protect;
    /**
     * Defines wether the card's content is temporarily write-protected.
     *
     * \note This is an internal flag and does not represent the
     *       state of the card's mechanical write-protect switch.
     */
    u8 flag_write_protect_temp;
    /**
     * The card's data layout.
     *
     * See the \c SD_RAW_FORMAT_* constants for details.
     *
     * \note This value is not guaranteed to match reality.
     */
    u8 format;
};

typedef u8 (*sd_raw_read_interval_handler_t)(u8* buffer, u32 offset, void* p);
typedef u16 (*sd_raw_write_interval_handler_t)(u8* buffer, u32 offset, void* p);

u8 sd_raw_init();
u8 SD_Raw_Available();
u8 SD_Raw_Locked();

u8 SD_Raw_Read(u32 offset, u8* buffer, u16 length);
u8 SD_Raw_Read_Interval(u32 offset, u8* buffer, u16 interval, u16 length, sd_raw_read_interval_handler_t callback, void* p);
u8 SD_Raw_Write(u32 offset, const u8* buffer, u16 length);
u8 SD_Raw_Write_Interval(u32 offset, u8* buffer, u16 length, sd_raw_write_interval_handler_t callback, void* p);
u8 SD_Raw_Sync();

u8 SD_Raw_Get_Info(struct sd_raw_info* info);

///////////////////////////////////////////////////////////////////////////////////


#endif /* _SD_MMC_SPI_H */





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av综合一区| 成人综合婷婷国产精品久久| 中文字幕一区不卡| 国产日韩成人精品| 欧美r级电影在线观看| 欧美日韩国产大片| 欧美日韩一区二区三区免费看| 成人av在线电影| 91一区二区在线| aaa欧美日韩| 色综合网站在线| 在线亚洲一区二区| 欧美日韩在线综合| 5858s免费视频成人| 91精品黄色片免费大全| 91精品欧美一区二区三区综合在| 91精品国产综合久久国产大片| 日韩欧美国产成人一区二区| 精品少妇一区二区三区在线播放 | 亚洲成人免费电影| 日精品一区二区三区| 日韩av一区二区三区四区| 日韩av中文字幕一区二区| 国产精品一区免费在线观看| 国产精品中文有码| 色综合久久九月婷婷色综合| 欧美日韩免费视频| 国产视频在线观看一区二区三区 | 亚洲国产精品久久一线不卡| 首页亚洲欧美制服丝腿| 韩国v欧美v亚洲v日本v| 不卡的av网站| 日韩一区二区精品葵司在线| 国产欧美日韩亚州综合| 亚洲一区二区在线免费观看视频| 免费黄网站欧美| 男女性色大片免费观看一区二区 | 日韩欧美国产三级| 日韩av网站免费在线| 欧美人妇做爰xxxⅹ性高电影| 亚洲午夜电影在线观看| 欧美日韩高清在线播放| 午夜电影网一区| 在线91免费看| 久久66热re国产| 久久久久久久精| 成人激情免费网站| 亚洲精品日日夜夜| 欧美日韩五月天| 老色鬼精品视频在线观看播放| www成人在线观看| 成人晚上爱看视频| 一区二区三区资源| 91精品国产综合久久久久久久| 免费成人在线影院| 国产精品天美传媒| 在线看日本不卡| 麻豆视频一区二区| 国产精品美女久久久久久久网站| 91一区一区三区| 奇米在线7777在线精品| 成人综合婷婷国产精品久久| 精品乱人伦一区二区三区| 国产乱人伦偷精品视频免下载 | 日韩亚洲欧美高清| 国产成人精品免费在线| 亚洲色图另类专区| 91精品久久久久久久91蜜桃| 国产激情一区二区三区| 亚洲免费在线观看视频| 精品久久久久99| zzijzzij亚洲日本少妇熟睡| 日本不卡视频在线观看| 亚洲国产高清不卡| 欧美一区三区四区| av亚洲精华国产精华| 美女高潮久久久| 亚洲女人的天堂| 精品国产亚洲一区二区三区在线观看| 99麻豆久久久国产精品免费优播| 视频一区二区三区在线| 亚洲国产高清在线观看视频| 91精品国产综合久久精品图片| 99久久精品国产观看| 日韩不卡免费视频| 一区二区三区在线观看欧美| 国产人成一区二区三区影院| 91精品国产综合久久久久久| 91小视频在线免费看| 国产传媒一区在线| 日本伊人色综合网| 亚洲一区在线观看网站| 国产精品女人毛片| 欧美精品一区二区高清在线观看| 欧美在线观看禁18| 99国产精品国产精品毛片| 久草热8精品视频在线观看| 亚洲成人免费电影| 亚洲男同1069视频| 中文字幕一区二区三区不卡在线 | 中文无字幕一区二区三区| 这里只有精品视频在线观看| 色猫猫国产区一区二在线视频| 成人午夜在线免费| 国产真实精品久久二三区| 日本成人在线看| 午夜欧美视频在线观看| 亚洲国产成人av| 一区二区三区久久| 一个色在线综合| 亚洲另类春色校园小说| 亚洲色图.com| 综合亚洲深深色噜噜狠狠网站| 亚洲国产成人在线| 国产精品午夜在线| 国产精品污污网站在线观看| 欧美激情在线看| 国产欧美日韩卡一| 国产精品视频在线看| 国产精品国产三级国产普通话三级| 久久久美女艺术照精彩视频福利播放| 日韩视频免费观看高清在线视频| 欧美日韩美少妇| 日韩一区和二区| 久久综合久久综合九色| 久久亚洲一级片| 国产精品福利av | 久久久九九九九| 国产欧美日本一区视频| 国产精品久久免费看| 综合久久综合久久| 亚洲成人av福利| 午夜av电影一区| 韩国成人在线视频| 菠萝蜜视频在线观看一区| 色综合天天综合网天天看片| 欧美中文字幕一区二区三区| 91精品国产综合久久蜜臀| 精品国精品自拍自在线| 国产精品无遮挡| 亚洲国产精品一区二区久久| 美女一区二区三区在线观看| 国产不卡在线视频| 91豆麻精品91久久久久久| 91精品国产91久久综合桃花| 国产亚洲精品精华液| 亚洲啪啪综合av一区二区三区| 日本中文在线一区| 成人中文字幕在线| 欧美另类高清zo欧美| 精品国产99国产精品| 亚洲少妇30p| 精品一区二区久久久| 一本一道久久a久久精品| 日韩欧美一区二区在线视频| 国产精品视频在线看| 日韩电影在线一区二区三区| 国产盗摄一区二区| 欧美日韩精品一区视频| 中文字幕乱码日本亚洲一区二区 | 精品亚洲国内自在自线福利| jlzzjlzz亚洲日本少妇| 欧美老女人在线| 国产精品理论在线观看| 蜜桃av一区二区| 成人h精品动漫一区二区三区| 欧美精品自拍偷拍| 国产精品美女久久福利网站| 天堂影院一区二区| 色综合天天综合在线视频| 久久品道一品道久久精品| 午夜成人免费电影| 色婷婷激情久久| 欧美国产丝袜视频| 久久国产免费看| 欧美日韩国产一区二区三区地区| 国产精品久久久爽爽爽麻豆色哟哟 | 欧美成人女星排行榜| 亚洲综合男人的天堂| 成人午夜看片网址| 亚洲精品在线网站| 午夜成人免费电影| 欧美日韩高清一区二区三区| 一区二区三区在线影院| 国产成人午夜视频| 欧美tk—视频vk| 免费观看91视频大全| 欧美精品777| 亚洲影视在线播放| 色天天综合色天天久久| 国产精品久久久久影院亚瑟| 国产精品99久久久| 精品va天堂亚洲国产| 日本成人中文字幕在线视频| 欧美三级电影在线看| 亚洲一区中文在线| 在线观看av一区| 亚洲一区二区欧美日韩| 欧美视频一区在线观看| 亚洲综合激情另类小说区|