当前位置:首页 > 单片机 > 单片机
[导读] /************************************************************//*SDCodeforM32L*//*Bypasyong*//*2006-4*//*BaseICC6.31A*//************************************************************/#includ

/************************************************************/
/*SDCodeforM32L*/

/*Bypasyong*/
/*2006-4*/
/*BaseICC6.31A*/
/************************************************************/
#include
#include
#include"1011.h"
#defineucharunsignedchar
#defineuintunsignedint
#defineMMC_CS_PINBIT(4)//PORTB.4
#defineMMC_PORTPORTB

ucharreading=0,a=0,pointer=0;
voidsd_port_init()
{
MMC_PORT|=MMC_CS_PIN;
}
ucharBUFFER[512];//扇区缓冲区
uinti=0;
voiddelay_nus(uintn)
{
unsignedcharb;
for(b=1;b;
}
//****************************************************************************
//SendaCommandtoMMC/SD-Card
//Return:thesecondbyteofresponseregisterofMMC/SD-Card
//****************************************************************************
ucharSD_Write_Command(ucharcmd,unsignedlongarg)
{
uchartmp;
ucharretry=0;

//MMC_PORT|=MMC_CS_PIN;//SD卡关闭
//send8CLOCkImpulse
Write_Byte_SPI(0xFF);

//setMMC_Chip_Selecttolow(MMC/SD-Cardactive)
MMC_PORT&=~MMC_CS_PIN;//SD卡使能

Write_Byte_SPI(cmd|0x40);//送头命令
Write_Byte_SPI(arg>>24);
Write_Byte_SPI(arg>>16);//send6ByteCommandtoMMC/SD-Card
Write_Byte_SPI(arg>>8);
Write_Byte_SPI(arg&0xff);
Write_Byte_SPI(0x95);//仅仅对RESET有效的CRC效验码

//get8bitresponse
//Read_Byte_MMC();//readthefirstbyte,ignoreit.
do
{//Onlylast8bitisusedhere.Readitout.
tmp=Read_Byte_SPI();
retry++;
}
while((tmp==0xff)&&(retry<100));//当没有收到有效的命令的时候

if(reading==0)
MMC_PORT|=MMC_CS_PIN;//MMC_CS_PIN=1;
elseMMC_PORT&=~MMC_CS_PIN;//MMC_CS_PIN=0;
return(tmp);
}
//****************************************************************************
//SD卡初始化(SPI-MODE)
//****************************************************************************
ucharSD_Init(void)
{
ucharretry,temp;
uchari;
MMC_PORT&=~MMC_CS_PIN;//SD卡使能

delay_nus(250);//WaitMMC/SDready...
for(i=0;i<0x0f;i++)
{
Write_Byte_SPI(0xff);//send74clockatleast!!!
}
//SendCommandCMD0toMMC/SDCard
retry=0;

do
{//retry200timestosendCMD0command
temp=SD_Write_Command(0,0);
retry++;
if(retry==100)
{
;//CMD0Error!
}
}
while(temp!=1);

//SendCommandCMD1toMMC/SD-Card
retry=0;
do
{//retry100timestosendCMD1command
temp=SD_Write_Command(1,0);
retry++;
if(retry==100)
{
;
}
}
while(temp!=0);
retry=0;
SD_Write_Command(16,512);//设置一次读写BLOCK的长度为512个字节

MMC_PORT|=MMC_CS_PIN;//MMC_CS_PIN=1;//setMMC_Chip_Selecttohigh
return(0);//Allcommandshavebeentaken.
}
//****************************************************************************
//从SD卡读一个扇区Return0ifnoError.
//****************************************************************************
ucharSD_Read_Block(unsignedlongaddress)
{
uchartemp=0;uinti=0;
reading=1;
temp=SD_Write_Command(17,address);//读出RESPONSE
while(Read_Byte_SPI()!=0xfe)
{;}//直到读取到了数据的开始头0XFE,才继续
for(i=0;i<512;i++)
{
BUFFER[i]=Read_Byte_SPI();
}
Read_Byte_SPI();//CRC-Byte
Read_Byte_SPI();//CRC-Byte
reading=0;
MMC_PORT|=MMC_CS_PIN;//关闭SD卡
return(temp);
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将对PLC的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: PLC 模块化 程序

在这篇文章中,小编将为大家带来单片机的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 单片机 AVR PIC

在当今数字化时代,汽车不再仅仅是一种交通工具,更是一个移动的智能空间。随着人们对汽车电子设备依赖程度的不断提高,车内 USB 接口的重要性也日益凸显。从最初单纯为手机充电,到如今支持数据传输、连接各种智能设备,USB 接...

关键字: 接口 数据传输 汽车供电

根据Semico Research的预测,到2025年RISC-V芯片出货量将达到624亿颗,覆盖计算、消费电子和工业等领域。而在这其中,RISC-V MCU是整个RISC-V生态的基本盘,以高质量、应用驱动的解决方案为...

关键字: 青稞 RISC-V 沁恒 接口 MCU

对程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一。一般是优化了代码的尺寸,就会带来执行时间的增加;如果优化了程序的执行速度,通常会带来代码增加的副作用。很难鱼与熊掌兼得,只能在...

关键字: 单片机 程序

NodeMCU是一个开源物联网平台,包含运行在expressif Systems ESP8266 Wi-Fi SoC上的固件,硬件基于ESP-12模块。NodeMCU的特点之一是可以使用Arduino IDE进行简单的编...

关键字: GPS NodeMCU ESP8266 接口 物联网

一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,必须选择合适的算法和数据结构。

关键字: CPU 程序 缓存

在浩瀚的电子科技海洋中,GPIO(General Purpose Input/Output)作为一个基础而强大的概念,始终扮演着连接微控制器与物理世界的桥梁角色。它不仅仅是一组简单的引脚,更是赋予电子设备感知与响应能力的...

关键字: GPIO 接口 微控制器

自动电压调节器 (AVR) 用于通过补偿输入电压的任何波动来调节供电电压水平。AVR 也通常称为电压稳定器,可用于许多工业和住宅应用。例如,AVR 用于船舶发电机组、应急电源和石油钻井平台,以在电力需求波动期间稳定电压水...

关键字: AVR 电压调节

接口的类型对图像传输的质量起到了决定性的影响。随着液晶显示屏的风靡,许多原来接驳在电视平台的娱乐设备转移到了液晶显示屏上。

关键字: LCD 接口 RGB
关闭