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

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

?? sdmmc.c

?? IAR5.2下 AT91SAM9260 ARM 對 MCP2515 控制源化碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    pCommand->cmd = AT91C_ALL_SEND_CID_CMD;
    pCommand->resSize = 4;
    pCommand->pResp = pCid;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send the command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Asks The card to publish a new relative address.
/// Returns the command transfer result (see SendCommand).
/// \param pSd  Pointer to a SD card driver instance.
//------------------------------------------------------------------------------
static unsigned char Cmd3(SdCard *pSd)
{
    MciCmd *pCommand = &(pSd->command);
    unsigned int cardAddress;
    unsigned char error;

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_SET_RELATIVE_ADDR_CMD;
    // Assign relative address to MMC card
    if (pSd->cardType == CARD_MMC) {
        pCommand->arg = (0x1 << 16);
    }
    pCommand->resSize = 1;
    pCommand->pResp = &cardAddress;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    error = SendCommand(pSd);
    if (error) {

        return error;
    }

    // Save card address in driver
    if (pSd->cardType != CARD_MMC) {
        pSd->cardAddress = (cardAddress >> 16) & 0xFFFF;
    }
    else {
        // Default MMC RCA is 0x0001
        pSd->cardAddress = 1;
    }

    return 0;
}

//------------------------------------------------------------------------------
/// Toggles a card between the stand-by and the transfer states or between the
/// programming and disconnects states.
/// Returns the command transfer result (see SendCommand).
/// \param pSd  Pointer to a SD card driver instance.
/// \param address  Relative Card Address (0 deselects all).
//------------------------------------------------------------------------------
static unsigned char Cmd7(SdCard *pSd, unsigned int address)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_SEL_DESEL_CARD_CMD;
    pCommand->arg = address << 16;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Voltage check.
/// Returns 0 if successful; otherwise returns SD_ERROR_NORESPONSE if the card did
/// not answer the command, or SD_ERROR_MCI.
/// \param pSd  Pointer to a SD card driver instance.
/// \param supplyVoltage  Expected supply voltage.
//------------------------------------------------------------------------------
static unsigned char Cmd8(SdCard *pSd, unsigned char supplyVoltage)
{
    MciCmd *pCommand = &(pSd->command);
    unsigned int response;
    unsigned char error;

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_SEND_IF_COND;
    pCommand->arg = (supplyVoltage << 8) | (0xAA);
    pCommand->resSize    = 1;
    pCommand->pResp      = &response;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    error = SendCommand(pSd);

    // Check result
    if (error == MCI_STATUS_NORESPONSE) {

        return SD_ERROR_NORESPONSE;
    }
    else if (!error && (response == ((supplyVoltage << 8) | 0xAA))) {

        return 0;
    }
    else {

        return SD_ERROR_MCI;
    }
}

//------------------------------------------------------------------------------
/// Addressed card sends its card specific data.
/// Returns the command transfer result (see SendCommand).
/// \param pSd  Pointer to a SD card driver instance.
//------------------------------------------------------------------------------
static unsigned char Cmd9(SdCard *pSd)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_SEND_CSD_CMD;
    pCommand->arg = pSd->cardAddress << 16;
    pCommand->resSize = 4;
    pCommand->pResp = pSd->csd;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Forces the card to stop transmission.
/// \param pSd  Pointer to a SD card driver instance.
/// \param pStatus  Pointer to a status variable.
//------------------------------------------------------------------------------
static unsigned char Cmd12(SdCard *pSd)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_STOP_TRANSMISSION_CMD;
    pCommand->conTrans = MCI_NEW_TRANSFER;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Addressed card sends its status register.
/// Returns the command transfer result (see SendCommand).
/// \param pSd  Pointer to a SD card driver instance.
/// \param pStatus  Pointer to a status variable.
//------------------------------------------------------------------------------
static unsigned char Cmd13(SdCard *pSd, unsigned int *pStatus)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_SEND_STATUS_CMD;
    pCommand->arg = pSd->cardAddress << 16;
    pCommand->resSize = 1;
    pCommand->pResp = pStatus;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// In the case of a Standard Capacity SD Memory Card, this command sets the
