- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
菜鸟用C8051F020SPI读写SD卡FAT全攻略单片机
菜鸟用C8051F020 SPI读写SD卡FAT全攻略 转自:/wandou16/249996/message.aspx# 我从一个月前刚放暑假开始弄单片机读写SD卡,八月初完成FAT16,已经可以写入TXT文件,并可在windows上读出。由于网上资料比较散,所以一开始走了不少弯路,现在写一篇总结,将我遇到的问题详细地列出来,希望能帮助和我一样的菜鸟们少走弯路。文中说到的一些问题对高手而言只是常识性的,还请包涵。 ????? 第一步:搭电路 ????? 我买了一小块蜂窝板和一个SD插槽,按照标准电路焊接上,由于用的是SPI模式,所以选电路图的时候要看好,SD卡上的引脚顺序不要看错,912345678,最后两根挨得很紧,焊接时不要连上了,相关引脚一定要按照要求接上47K的上拉电阻。电路虽然简单,但一定要确保无误。还有一点,SD卡座种类不一样,有位学长买的是弹簧式的,焊完以后刚开始初始化都能成功,放了几天突然不行了,检查各引脚都没问题,最后发现是卡座的问题,这样的硬件问题很难发现,还浪费时间,所以卡座还是直接买简单的好。 ????? 第二步:设置硬件SPI ?????? 我用的是sililab的C8051F020,自带硬件SPI,如果不带可以用软件模拟,关于软件模拟SPI这块网上有很多现成的程序。这一歩首先按照020手册写了一段程序,当然是将其设为主模式,这时候CONFIG(这个软件可以视窗化操作C8051F的大多数寄存器并自动生成代码)会分配4个引脚,CLK时钟位,MISO和MOSI两个数据传输位,还有一个NSS位,这个脚用不上,不要将其当作CS片选位,CS位选一个普通IO既可。所有从单片机上输出的引脚都设为推挽输出。设置完成后最好弄个示波器看一下输出波形是否和你想象中的一样,这样就能确保你的SPI工作没问题了,这一步也是关键,SPI是底层通信的基础。 ?????? 第三步:SD卡初始化 ??????? 这一步正式进入单片机调试SD部分,了解SD卡的时序后(后面我会上传这部分资料),网上众说纷纭,还有说要看完178页英文PDF,我都晕了,这个看完估计我都是专家了。关于初始化命令有很多说法,我发的是CMD0和CMD1就可以成功初始化。 ???????? 解释一下这个命令格式的含义:这是个一个字节的命令格式为01xx xxxx 后六位是CMD后面的数字的二进制值,如CMD1=0100 0001=0x41 程序中写为CMD | 0x40?? CMD代表后面的数字。 ???????? 需要注意初始化时SPI速率不能超过400K,我设的是100K,初始化没问题,还有发CMD0之前要向SD卡发送至少74个时钟周期,只有CMD0需要这样特殊。 下面是发送CMD0的程序段: ?retry=0;??CSH; ?do{??for(i=0;i10;i++) SPI_WriteByte(0xFF);?//?发送 至少 74个时钟周期?注意片选线此时为高??r1=mmcSendCommand(MMC_GO_IDLE_STATE, 0);?//?发送CMD0,注意此时片选线才为低??retry++;??if(retry0xfe) return -1;??????//尝试的发送次数可以适当多一些?} while(r1 != MMC_R1_IDLE_STATE); //正确应答为1 ????? 尝试发送的次数至少为200,有人建议2000的,随便,如果不稳定,比如有时候收的到有时候收不到,就可以适当增大发送次数 ????? 这是紧随其后发送的CMD1程序段: ?retry=0;?do{?????r1=mmcSendCommand(MMC_SEND_OP_COND, 0);?//?发送CMD1??retry++;??if(retry100) return -1;?} while(r1!=0);????????????????????????????????????????????? //正确应答为0 ???? 初始化有这两个就可以完成了,有的程序中还会加上? mmcSendCommand(MMC_CRC_ON_OFF, 0);????//关CRC校验 mmcSendCommand(MMC_SET_BLOCKLEN, 512);//设置块长度为512字节 ????? 这个无关紧要,SPI模式下默认没有CRC校验的,而且每块字节数就是512,这个块大小就别改了,你要设置成别的大小,后面加FAT会出麻烦的。 ????? 下面解释一下上面程序中的uint8_t mmcCommand(uint8_t cmd, uint32_t arg)函数 ????? uint8_t mmcCommand(uint8_t cmd, uint32_t arg) {
您可能关注的文档
最近下载
- 电气工程施工方案范本(3篇).docx
- 广东省中山一中等六校2025届高三下学期联合考试化学试题含解析.doc VIP
- 广东省中山一中等六校2024届高三压轴卷化学试卷含解析.doc VIP
- “结构主义·转型为鉴”系列之日本篇:转型得与失.pdf VIP
- 综合布线系统双绞线工程检测原始记录表.doc VIP
- SY0031-2012石油工业用加热炉安全规程.docx VIP
- 交直流电力系统的分析和控制.pdf VIP
- 初中英语必背单词2000个(按词性分类带音标).docx
- 统编版五年级下册语文全册教案【三】-统编版五年级下册语文教案-已转换.docx VIP
- 装修监理规划范本样本.doc VIP
有哪些信誉好的足球投注网站
文档评论(0)