SD卡初始化打印信息和winhex不一样

  参照牙缝的博客http://www.cnblogs.com/yuphone/category/276816.html,从SD卡到TFT已经有图片了就是还有一些细节问题,慢慢解决。。。后面还有很多要做的,文件系统,摄像头,GUI。。。先严重感谢一下牙缝,哈哈,有你的博客前面调的很通畅,偷着乐。

  说问题,初始化SD卡以后,读 CID 和 CSD 寄存器的信息,然后再读第0扇区512bytes的数据,如下:(我用的是128MB的SD卡)

  寄存器信息:

  

  第0扇区:

  

  最后两个字节还是 55 AA 表示MBR的DPT结束了。

  但我用 winhex 看的结果是:

  

  问题(1):这是为什么咧?地址不对?应该不会,最后的结束字节对的到,那为什么读出来都是0了?我的SD卡128M 的太古老了?明天换个1G的试试。

  问题(2):读SD卡数据的这个函数 void SD_CARD_Read_Data_LBA(u32 LBA,u16 n_bytes,u8 *buf);

  //Read SD-CARD Data
   SD_CARD_Read_Data_LBA(0,512,buf); 就调用这个函数,这个地址 LBA 也就是通过winhex看到的地址是物理地址还是逻辑地址 ?从字面上来看肯定是逻辑地址Logic Block Address。

  这个地址的转换 推测 是逻辑地址转物理地址,这肯定是文件系统里面的东东,现在正在看。。。谁能帮我先解释一下,或者有好资料推荐一下。

   //address conversation(logic address -> byte address)
   sector = sector << 9; //sector = sector * 512
   CMD[1] = ((sector & 0xFF000000) >> 24);
   CMD[2] = ((sector & 0x00FF0000) >> 16);
   CMD[3] = ((sector & 0x0000FF00) >> 8);

  问题(3):用winhex看各个文件的地址,比如我放了三张 240*320 的图片进去了,显示如下:

  

  牙缝的扇区地址的偏移量是304,我没搞明白。。。而我的正好是300,我更不明白了。直觉是 128M的SD卡估计有点老了。。。并且我按照地址去读图片出来显示也有那么一点不对,第一幅图上面有点确实,第二幅图又是第一幅图的下面一点加第二幅图的上面部分,估计是地址没搞对,还是文件系统啊。。。

  Go  on!

  

posted on 2011-04-14 21:45  zxl2431  阅读(1262)  评论(4编辑  收藏  举报

导航