最近调试了SD卡,遇到了一些小问题,记录一下,分享一下。
1. SD卡 卡槽旁边的一个小开关
我们平时见过的SD卡都是小的SD卡,可以放在手机上的。现在大多数的开发板上也是小的SD卡的卡槽,插入后,正好可以使用。但是如果想要用PC向里存储一定的东西,还是需要一个读卡器。读卡器有USB型的,同时也有一个大大的SD卡卡槽,就是扩展成为一个大的SD卡。大的SD卡在笔记本上有专门的插槽(笔者的有)。但是在SD卡卡槽的一侧有一个小的开关,这个小的开关是一个写保护开关。一般情况下,以金属接触点向上为正方向。向上推,是可读写。向下推是,是只读。这个在某些U盘上也有。
如果PC写不进去,说是被写保护。先不要怀疑SD卡(U盘)坏了,首先考虑这个硬件写保护。
原理是:这个开关是一个机械性的开关,如果里面两个金属触点接触,就可以写。否则,不能写。
2. SD卡的区分
SD,SDHC,SDXC这三个都是SD卡,以容量区分。在进行地址读写,有一定的区别。
SD卡,按照字节地址去写(一般情况)。SDHC,SDXC卡,按照扇区地址进行读写(一般情况)。按照扇区还是字节地址和驱动协议也有一定的关系。
一个扇区的大小为512字节。
3. SD读取不对的问题
我们可以用控制器进行读写SD卡,地址就是按照自己的设计就可以。
很多时候,我们需要用PC将一些数据放入到SD卡,然后通过控制器进行读取。读取时,需要知道数据存储的地址。利用winhex软件可以查到数据存放的地址。我们用控制器进行读写SD卡,利用winhex软件查到的地址,有时读出来的数据不正确。
经过不断的查找资料,发现利用winhxe软件查询数据存放地址时,可以有两个地址:物理地址和逻辑地址。winhex软件直接显示的逻辑地址。
控制器直接进行SD卡读写时,是按照物理地址进行读写的。所以需要利用winhex中的逻辑地址。
winhex显示逻辑地址一般在winhex软件的右下侧。
希望对遇到同样问题的学习者有用,有什么不对的地方,恳请大佬们指出。