关于MMC卡读/写

C

conkhicon

Guest
亲爱的在单片机的硬件SPI接口功能,我发展石化18F8720项目使用MMC,我已成功地做复位和初始化MMC和阅读的OCR,CSD寄存器确定,可能是只读的singleBolck(CMD17)确定(状态返回行但不知道数据是真实的),但是当我想要写块(CMD24)到MMC,响应数据很奇怪,它是0x07(正确的是0xE5)。任何一个可以帮助我,有什么错误?? (我用胜创和Sandisk卡)。块大小= 512Bytes,地址是512边界如果我使用诺基亚,Seimen MMC卡和我只写行(属于状态返回)和读取失败。
 
我只有从SD / MMC卡奇怪的反应时,我错过了某些步骤。你能描述一下您所使用的确切顺序发出CMD24并执行写?
 
#定义BLOCK_LEN 512无符号字符readBlockMMC(无符号长整型DWAddr,无符号字符*偏微分方程){外部无符号字符tmpkd [];无符号字符localRD;无符号字符commandResponse;无符号字符dataToken; unsigned int的localc; SetCSSPI(); WriteSPI(0xff)的/ /虚拟ClearCSSPI(); / /卡主动writeCMD(17岁,DWAddr,0xff)的; / /读命令(无CRC)的commandResponse = MCCResponse();如果(commandResponse! = 0){SetCSSPI(); / /卡在主动WriteSPI(0xff)的; / /虚拟MMC_Err = 0x30;回报(1);} localc = 0;(1){/ /等待数据令牌或错误标记dataToken = ReadSPI();如果(dataToken == 0xFE的道)中断; / /成功localc + +;如果((dataToken&0xe0)== 0){/ /错误标记,如果(dataToken! = 0){MMC_Err = 0x31;回报(1);}}} NOP(空),为(localRD = 0; localRD
 
有一个很好的应用在电路地窖#176给出。也许你可以看到,检查和比较,如果你做错什么。
 
如果我没有误解你的代码,你是瓦亭数据令牌...但是,当你发出CMD24你要发送的数据符号,这里是一块工作代码:mmc_CS_on; r_value = mmc_cmd(CMD24,地址,0); / /国内的反应R1的mmc_putchar(0xff)的等待; mmc_putchar(0xFE的) / /发送数据令牌(我= 0;我<512; + + i)的mmc_putchar(缓冲[我]); / /发送数据mmc_putchar 512B(为0x00)/ /发送16位的CRC mmc_putchar哑巴(为0x00),而(mmc_read_r1()== 0xff)的;(!(U0RXBUF及到0x1F)= 0x05)如果error_data_write_count + +;而(mmc_read_r1()==为0x00)/ /等待写入结束.. mmc_CS_off;
 
我定在PIC接口MMC卡我的问题,任何一个使用硬件Pheripral的SPI出席:当你读的SPI(等待一个响应),时钟移出,在PIC的数据转移,但同时,在数据写入SSPBUF到MMC中移出是ramdom,因为这个MMC卡拒绝。替换代码:反应= ReadSPI(),与:WriteSPI(0xff)的;反应= SSPBUF寄存器;
 
我有类似的问题也MMC卡,我打个数据记录器,以前我用的SD存储卡,再经过做很多测试和成功,我希望它能够使用MMC卡,因此我更改与MMC卡SD卡。但在使用MMC卡系统挂起在写文件..我不知道原因..初始化过程中都给予卡的准备状态,所以我认为这是在初始化好了..请让我看看我的错误..
 

Welcome to EDABoard.com

Sponsor

Back
Top