[STC单片机] IAP15F2K61S2的硬件SPI读取SD卡出错

[复制链接]
2958|5
 楼主| lzp3520265 发表于 2013-10-5 22:30 | 显示全部楼层 |阅读模式
SD卡无法初始化。
用IO模拟就可以。
  1. #define SPILOW                 0x03
  2. #define SPIHIGH     0xfc

  3. #define SPIF        0x80        //SPSTAT.7                                
  4. #define WCOL        0x40        //SPSTAT.6

  5. void SPI_Init(void)
  6. {
  7. P1M1=0x40;
  8.     P1M0=0xa0;
  9.     SPDAT = 0;                  //初始化SPI数据
  10.     SPSTAT = SPIF | WCOL;       //清除SPI状态位
  11. SPCTL=0xDF;
  12. }

  13. unsigned char SPI_ReadWriteByte(unsigned char x)
  14. {
  15.         SPDAT=x;
  16.         delay0();
  17.         while (!(SPSTAT & SPIF));   //等待发送完成
  18.     SPSTAT = SPIF | WCOL;
  19.         delay0();
  20.         return SPDAT;
  21. }

  22. void SPI_Speed_High()
  23. {
  24.         SPCTL=SPCTL&SPIHIGH;
  25. }
  26. void SPI_Speed_LOW()
  27. {
  28.         SPCTL=SPCTL|SPILOW;
  29. }
SPI配置应该没问题吧?程序流程应该没问题。但是CMD0命令返回的值一直0,如果把DO脚与单片机断开测试,返回的数据是FF。
程序是从IO模拟SPI通信改过来的,只是修改了SPI的部分。
彼岸花开stc 发表于 2013-10-10 14:33 | 显示全部楼层
这个芯片的spi从机模式有问题,您要是想用,还是等老姚更新吧,应该会修改这个bug的
coody 发表于 2013-10-10 16:49 | 显示全部楼层
彼岸花开stc 发表于 2013-10-10 14:33
这个芯片的spi从机模式有问题,您要是想用,还是等老姚更新吧,应该会修改这个bug的 ...

主机模式木问题的。
 楼主| lzp3520265 发表于 2013-10-10 19:27 | 显示全部楼层
coody 发表于 2013-10-10 16:49
主机模式木问题的。

已经没有问题了,发现用硬件SPI读写SD卡时,必须将对应的IO口输出配置为推挽以及高阻。可能是由于输出脚和SD卡引脚间接有电阻吧。
 楼主| lzp3520265 发表于 2013-10-10 19:29 | 显示全部楼层
彼岸花开stc 发表于 2013-10-10 14:33
这个芯片的spi从机模式有问题,您要是想用,还是等老姚更新吧,应该会修改这个bug的 ...

我用SPI硬件进行双机通信时(相同的STC开发板),发现丢包率和错误率高的吓人。
autopccopy 发表于 2013-10-10 23:19 | 显示全部楼层
lzp3520265 发表于 2013-10-10 19:29
我用SPI硬件进行双机通信时(相同的STC开发板),发现丢包率和错误率高的吓人。 ...


目前C版作为SPI从机是有问题的,可看数据手册1.1章!
作为SPI主机没问题,可读写大容量串行FLASH和SD卡等。。。

(62)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部