/// block length (in bytes) for all following block commands (read, write, lock).
/// Default block length is fixed to 512 Bytes.
/// Set length is valid for memory access commands only if partial block read
/// operation are allowed in CSD.
/// In the case of a High Capacity SD Memory Card, block length set by CMD16
/// command does not affect the memory read and write commands. Always 512
/// Bytes fixed block length is used. This command is effective for LOCK_UNLOCK command.
/// In both cases, if block length is set larger than 512Bytes, the card sets the
/// BLOCK_LEN_ERROR bit.
/// \param pSd  Pointer to a SD card driver instance.
/// \param blockLength  Block length in bytes.
//------------------------------------------------------------------------------
static unsigned char Cmd16(SdCard *pSd, unsigned short blockLength)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_SET_BLOCKLEN_CMD;
    pCommand->arg = blockLength;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// In the case of a Standard Capacity SD Memory Card, this command reads a block
/// of the size selected by the SET_BLOCKLEN.
/// In the case of a high capacity card, block length is fixed 512 bytes.
/// \param pSd  Pointer to a SD card driver instance.
/// \param blockSize  Block size (shall be set to 512 in case of high capacity).
/// \param pData  Pointer to the application buffer to be filled.
/// \param address  SD card address.
//------------------------------------------------------------------------------
static unsigned char Cmd17(
    SdCard *pSd,
    unsigned char *pData,
    unsigned int address)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_READ_SINGLE_BLOCK_CMD;
    pCommand->arg = address;
    pCommand->blockSize = SD_BLOCK_SIZE;
    pCommand->pData = pData;
    pCommand->isRead = 1;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Continously transfers datablocks from card to host until interrupted by a
/// STOP_TRANSMISSION command.
/// \param pSd  Pointer to a SD card driver instance.
/// \param blockSize  Block size (shall be set to 512 in case of high capacity).
/// \param pData  Pointer to the application buffer to be filled.
/// \param address  SD card address.
//------------------------------------------------------------------------------
static unsigned char Cmd18(
    SdCard *pSd,
    unsigned short nbBlock,
    unsigned char *pData,
    unsigned int address)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_READ_MULTIPLE_BLOCK_CMD;
    pCommand->arg = address;
    pCommand->blockSize = SD_BLOCK_SIZE;
    pCommand->nbBlock = nbBlock;
    pCommand->pData = pData;
    pCommand->isRead = 1;
    pCommand->conTrans = MCI_NEW_TRANSFER;
    // Set SD command state
    pSd->state = SD_STATE_DATA;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Write block command
/// \param pSd  Pointer to a SD card driver instance.
/// \param blockSize  Block size (shall be set to 512 in case of high capacity).
/// \param pData  Pointer to the application buffer to be filled.
/// \param address  SD card address.
//------------------------------------------------------------------------------
static unsigned char Cmd24(
    SdCard *pSd,
    unsigned short blockSize,
    const unsigned char *pData,
    unsigned int address)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_WRITE_BLOCK_CMD;
    pCommand->arg = address;
    pCommand->blockSize = blockSize;
    pCommand->pData = (unsigned char *) pData;
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Write block command
/// \param pSd  Pointer to a SD card driver instance.
/// \param blockSize  Block size (shall be set to 512 in case of high capacity).
/// \param pData  Pointer to the application buffer to be filled.
/// \param address  SD card address.
//------------------------------------------------------------------------------
static unsigned char Cmd25(
    SdCard *pSd,
    unsigned short nbBlock,
    unsigned char *pData,
    unsigned int address)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_WRITE_MULTIPLE_BLOCK_CMD;
    pCommand->arg = address;
    pCommand->blockSize = SD_BLOCK_SIZE;
    pCommand->nbBlock = nbBlock;
    pCommand->pData = (unsigned char *) pData;
    pCommand->conTrans = MCI_NEW_TRANSFER;
    // Set SD command state
    pSd->state = SD_STATE_RCV;

    // Send command
    return SendCommand(pSd);
}


