这些日子忙乎把战舰版的SD卡由SPI 方式改为SDIO方式,在移植的过程中,跌跌撞撞的,有些问题,经过反复试验,总算通过了,最后剩下显示jpeg图片问题,
在老师的指导下,也通过了,还有个USB的问题,老师也进行详细指导,我认为这个问题,自己解决不会很难,过高信赖自己的技术水平了。
我又了连续干了两天,没有攻克,心思,照我的水平,再干两天,也搞不出来的,还是厚着脸皮,再次请教原子老师。
这USB,在SPI 那个版本程序里,已经好用了,甚至可以做到 SD卡 和 W25Q64 的内容,可以相互拷贝,这部分程序也是照搬过来的,没有改动任何语句,
只是个在初始化里有程序如下:
// Mass_Memory_Size[0]=(long long)SD_GetSectorCount()*512; //得到SD卡容量(字节),当SD卡容量超过4G的时候,需要用到两个u32来表示
Mass_Memory_Size[0]=(long long)SDCardInfo.CardCapacity; //把上一句改成这一句,得到SD卡容量(字节)
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mass_Block_Size[0] =512;//因为我们在Init里面设置了SD卡的操作字节为512个,所以这里一定是512个字节(一个扇区).
Mass_Block_Count[0]=Mass_Memory_Size[0]/Mass_Block_Size[0]; //计算出SD卡有多少个扇区
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mass_Memory_Size[1]=1024*1024*6; //W25Q64的前6M字节,接着500K(6.5M)为用户区,最后1.5M为汉字库区
Mass_Block_Size[1] =512; //因为我们在Init里面设置了SD卡的操作字节为512个,所以这里一定是512个字节.
Mass_Block_Count[1]=Mass_Memory_Size[1]/Mass_Block_Size[1]; //求出扇区数量
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
由于在SDIO方式下,没有SPI方式的 获取 SD卡
容量(字节) 的函数:
SD_GetSectorCount();原子老师告诉用:
SDCardInfo.CardCapacity;
代替它,经查对得知,
.CardCapacity; 是SD卡相关的结构体SD_CardInfo;的一个成员,它是保存SD卡容量的,按老师的指导方法i,把第一行的代码,改为第二行
代码,编译顺利通过 ,大喜,可是高兴的太早了,下载到开发板上,USB好用一半,W25Q64好用,SD卡不好用,表现的形式是,SD卡的盘符能够看到,但打不开
还无法格式化,有时能打开,显示容量中有几百兆。我翻看好多的程序,都不见效果,又乱了阵脚!
细想一下,这USB和SPI方式时没有什么区别呀,仅仅SD卡的接线方式有所变化,另外SDIO还多了个中断,是不是这个中断,和USB的中断发生了冲突,我学着
改了几处,不见改变,越来越觉的这小小的USB,学文大的呢,自己还是解决不了这个问题,还是趁早问老师吧,USB这个故障到底怎么能排除呢?
|