/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright (c) 2008, Atmel Corporation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
//------------------------------------------------------------------------------
// Headers
//------------------------------------------------------------------------------
#include <mci/mci.h>
#include "sdmmc_mci.h"
#include <board.h>
#include <utility/assert.h>
#include <utility/trace.h>
#include <string.h>
//------------------------------------------------------------------------------
// Local constants
//------------------------------------------------------------------------------
// SD card operation states
#define SD_STATE_STBY 0
#define SD_STATE_DATA 1
#define SD_STATE_RCV 2
// Card type
#define UNKNOWN_CARD 0
#define CARD_SD 1
#define CARD_SDHC 2
#define CARD_MMC 3
// Delay between sending MMC commands
#define MMC_DELAY 0x4FF
#define SD_ADDRESS(pSd, address) (((pSd)->cardType == CARD_SDHC) ? \
(address):((address) << SD_BLOCK_SIZE_BIT))
//-----------------------------------------------------------------------------
/// MMC/SD in SPI mode reports R1 status always, and R2 for SEND_STATUS
/// R1 is the low order byte; R2 is the next highest byte, when present.
//-----------------------------------------------------------------------------
#define R1_SPI_IDLE (1 << 0)
#define R1_SPI_ERASE_RESET (1 << 1)
#define R1_SPI_ILLEGAL_COMMAND (1 << 2)
#define R1_SPI_COM_CRC (1 << 3)
#define R1_SPI_ERASE_SEQ (1 << 4)
#define R1_SPI_ADDRESS (1 << 5)
#define R1_SPI_PARAMETER (1 << 6)
// R1 bit 7 is always zero
#define R2_SPI_CARD_LOCKED (1 << 0)
#define R2_SPI_WP_ERASE_SKIP (1 << 1)
#define R2_SPI_LOCK_UNLOCK_FAIL R2_SPI_WP_ERASE_SKIP
#define R2_SPI_ERROR (1 << 2)
#define R2_SPI_CC_ERROR (1 << 3)
#define R2_SPI_CARD_ECC_ERROR (1 << 4)
#define R2_SPI_WP_VIOLATION (1 << 5)
#define R2_SPI_ERASE_PARAM (1 << 6)
#define R2_SPI_OUT_OF_RANGE (1 << 7)
#define R2_SPI_CSD_OVERWRITE R2_SPI_OUT_OF_RANGE
// Status register constants
#define STATUS_READY_FOR_DATA (1 << 8)
#define STATUS_IDLE (0 << 9)
#define STATUS_READY (1 << 9)
#define STATUS_IDENT (2 << 9)
#define STATUS_STBY (3 << 9)
#define STATUS_TRAN (4 << 9)
#define STATUS_DATA (5 << 9)
#define STATUS_RCV (6 << 9)
#define STATUS_PRG (7 << 9)
#define STATUS_DIS (8 << 9)
#define STATUS_STATE (0xF << 9)
//-----------------------------------------------------------------------------
/// OCR Register
//-----------------------------------------------------------------------------
#define AT91C_VDD_16_17 (1 << 4)
#define AT91C_VDD_17_18 (1 << 5)
#define AT91C_VDD_18_19 (1 << 6)
#define AT91C_VDD_19_20 (1 << 7)
#define AT91C_VDD_20_21 (1 << 8)
#define AT91C_VDD_21_22 (1 << 9)
#define AT91C_VDD_22_23 (1 << 10)
#define AT91C_VDD_23_24 (1 << 11)
#define AT91C_VDD_24_25 (1 << 12)
#define AT91C_VDD_25_26 (1 << 13)
#define AT91C_VDD_26_27 (1 << 14)
#define AT91C_VDD_27_28 (1 << 15)
#define AT91C_VDD_28_29 (1 << 16)
#define AT91C_VDD_29_30 (1 << 17)
#define AT91C_VDD_30_31 (1 << 18)
#define AT91C_VDD_31_32 (1 << 19)
#define AT91C_VDD_32_33 (1 << 20)
#define AT91C_VDD_33_34 (1 << 21)
#define AT91C_VDD_34_35 (1 << 22)
#define AT91C_VDD_35_36 (1 << 23)
#define AT91C_CARD_POWER_UP_BUSY (1 << 31)
#define AT91C_MMC_HOST_VOLTAGE_RANGE (AT91C_VDD_27_28 +\
AT91C_VDD_28_29 +\
AT91C_VDD_29_30 +\
AT91C_VDD_30_31 +\
AT91C_VDD_31_32 +\
AT91C_VDD_32_33)
#define AT91C_CCS (1 << 30)
// MCI_CMD Register Value
#define AT91C_POWER_ON_INIT (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_INIT | AT91C_MCI_OPDCMD)
//-----------------------------------------------------------------------------
// Command Classes
//-----------------------------------------------------------------------------
//
// Class 0, 2, 4, 5, 7 and 8 are mandatory and shall be supported by all SD Memory Cards.
// Basic Commands (class 0)
//
// Cmd0 MCI + SPI
#define AT91C_GO_IDLE_STATE_CMD (0 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE )
// Cmd1 SPI
#define AT91C_MMC_SEND_OP_COND_CMD (1 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_OPDCMD)
// Cmd2 MCI
#define AT91C_ALL_SEND_CID_CMD (2 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 )
// Cmd3 MCI
#define AT91C_SET_RELATIVE_ADDR_CMD (3 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )
// Cmd4 MCI
//#define AT91C_SET_DSR_CMD (4 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_NO | AT91C_MCI_MAXLAT )
// cmd7 MCI
#define AT91C_SEL_DESEL_CARD_CMD (7 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )
// Cmd8 MCI + SPI
#define AT91C_SEND_IF_COND (8 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )
// Cmd9 MCI + SPI
#define AT91C_SEND_CSD_CMD (9 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_MAXLAT )
// Cmd10 MCI + SPI
#define AT91C_SEND_CID_CMD (10 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_136 | AT91C_MCI_MAXLAT )
// Cmd12 MCI + SPI
#define AT91C_STOP_TRANSMISSION_CMD (12 | AT91C_MCI_TRCMD_STOP | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )
// Cmd13 MCI + SPI
#define AT91C_SEND_STATUS_CMD (13 | AT91C_MCI_TRCMD_NO | AT91C_MCI_SPCMD_NONE | AT91C_MCI_RSPTYP_48 | AT91C_MCI_MAXLAT )
// Cmd15 MCI
//#define AT91C_GO_INACTIVE_STATE_CMD (15 | AT91C_MCI_RSPTYP_NO )
// Cmd58 SPI
#define AT91C_READ_OCR_CMD (58 | AT91C_MCI_RSPTYP_48 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_MAXLAT )
// Cmd59 SPI
#define AT91C_CRC_ON_OFF_CMD (59 | AT91C_MCI_RSPTYP_48 | AT91C_MCI_SPCMD_NONE | AT91C_MCI_MAXLAT )
//#define
没有合适的资源?快使用搜索试试~ 我知道了~
at91bootstrap-at91sam9263-ek-gnu.zip_9263_AT91Bootstrap_at91sam9
共110个文件
c:40个
h:39个
o:21个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 120 浏览量
2022-09-22
19:07:38
上传
评论
收藏 399KB ZIP 举报
温馨提示
飞凌9263开发板boot启动测试代码,可以在GNU环境下编译使用
资源推荐
资源详情
资源评论
收起资源包目录
at91bootstrap-at91sam9263-ek-gnu.zip_9263_AT91Bootstrap_at91sam9 (110个子文件)
boot-at91sam9263-ek-nandflash2sdram.bin 12KB
boot-at91sam9263-ek-dataflash2sdram.bin 8KB
sdmmc_mci.c 58KB
tff.c 57KB
RawNandFlash.c 27KB
MEDSdcard.c 20KB
mci.c 19KB
main.c 19KB
SkipBlockNandFlash.c 17KB
stdio.c 15KB
NandFlashModel.c 15KB
twi.c 14KB
board_memories.c 14KB
at26d.c 13KB
pio.c 12KB
BootNand.c 12KB
hamming.c 12KB
twid.c 11KB
at45.c 10KB
at26.c 10KB
cp15.c 9KB
string.c 9KB
spid.c 8KB
EccNandFlash.c 8KB
NandFlashModelList.c 8KB
at45d.c 8KB
NandSpareScheme.c 8KB
diskio.c 7KB
pmc.c 7KB
BootEeprom.c 7KB
board_lowlevel.c 7KB
BootAT45.c 7KB
BootAT26.c 7KB
util.c 7KB
dbgu.c 6KB
BootSdcard.c 5KB
BootNor.c 4KB
aic.c 4KB
math.c 3KB
Media.c 3KB
async.c 2KB
trace.c 2KB
boot-at91sam9263-ek-nandflash2sdram.elf 120KB
AT91SAM9263.h 426KB
board.h 25KB
sdmmc_mci.h 16KB
at45.h 11KB
at26.h 10KB
trace.h 9KB
tff.h 9KB
Media.h 8KB
spid.h 7KB
fatfs_config.h 7KB
pio.h 7KB
NandFlashModel.h 6KB
twi.h 6KB
mci.h 6KB
RawNandFlash.h 5KB
SkipBlockNandFlash.h 5KB
NandSpareScheme.h 5KB
NandCommon.h 5KB
assert.h 4KB
boot.h 4KB
EccNandFlash.h 4KB
at45d.h 3KB
cp15.h 3KB
twid.h 3KB
main.h 3KB
dbgu.h 3KB
aic.h 3KB
at26d.h 3KB
hamming.h 3KB
NandFlashModelList.h 3KB
async.h 3KB
pmc.h 2KB
board_memories.h 2KB
ff_util.h 2KB
MEDSdcard.h 2KB
util.h 2KB
math.h 2KB
diskio.h 2KB
integer.h 754B
sram.lds 3KB
norflash.lds 3KB
make_all 8KB
Makefile 12KB
boot-at91sam9263-ek-nandflash2sdram.map 56KB
RawNandFlash.o 23KB
stdio.o 23KB
SkipBlockNandFlash.o 14KB
board_memories.o 13KB
NandFlashModel.o 12KB
dbgu.o 12KB
BootNand.o 10KB
EccNandFlash.o 10KB
pio.o 9KB
NandSpareScheme.o 8KB
util.o 8KB
string.o 8KB
hamming.o 8KB
共 110 条
- 1
- 2
资源评论
小波思基
- 粉丝: 70
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现电力系统仿真计算软件包,包括潮流计算,最优潮流计算等.rar
- 基于matlab实现电力系统各种故障波形仿真,单相接地故障,两相间短路,两相接地短路,三相短路等.rar
- 基于matlab实现电动汽车动力性,爬坡性,续驶里程等性能仿真.rar
- Python动态烟花代码.pdf
- 基于matlab实现串口发送接收数据 可配置端口,波特率等 发送可选择ASCII方式或HEX方式
- matlab基于BP神经网络手写字母识别(单一).zip代码9
- 基于matlab实现编写的串口调试工具,数据接收部分采用中断方式,保证了实时的数据显示
- 基于matlab实现39节点电力系统合闸角调控过程中的机组和负荷的灵敏度计算.rar
- HBase数据库性能调优
- 原生微信小程序源码 - -首字母排序选择
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功