1. 初识Zynq SD卡控制器:硬件基础与配置要点
刚开始接触Zynq的SD卡控制器时,我也被那一堆引脚和模式搞得有点懵。不过别担心,我来帮你理清楚。Zynq芯片内部集成了两个SD卡控制器,这可是个很大的优势,意味着你可以同时接两个存储设备。
SD卡有9个引脚,支持两种工作模式:SDIO模式和SPI模式。SDIO模式用了6根线(CLK、CMD、DAT[3:0]),速度更快;SPI模式只用了4根线(CS、CLK、MISO、MOSI),接线简单但速度慢一些。我在实际项目中发现,大多数情况下用SDIO模式更好,特别是需要高速读写的场景。
Micro SD卡(就是咱们常说的TF卡)的操作时序和标准SD卡完全一样,只是体积更小。标准SD卡2.0版本的工作时钟频率能达到50MHz,在SDIO模式下用4位数据位宽,理论传输速率可以达到200Mbps;SPI模式下用1位数据位宽,理论速率是50Mbps。
硬件配置时要注意Bank电压设置。Zynq的Bank1 IO电压通常是1.8V,这个一定要和你的SD卡电压匹配。我有一次就因为电压不匹配,折腾了半天才发现问题所在。记得检查原理图,确认SD_CD(卡检测)信号的引脚分配,这个信号用来检测开发板是否插入了SD卡。
2. FATFS文件系统移植实战
Xilinx SDK的standalone环境已经移植好了FATFS文件系统(他们叫做xilffs),这大大简化了我们的工作。FATFS是一个完全开源免费的FAT文件系统模块,专门为小型嵌入式系统设计,支持FAT12、FAT16和FAT32。
在SDK中添加xilffs库时有个小技巧:先关闭system.mss界面再添加,否则可能会导致添加失败。这个坑我踩过,所以特别提醒你注意。添加完成后,在libsrc栏下会看到多出了FATFS的库函数。
配置FATFS时,use_lfn选项很重要,它设置是否使能长文件名和文件名的小写字母。我建议设置为true,这样用起来更方便。记得根据你的实际需求配置其他选项,比如支持的语言代码页、是否使用快速搜索等。
移植完成后,你可以直接使用FATFS提供的API函数来操作SD卡,比如f_open、f_rea

948

被折叠的 条评论
为什么被折叠?