//------------------------------------------------------------------------------
/// Initialization delay: The maximum of 1 msec, 74 clock cycles and supply
/// ramp up time.
/// Returns the command transfer result (see SendCommand).
/// \param pSd  Pointer to a SD card driver instance.
//------------------------------------------------------------------------------
static unsigned char Cmd55(SdCard *pSd)
{
    MciCmd *pCommand = &(pSd->command);

    memset(pCommand, 0, sizeof(MciCmd));
    // Fill command information
    pCommand->cmd = AT91C_APP_CMD;
    pCommand->arg = (pSd->cardAddress << 16);
    // Set SD command state
    pSd->state = SD_STATE_STBY;

    // Send command
    return SendCommand(pSd);
}

//------------------------------------------------------------------------------
/// Defines the data bus width (

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜桃一区二区| 亚洲国产精品尤物yw在线观看| 中文字幕日韩av资源站| 亚洲国产一区视频| 成人毛片视频在线观看| 欧美日韩高清不卡| 国产精品国产三级国产普通话蜜臀| 五月婷婷久久综合| 91在线视频免费91| 久久久美女艺术照精彩视频福利播放| 亚洲精品第一国产综合野| 国产精品亚洲а∨天堂免在线| 精品视频在线免费| 成人欧美一区二区三区白人| 国产精品乡下勾搭老头1| 日韩三级电影网址| 丝袜脚交一区二区| 欧美色图一区二区三区| 中文字幕一区二区三区在线播放| 激情综合网av| 日韩一级大片在线| 日本不卡中文字幕| 7777精品伊人久久久大香线蕉最新版| 综合婷婷亚洲小说| av资源网一区| 国产精品情趣视频| 国产成人啪午夜精品网站男同| 欧美哺乳videos| 奇米888四色在线精品| 欧美日韩精品专区| 亚洲国产wwwccc36天堂| 欧美在线观看一区| 亚洲成人免费av| 欧美色倩网站大全免费| 亚洲国产成人porn| 7799精品视频| 久久国产精品一区二区| 欧美成人国产一区二区| 国产在线观看免费一区| 久久蜜桃一区二区| 波多野洁衣一区| 亚洲精品自拍动漫在线| 欧美在线小视频| 亚洲国产成人av网| 日韩免费高清av| 国产精品一区一区| 中文字幕制服丝袜一区二区三区| 99久久夜色精品国产网站| 亚洲精品午夜久久久| 欧美视频一区在线观看| 日本va欧美va瓶| 欧美tickling网站挠脚心| 国产一区二区在线电影| 国产精品家庭影院| 欧美系列日韩一区| 精品一区二区三区不卡 | 狠狠色丁香九九婷婷综合五月| 欧美一级精品大片| 国产成人av一区二区三区在线| 国产精品动漫网站| 91成人国产精品| 美腿丝袜在线亚洲一区| 日本一区二区三级电影在线观看 | 韩国三级中文字幕hd久久精品| 国产亚洲精品bt天堂精选| 色综合视频一区二区三区高清| 亚洲国产裸拍裸体视频在线观看乱了| 日韩欧美另类在线| 99久久精品国产精品久久| 亚洲成av人片| 国产欧美一区二区精品性色超碰| 91视频在线看| 精品无码三级在线观看视频| 最新成人av在线| 日韩欧美一级二级三级| 91麻豆精品在线观看| 蜜桃免费网站一区二区三区| 亚洲视频在线观看一区| 欧美一级高清大全免费观看| eeuss鲁片一区二区三区在线观看| 五月婷婷综合在线| 亚洲欧洲在线观看av| 欧美一级二级在线观看| 欧美在线免费观看亚洲| 成人动漫视频在线| 奇米色一区二区三区四区| 亚洲精品视频在线| 国产亚洲人成网站| 日韩视频免费观看高清完整版在线观看 | wwwwxxxxx欧美| 欧美视频在线一区二区三区| 成人性视频网站| 麻豆精品新av中文字幕| 亚洲午夜精品网| 国产精品精品国产色婷婷| 久久综合色8888| 日韩一级二级三级精品视频| 91福利精品第一导航| 成人免费视频视频在线观看免费| 美女www一区二区| 亚洲国产一区视频| 亚洲影院免费观看| 亚洲欧美另类久久久精品| 国产精品久线在线观看| 久久久99精品久久| 欧美大胆人体bbbb| 欧美一区二区三区免费在线看| 欧美在线短视频| 91麻豆国产福利在线观看| 成人av网站在线| 国产99久久久精品| 国产精品一线二线三线| 国产成人超碰人人澡人人澡| 国产成人自拍在线| 国产成人99久久亚洲综合精品| 国产尤物一区二区| 国产福利视频一区二区三区| 国产精品亚洲а∨天堂免在线| 国产福利一区二区三区视频| 国产成人免费视| 成人黄动漫网站免费app| 国产91露脸合集magnet| 成人高清免费观看| 99视频一区二区| 在线观看区一区二| 欧美日韩激情一区二区| 欧美剧在线免费观看网站| 欧美一区午夜视频在线观看 | 91高清在线观看| 欧美视频在线观看一区| 欧美一级免费大片| 日韩精品一区在线观看| 国产蜜臀97一区二区三区| 国产精品白丝在线| 亚洲成精国产精品女| 美女视频第一区二区三区免费观看网站 | 亚洲视频一区在线| 一区二区三区四区精品在线视频 | 亚洲日韩欧美一区二区在线| 一区二区成人在线观看| 天堂成人国产精品一区| 激情综合色丁香一区二区| 成人动漫中文字幕| 在线看一区二区| 日韩欧美一区二区在线视频| 久久久影视传媒| 亚洲日本在线观看| 免费一区二区视频| a亚洲天堂av| 欧美一二三四区在线| 日本一区二区三区dvd视频在线| 一区二区三区不卡视频| 久久国产麻豆精品| 欧美综合一区二区三区| 日韩精品一区二区三区蜜臀| 国产精品午夜免费| 五月综合激情日本mⅴ| 处破女av一区二区| 91麻豆精品国产自产在线 | 伊人一区二区三区| 美美哒免费高清在线观看视频一区二区| 国产精品一级二级三级| 欧美日韩在线电影| 欧美激情中文字幕| 日本不卡一二三区黄网| 91美女在线看| 久久久亚洲欧洲日产国码αv| 亚洲午夜在线电影| av在线综合网| 欧美精品一区二区三区一线天视频 | 亚洲视频1区2区| 极品美女销魂一区二区三区| 欧美亚洲高清一区| 国产精品福利av| 国产精品系列在线观看| 91精品欧美综合在线观看最新| 综合av第一页| 国产成人av电影在线观看| 日韩视频一区在线观看| 亚洲伊人色欲综合网| 99久久精品费精品国产一区二区| www激情久久| 精品一区二区三区香蕉蜜桃| 91.xcao| 视频一区在线播放| 欧美视频一二三区| 亚洲国产日韩一区二区| 成人小视频在线| 亚洲国产成人私人影院tom| 国内一区二区在线| 欧美成人一区二区三区片免费| 爽爽淫人综合网网站| 欧美日韩二区三区| 亚洲国产另类av| 欧美老年两性高潮| 亚洲国产cao| 91精品国产色综合久久久蜜香臀| 亚洲一区二区三区影院| 欧美性videosxxxxx| 亚洲高清三级视频|