SDIO驱动SD 为什么卡在HAL_SD_SDIO_GET_FLAG

2019-07-20 17:01发布

#ifdef SDIO_STA_STBITERR  
  while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR))
#else /* SDIO_STA_STBITERR not defined */
  while(!__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND))
#endif /* SDIO_STA_STBITERR */
  {
    if(__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_RXDAVL))
    {
      *(tempscr + index) = SDIO_ReadFIFO(hsd->Instance);
      index++;
    }

  }
  
  if(__HAL_SD_SDIO_GET_FLAG(hsd, SDIO_FLAG_DTIMEOUT))
  {
    __HAL_SD_SDIO_CLEAR_FLAG(hsd, SDIO_FLAG_DTIMEOUT);
   
    errorstate = SD_DATA_TIMEOUT;
   
    return errorstate;
  }


请问怎么分析错误。( @arg SDIO_FLAG_RXDAVL:   Data available in receive FIFO)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
流畅笔记
1楼-- · 2019-07-20 17:59
正点原子 发表于 2017-1-1 20:36
说明等待出错了。

原子哥您好,上面的问题已经解决了。还有个问题想请教您,500SPS的采样速率,每次采样输出27字节数据,也就是2ms采集一次27字节数据。如果每2ms进行一次SD存储会出现严重的数据丢失。请问原子哥还有其他好的方法吗?
正点原子
2楼-- · 2019-07-20 18:25
 精彩回答 2  元偷偷看……
正点原子
3楼-- · 2019-07-20 23:49
流畅笔记 发表于 2017-2-10 09:04
原子哥您好,上面的问题已经解决了。还有个问题想请教您,500SPS的采样速率,每次采样输出27字节数据,也 ...

500*27=13.5KB/S
速度不快,你不要2ms写一次SD卡,建议你满2KB或者1KB,写一次SD卡,其他时间用内存缓存起来。这样就可以了。

一周热门 更多>