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

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

?? mmc_x_hw.c

?? 這套代碼已經成功一直到S3C44B0X開發板上
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
**********************************************************************
*                          Micrium, Inc.
*                      949 Crestview Circle
*                     Weston,  FL 33327-1848
*
*                            uC/FS
*
*             (c) Copyright 2001 - 2003, Micrium, Inc.
*                      All rights reserved.
*
***********************************************************************

----------------------------------------------------------------------
File        : mmc_x_hw.c
Purpose     : Sample MMC hardware layer for accessing MMC/SD 
              via port banging.
---------------------------END-OF-HEADER------------------------------
*/

/*********************************************************************
*
*             #include Section
*
**********************************************************************
*/

#include "fs_api.h"
#include "fs_conf.h"
#include "fs_port.h"
#include "44b.h"

#if FS_USE_MMC_DRIVER

/* CMD0: response R1 */
#define CMD_GO_IDLE_STATE 0x00
/* CMD1: response R1 */
#define CMD_SEND_OP_COND 0x01
/* CMD8: response R7 */
#define CMD_SEND_IF_COND 0x08
/* 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
/* ACMD41: arg0[31:0]: OCR contents, response R1 */
#define CMD_SD_SEND_OP_COND 0x29
/* CMD42: arg0[31:0]: stuff bits, response R1b */
#define CMD_LOCK_UNLOCK   0x2a
/* CMD55: arg0[31:0]: stuff bits, response R1 */
#define CMD_APP           0x37
/* CMD58: arg0[31:0]: stuff bits, 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

/* status bits for card types */
#define SD_RAW_SPEC_1 0
#define SD_RAW_SPEC_2 1
#define SD_RAW_SPEC_SDHC 2

/* card type state */
static FS_u8 sd_raw_card_type;
/*********************************************************************
*
*             #define Macros
*
**********************************************************************
*/

/*********************************************************************
*
*       Configurable macros
*
*   Please setup these macros according your hardware
*
*/

#define SPI_CS_PORT            rPDATD 
#define SPI_CLK_PORT           rPDATD
#define SPI_DATAOUT_PORT       rPDATD
#define SPI_DATAIN_PORT        rPDATD

#define SPI_CS_PIN             0
#define SPI_CLK_PIN            2
#define SPI_DATAOUT_PIN        1
#define SPI_DATAIN_PIN         3
/*********************************************************************
*
*             #define Macros
*
*/
#define SPI_CLR_CS()          SPI_CS_PORT      &= ~(1 << SPI_CS_PIN)
#define SPI_SET_CS()          SPI_CS_PORT      |=  (1 << SPI_CS_PIN)
#define SPI_CLR_CLK()         SPI_CLK_PORT     &= ~(1 << SPI_CLK_PIN)
#define SPI_SET_CLK()         SPI_CLK_PORT     |=  (1 << SPI_CLK_PIN)
#define SPI_CLR_DATAOUT()     SPI_DATAOUT_PORT &= ~(1 << SPI_DATAOUT_PIN)
#define SPI_SET_DATAOUT()     SPI_DATAOUT_PORT |=  (1 << SPI_DATAOUT_PIN)
#define SPI_DATAIN()          (SPI_DATAIN_PORT &   (1 << SPI_DATAIN_PIN))
#define SPI_SETUP_PINS()


#define MMC_DEFAULTSUPPLYVOLTAGE  3300 /* in mV, example means 3.3V */
#define MMC_MAXFREQUENCY           400 /* 400 KHz                   */

static SPI_Delay_Count=100;
void  SPI_DELAY(void)  {int i=SPI_Delay_Count; while(i-- != 0);}

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/
static volatile int _MaxFreq;


/*********************************************************************
*
*             Local functions
*
**********************************************************************
*/


static void _Init(void) {
  _MaxFreq = MMC_MAXFREQUENCY;
  SPI_SETUP_PINS();
}

/*********************************************************************
*
*             FS_MMC_HW_X_BusyLedOff
*
*  Description:
*    FS low level function. Switches the busy LED off.
*
*  Parameters:
*    Unit      - Device Index
*
*  Return value:
*    void
*/
void FS_MMC_HW_X_BusyLedOff (FS_u8  Unit) {
}

/*********************************************************************
*
*             FS_MMC_HW_X_BusyLedOn
*
*  Description:
*    FS low level function. Switches the busy LED off.
*
*  Parameters:
*    Unit      - Device Index
*
*  Return value:
*    void
*/

void FS_MMC_HW_X_BusyLedOn(FS_u8 Unit) {
}

