打印
[STM32F4]

spi sd卡驱动问题

[复制链接]
1472|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jimmjimm|  楼主 | 2014-1-24 08:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个问题很奇怪,高速卡没问题,可是用到低速的卡就出问题了
无论是f_read,f_write,多块,单块到最后都会卡死在同一个地方
int MSD0_spi_read_write(uint8_t data)
{
  while (SPI_I2S_GetFlagStatus(SPIX, SPI_I2S_FLAG_TXE) == RESET);
  SPI_I2S_SendData(SPIX, data);
  while (SPI_I2S_GetFlagStatus(SPIX, SPI_I2S_FLAG_RXNE) == RESET);          //卡死在这里
  return SPI_I2S_ReceiveData(SPIX);
}
试过把频率降低可是最后降到256分频(168/4)/256 够慢了吧,还是会这样,难道是我读取之间要加延时?
沙发
jjjkkk00| | 2014-1-24 09:15 | 只看该作者
读取是SD卡响应的啊,主SPI只是提供了时钟。
把频率降到低速卡的要求范围内,再试试看。
如果其他应用的缘故,导致频率降不到合适的值。
也可以先用IO模拟了,用低速卡的最高通信频率,测试一下。

使用特权

评论回复
板凳
jimmjimm|  楼主 | 2014-1-24 09:22 | 只看该作者
jjjkkk00 发表于 2014-1-24 09:15
读取是SD卡响应的啊,主SPI只是提供了时钟。
把频率降到低速卡的要求范围内,再试试看。
如果其他应用的缘 ...

我降频了呀....16-256我都试过了,全部都不行,256只有160k,够慢了呀,还是不行,再慢就降不下去了.

使用特权

评论回复
地板
jjjkkk00| | 2014-1-24 09:25 | 只看该作者
jimmjimm 发表于 2014-1-24 09:22
我降频了呀....16-256我都试过了,全部都不行,256只有160k,够慢了呀,还是不行,再慢就降不下去了. ...

用IO口模拟SPI试试。模拟的话就不存在频率匹配问题了。
先IO口模拟,把通信频率的问题排查一下。

使用特权

评论回复
5
aozima| | 2014-1-24 10:33 | 只看该作者
SPI是master发时钟,所以即使SD卡坏掉了,也不会卡在这里。
原因要从其它方面找。

使用特权

评论回复
6
jimmjimm|  楼主 | 2014-1-24 10:57 | 只看该作者
aozima 发表于 2014-1-24 10:33
SPI是master发时钟,所以即使SD卡坏掉了,也不会卡在这里。
原因要从其它方面找。 ...

现在就是头疼,可能是原因是什么,换了板子也不**重新格了一边再加查错也不行,明明用高速卡是可以的,而且这个问题是在发送了一段时间之后才会出现的,而出问题之前的数据都是正确的,所以好纠结啊

使用特权

评论回复
7
jimmjimm|  楼主 | 2014-1-24 14:21 | 只看该作者
看了下示波器,卡死的时候,没有时钟......可是我的主机是mcu啊......怎么会这样......

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

56

帖子

1

粉丝