cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 5244|回复: 10

求助,有人搞定过AMEv3上面的SD卡吗?

[复制链接]
发表于 2014-7-10 18:31:10 | 显示全部楼层 |阅读模式
在折腾SD卡驱动,发现无论如何都调不通,卡在FindSCR,Github中的代码把FindSCR给禁用了所以能通过初始化,但是还是实际读写还是会出错。有人能搞定吗?
发表于 2014-7-10 23:25:34 | 显示全部楼层
这里不太可能有回答,只能其他地方看看了,是以下的问题吗?

主要卡死在两个地方:
1、就是在初始化SD卡的时候,有一个FindSCR()函数中:
while (!(SDIO->STA & (SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)))
{
if (SDIO_GetFlagStatus(SDIO_FLAG_RXDAVL) != RESET)
{
*(tempscr + index) = SDIO_ReadData();
index++;
}
}
卡死在这个while循环中,不过这个可以使用index来判断,当大于1时就跳出,不会影响操作。这个姑且算是解决了吧。呵呵。
2、另一个就卡死在SD_ReadBlock()或者SD_WriteBlock()函数的DMA查询那里,比如SD_ReadBlock()中的:
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)
{}
这个就不好解决了,呵呵。通过观察SDIO中断标志,可以看出大多时候是出现了SDIO_IT_RXOVERR错误,但是极个别时候是数据正常。
另外,应用程序中是没有循环等待的。
测试程序是使用的官方例程,里面的DMA是每次使用前都重新配置了的。
很谢谢你的关注,呵呵。

点评

AME不就是楼主做的么。。。。-_-#  发表于 2014-7-10 23:54

评分

参与人数 1金钱 +10 收起 理由
chsi + 10 欢迎探讨

查看全部评分

发表于 2014-7-11 12:55:39 | 显示全部楼层
本帖最后由 conandllu 于 2014-7-11 21:20 编辑

我有407 调试OK 上FatfsOK的 代码。
附件为SDIO源代码,4bit DMA 传输。中断程序中添加以下两个函数
  1. /**
  2.   * @brief  This function handles SDIO global interrupt request.
  3.   * @param  None
  4.   * @retval None
  5.   */
  6. void SDIO_IRQHandler(void)
  7. {
  8.   /* Process All SDIO Interrupt Sources */
  9.   SD_ProcessIRQSrc();
  10. }

  11. /**
  12.   * @brief  This function handles DMA2 Stream3 or DMA2 Stream6 global interrupts
  13.   *         requests.
  14.   * @param  None
  15.   * @retval None
  16.   */
  17. void SD_SDIO_DMA_IRQHANDLER(void)
  18. {
  19.   /* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */
  20.   SD_ProcessDMAIRQ();
  21. }
复制代码

SDIO.rar

20.25 KB, 下载次数: 117

发表于 2014-7-20 20:04:10 | 显示全部楼层
卡的 两根数据线 弄反了,需要改硬件。
发表于 2014-7-20 20:06:37 | 显示全部楼层
我的重新构成了新的开发环境,mdk下的,现已通过调试,加入了lua脚本
发表于 2014-8-2 23:08:00 | 显示全部楼层
你直接上文件系统《《一切轻松
 楼主| 发表于 2014-8-3 08:54:45 | 显示全部楼层
hansh 发表于 2014-8-2 23:08
你直接上文件系统《《一切轻松

你觉得初始化都通不过文件系统有什么用吗?BTW,早就已经搞定啦

点评

你的内存分配是分配的问题、你溢出了给个提示啊  发表于 2014-8-4 11:22
发表于 2014-8-4 11:23:49 | 显示全部楼层
nbzwt 发表于 2014-8-3 08:54
你觉得初始化都通不过文件系统有什么用吗?BTW,早就已经搞定啦

如果你用RTOS,需要做的只是设置SD接口方式为SDIO
 楼主| 发表于 2014-8-4 17:35:18 | 显示全部楼层
hansh 发表于 2014-8-4 11:23
如果你用RTOS,需要做的只是设置SD接口方式为SDIO

移植RTOS工作量超过修改SDIO驱动了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-3-29 18:54 , Processed in 0.055293 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表