默れ

SD卡的读写功能实现的主函数

0
阅读(2071)
#include 
#include "dm_mmc.h"
#include "dm_bf5xx.h"

uint8_t buff_w[512];
uint8_t buff_r[512];

/****************************************************************************
* 名称 : MMC_HardwareInitial
* 功能 : SPI配置初始化
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void MMC_HardwareInitial(void)
{
	*pCtrIner_Flag_OE = 0xff && (~SPI_OE); //SPI_switc 允许
	mdelay(500);
	*pCtrOut_Flag_B = SPI_A1; // 选择SD_SPISS
	mdelay(500);
	
	*pFIO_DIR = PF2;
	*pFIO_FLAG_S = PF2;
	*pSPI_FLG = FLS2;
	*pSPI_BAUD = 1000;
	*pSPI_CTL = 0x0400;
	*pSPI_CTL = TIMOD_T | MSTR ;
	*pSPI_CTL = (*pSPI_CTL | SPE);
}

/****************************************************************************
* 名称 : check_test
* 功能 : 校验写入数据的正确性,将写入的数据读出比较
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void check_test(void)
{
	int_t i;
	int_t flag = 1;
	
	for(i=0;i<512;i++)
    	buff_w[i] = i;
    	
	MMC_Write_sector(5,buff_w);
	MMC_read_sector(5,buff_r);
	
	for(i=0;i<512;i++)
	{
		if(buff_w[i] != buff_r[i])
		{	
			flag = 0;
			break;
		}
	}
	if(flag)
		printf("SD/MMC Check is OK!\r\n");
	else 
		printf("SD/MMC Check ERROR!\r\n");

}
/****************************************************************************
* 名称 : main
* 功能 : MMC/SD卡测试主函数
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void main(void)
{
	Set_PLL(22,5);
	Init_EBIU();
    MMC_HardwareInitial();
	MMC_Init();
	check_test();
	printf("SD/MMC Check END!\r\n");
	while(1);
}