一、碰到的问题
- 通过ssh命令将文件写入到SD卡中,发现有一张SD卡(金士顿)可以成功写入,而另一张SD(闪迪)一直写入失败。
- 应用层读取文件时,有一张SD卡(金士顿)可以成功读取数据;另一张SD卡(闪迪)有很大的概率会导致司机。
二、SD卡驱动硬件电路
图 1. SD卡驱动硬件电路三、调试过程
- 查看SD卡驱动加载的日志,发现SDCLK的时钟信号为50MHz,考虑到C79可能会影响到时钟信号,去掉C79。
- 去掉C79,后插入闪迪的SD卡,日志中提示:“mmc0: error -110 whilst initialising SD card clock”。
- 对SD卡驱动的加载过程进行跟踪,闪迪SD的识别过程正常,但在时钟切换为50MHz时,发生错误。
- 将SD卡的时钟从50MHz修改25MHz时,闪迪SD的识别过程,读写数据正常。
- 怀疑是静电管D14、D15、D16的容值过大,导致数据信号变形。
- 将静电管更换为容值更小的型号(3pF),闪迪SD卡工作正常。