/*********************************************************************
*
*             FS_MMC_HW_X_EnableCS
*
*  Description:
*    FS low level function. Sets the card slot active using the
*    chip select (CS) line.
*
*  Parameters:
*    Unit      - Device Index
*
*  Return value:
*    void
*/

void FS_MMC_HW_X_EnableCS   (FS_u8 Unit) {
  SPI_CLR_CS();
}

/*********************************************************************
*
*             FS_MMC_HW_X_EnableCS
*
*  Description:
*    FS low level function. Sets the card slot inactive using the
*    chip select (CS) line.
*
*  Parameters:
*    Unit      - Device Index
*
*  Return value:
*    void
*/

void FS_MMC_HW_X_DisableCS(FS_u8 Unit) {
  SPI_SET_CS();
}

/*********************************************************************
*
*             FS_MMC_HW_X_IsWriteProtected
*
*  Description:
*    FS low level function. Returns the state of the physical write
*    protection of the SD cards.
*
*  Parameters:
*    Unit      - Device Index
*
*  Return value:
*    1                - the card is write protected
*    ==0              - the card is not write protected
*/

char FS_MMC_HW_X_IsWriteProtected(FS_u8 Unit) {
  /* If the card slot has no write switch detector, return 0 */
  return 0;
}

/*********************************************************************
*
*             FS_MMC_HW_X_SetMaxSpeed
*
*  Description:
*    FS low level function. Sets the SPI interface to a maximum frequency.
*    Make sure that you set the frequency lower or equal but never higher
*    than the given value. Recommended startup frequency is 100kHz - 400kHz.
*
*  Parameters:
*    Unit       - Device Index
*    MaxFreq           - SPI clock frequency in kHz
*
*  Return value:
*    max. frequency    - the maximum frequency set in kHz
*    ==0               - the frequency could not be set
*/

FS_u16 FS_MMC_HW_X_SetMaxSpeed(FS_u8 Unit, FS_u16 MaxFreq) {
  _Init();
  return MMC_MAXFREQUENCY;    /* We are not faster than this */
}

