shangdizhishou

    1. 你好师兄,我用WINHEX软件打开了,但是5960块的内容不是我写进去的1 2 3 4 。。。。。和读出来的数据也不一样,这是怎么回事?下面是我用winhex的截图,你帮我看看吧,谢谢 !
    2. 谢谢你!
    3. 我把程序又调整了一下,初始化没问题,写语句的返回指令0x05也没错,但是运行一段时间程序后发现SD卡仍然是空的,只是怎么回事?是不是块地址有问题啊?因为我对块地址一直不是很清楚,我给您举个例子,您看我的理解对不对。 例如:我想在15个块写数据 long  laddr=15 laddr24);    b=((addr&0x00ff0000)>>16);    c=((addr&0x0000ff00)>>8);    d=((addr&0x000000ff)>>0); 这样abcd是物理地址对不?
    4. 我试了,结果总是在SD卡初始化时总是出现死循环,初始化的程序段是下面这个,我觉得时序上没有问题啊,麻烦你帮我分析下,谢谢哥们! void Init_SD_Card(void) { unsigned char i; ESPI0 = 0;       //关闭发送中断 /*SPI0DAT = 0xff;     while(TXBMT != 1); SPI0DAT = 0xff;     while(TXBMT != 1);*/ CS = 0;          //开片选 Delay(); SPI0DAT = 0x41;       //CMD1     while(TXBMT != 1); Delay(); SPI0DAT = 0x00;    //输出8*4个clocks     while(TXBMT != 1); SPI0DAT = 0x00;     while(TXBMT != 1); SPI0DAT = 0x00;     while(TXBMT != 1); SPI0DAT = 0x00;     while(TXBMT != 1); Delay(); SPI0DAT = 0xff;      //crc     while(TXBMT != 1); Delay(); SPI0DAT = 0xff;   //8× multiples of 8 clocks   Ncr     while(TXBMT != 1); SPI0DAT = 0xff;     while(TXBMT != 1); Delay(); Init_comdata = SPI0DAT; Delay(); i = SPI0DAT;     //读接受数据缓冲区,清空接收数据缓冲区,这样让sd卡响应数据可以顺利接收 SPI0DAT = 0xff;   //输出dummy时钟周期,让sd卡响应字节进入接受缓冲区     while(TXBMT != 1);    CS = 1;          //关片选 Init_comdata = SPI0DAT; SPI0DAT = 0xff;     while(TXBMT != 1); SPIF = 0;          //清中断标志位 ESPI0 = 1;       //开发送中断 }

最近访客

< 1/1 >

统计信息

已有36人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:4

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言