打印

SDIO DMA 运行一段时间后死机

[复制链接]
3640|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aagreen0514|  楼主 | 2011-1-21 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sd, IO, DMA, BLE, TI
else if (DeviceMode == SD_DMA_MODE)
  {
    SDIO_ITConfig(SDIO_IT_DCRCFAIL | SDIO_IT_DTIMEOUT | SDIO_IT_DATAEND | SDIO_IT_RXOVERR | SDIO_IT_STBITERR, ENABLE);
    SDIO_DMACmd(ENABLE);
    DMA_RxConfiguration(readbuff, BlockSize);
    while (DMA_GetFlagStatus(DMA2_FLAG_TC4) == RESET)
    {}
  }
死在了 while里面

使用的 是 官网的例程   运行大概10分钟左右 就死在里面了  

请大家 帮忙 说明下 可能的原因
沙发
aagreen0514|  楼主 | 2011-1-22 09:49 | 只看该作者
怎会这样 问了几个 问题 都没有 理我啊  晕死

使用特权

评论回复
板凳
airwill| | 2011-1-22 12:12 | 只看该作者
问题问得很明确,只是大家都和我一样, 没有玩过 SDIO.
看您这么着急,就就事论事地说说,
死在了 while里面
while (DMA_GetFlagStatus(DMA2_FLAG_TC4) == RESET)

就是说 (DMA_GetFlagStatus(DMA2_FLAG_TC4) 总是等于 RESET
是不是硬件或者时序方面的原因?再检查检查,用示波器验证验证呢

使用特权

评论回复
地板
byeyear| | 2011-1-22 14:23 | 只看该作者
while (DMA_GetFlagStatus(DMA2_FLAG_TC4) == RESET)死循环说明TC(Transmit Complete)标志没有置位
大多数情况下是传输出错了所以没有complete flag
可以从SDIO的status register里查到出错原因

顺便说句 SD的DEMO只是DEMO 直接拿来用是不十分可靠的

使用特权

评论回复
5
aagreen0514|  楼主 | 2011-1-24 13:09 | 只看该作者
好的 我试试  谢楼上两位

使用特权

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

本版积分规则

30

主题

103

帖子

2

粉丝