/*********************************************************************
*
*             FS_MMC_HW_X_SetVoltage

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久99ma| 最近日韩中文字幕| 亚洲日本电影在线| 蜜臀av一级做a爰片久久| 成人美女在线观看| 91精品国产91久久综合桃花| 国产精品毛片a∨一区二区三区| 亚洲一区二区三区视频在线播放| 国产乱一区二区| 欧美一级免费大片| 亚洲日本乱码在线观看| 国产福利不卡视频| 久久你懂得1024| 另类调教123区| 欧美综合在线视频| **网站欧美大片在线观看| 黑人精品欧美一区二区蜜桃| 欧美日韩高清不卡| 亚洲欧美日韩一区二区 | 亚洲精品一区二区三区四区高清 | 欧美xxxx在线观看| 午夜一区二区三区视频| 一本大道av一区二区在线播放 | 欧美精品久久久久久久多人混战| 日韩一区有码在线| 国产成人亚洲综合a∨婷婷图片| 26uuu国产一区二区三区| 午夜精品福利一区二区三区蜜桃| 日本韩国欧美一区二区三区| 亚洲欧洲99久久| 丁香桃色午夜亚洲一区二区三区| 欧美一级欧美三级在线观看| 亚洲成人免费观看| 欧美日韩在线免费视频| 国产精品久久久久久久久搜平片| 丰满岳乱妇一区二区三区| 久久婷婷久久一区二区三区| 久久99日本精品| 国产亚洲一二三区| av电影一区二区| 国产精品国产成人国产三级| 99久久伊人精品| 亚洲最新在线观看| 欧美日本乱大交xxxxx| 日本伊人午夜精品| 精品久久久久香蕉网| 国产毛片精品视频| 中文字幕av一区二区三区| 成人深夜视频在线观看| 亚洲视频一区二区免费在线观看 | 国产欧美视频在线观看| 高清日韩电视剧大全免费| 国产精品区一区二区三区| 本田岬高潮一区二区三区| 亚洲色图都市小说| 欧美天堂亚洲电影院在线播放| 亚洲高清视频在线| 日韩精品一区二区三区老鸭窝 | 国产精品久久久久一区二区三区 | 国产一区二区在线观看免费| 国产视频一区二区三区在线观看 | 欧美日韩国产123区| 老司机免费视频一区二区三区| 91精品国产综合久久精品| 国产另类ts人妖一区二区| 最新国产成人在线观看| 91精品国产综合久久婷婷香蕉| 麻豆国产欧美一区二区三区| 国产精品嫩草影院com| 欧美三级中文字幕在线观看| 精品一区二区三区免费毛片爱| 国产精品系列在线| 欧美日韩在线免费视频| 成人一区二区在线观看| 日韩精品久久久久久| 久久久久久99久久久精品网站| 99久久精品免费精品国产| 奇米777欧美一区二区| 国产欧美一区视频| 欧美日韩国产高清一区二区三区 | 丁香桃色午夜亚洲一区二区三区| 亚洲综合视频网| 国产亚洲一区二区三区四区| 欧美日本国产视频| 99精品国产视频| 久久99精品国产91久久来源| 亚洲综合色婷婷| 亚洲国产成人自拍| 日韩欧美国产综合| 欧美日韩精品一区视频| 成人精品一区二区三区四区 | 亚洲国产精品自拍| 中文字幕av一区二区三区免费看| 欧美电影一区二区三区| 91在线看国产| 成人午夜免费av| 久99久精品视频免费观看| 亚洲一区自拍偷拍| 国产精品女同互慰在线看| 精品99999| 日韩丝袜情趣美女图片| 欧美在线免费视屏| av一区二区不卡| 国产白丝网站精品污在线入口| 美国三级日本三级久久99| 午夜精品福利一区二区三区蜜桃| 亚洲欧美欧美一区二区三区| 久久午夜免费电影| 欧美本精品男人aⅴ天堂| 91精品午夜视频| 91麻豆精品国产91久久久久| 在线精品观看国产| 91福利资源站| 91福利在线导航| 在线中文字幕一区| 欧洲av一区二区嗯嗯嗯啊| 91免费看`日韩一区二区| 粉嫩13p一区二区三区| 国产在线一区二区综合免费视频| 美女在线观看视频一区二区| 青青青爽久久午夜综合久久午夜 | 亚洲美女屁股眼交| 亚洲欧洲国产日韩| 一区二区三区不卡在线观看 | 日韩国产精品久久| 石原莉奈在线亚洲二区| 久久99国产乱子伦精品免费| 日本欧美加勒比视频| 日本欧美一区二区在线观看| 免费在线观看日韩欧美| 久久激情综合网| 国产精品一区二区果冻传媒| 顶级嫩模精品视频在线看| 99这里只有精品| 91丨porny丨国产入口| 欧洲一区二区三区在线| 在线91免费看| 久久在线观看免费| 亚洲蜜桃精久久久久久久| 午夜精品久久久久久久久久久| 日韩电影在线一区二区| 精品亚洲免费视频| av中文字幕亚洲| 欧美综合亚洲图片综合区| 91精品国产黑色紧身裤美女| 国产三级一区二区| 亚洲精品免费在线播放| 首页国产欧美久久| 国产乱子伦一区二区三区国色天香| 成人午夜看片网址| 欧美精品亚洲一区二区在线播放| 久久久久88色偷偷免费| 亚洲日本在线视频观看| 午夜精彩视频在线观看不卡| 粉嫩aⅴ一区二区三区四区| 欧美中文字幕一二三区视频| 日韩视频免费观看高清在线视频| 国产亚洲精品福利| 午夜精品久久久久久久蜜桃app | 26uuu精品一区二区| 亚洲女子a中天字幕| 久久精品99国产精品| 91最新地址在线播放| 欧美一级免费大片| 伊人一区二区三区| 国产乱一区二区| 欧美少妇bbb| 国产精品久久看| 麻豆精品一二三| 欧美视频一区二区在线观看| 久久久久久久久一| 亚洲电影一级片| eeuss鲁片一区二区三区在线看 | 欧美日韩国产天堂| 日本一区二区三区四区| 日本三级亚洲精品| 欧美伊人精品成人久久综合97| 国产欧美日韩视频在线观看| 日韩制服丝袜先锋影音| 欧亚一区二区三区| 亚洲日本丝袜连裤袜办公室| 国产高清久久久久| 日韩欧美一区二区不卡| 五月激情六月综合| 色综合久久天天| 中文字幕一区二区三区四区| 狠狠色综合播放一区二区| 欧美日韩一区国产| 亚洲第一电影网| 91精品1区2区| 亚洲欧美激情一区二区| 国产成人精品免费在线| 欧美大片在线观看一区二区| 日韩精品欧美精品| 6080午夜不卡| 天天影视网天天综合色在线播放| 91成人看片片| 亚洲一区二区在线播放相泽| 91麻豆国产在线观看| 国产精品欧美极品|