OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6499|回复: 5

STM32F407 SDIO读写SD卡DATACRCFAIL错误

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-3-24
在线时间
3 小时
发表于 2016-3-24 16:47:41 | 显示全部楼层 |阅读模式
各位大神:
小弟最近调试裸机版本的SD卡读写测试程序,发现在仿真的时候  时对时错,很不稳定。
数据报错的时候提示数据CRC错误。
各位大神有没有类似的经历或者经验介绍,期待各位的帮忙。
DMA读写方式,附部分源码
/**
  * @brief  Tests the SD card Single Blocks operations.
  * @param  None
  * @retval None
  */
void SD_SingleBlockTest(void)
{
  /*------------------- Block Read/Write --------------------------*/
  /* Fill the buffer to send */
  Fill_Buffer(Buffer_Block_Tx, BLOCK_SIZE, 0x320F);

  if (Status == SD_OK)
  {
    /* Write block of 512 bytes on address 0 */
    Status = SD_WriteBlock(Buffer_Block_Tx, 0x00, BLOCK_SIZE);
    /* Check if the Transfer is finished */
    Status = SD_WaitWriteOperation();
    while(SD_GetStatus() != SD_TRANSFER_OK);
  }

  if (Status == SD_OK)
  {
    /* Read block of 512 bytes from address 0 */
    Status = SD_ReadBlock(Buffer_Block_Rx, 0x00, BLOCK_SIZE);
    /* Check if the Transfer is finished */
    Status = SD_WaitReadOperation();
    while(SD_GetStatus() != SD_TRANSFER_OK);
  }

  /* Check the correctness of written data */
  if (Status == SD_OK)
  {
    TransferStatus1 = Buffercmp(Buffer_Block_Tx, Buffer_Block_Rx, BLOCK_SIZE);
  }

  if(TransferStatus1 == PASSED)
  {
    STM_EVAL_LEDOn(LED2);
  }
  else
  {
    STM_EVAL_LEDOff(LED2);
    STM_EVAL_LEDOn(LED4);   
  }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-3-24
在线时间
3 小时
 楼主| 发表于 2016-3-25 11:23:24 | 显示全部楼层
这个帖子看来没什么人气啊,也不知道是大家没有遇到过类似的问题,还是太简单了,大神们不屑解答
现将暂时解决方案附上,望对后来者可以有所启发。
(1) 24M CLK ,SD卡 1bit
(2) 8M以下时钟,SD卡 4bit,会有一定几率,但是相比24MCLK 4bit要低很多很多
问题猜测:
SD卡座距离CPU较远,10 cm左右的样子,配置为1bit 可以有效的解决数据错位的问题。降低CLK速率,可以有效解决误码问题。
回复 支持 1 反对 0

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-3-24
在线时间
3 小时
 楼主| 发表于 2016-3-24 16:48:26 | 显示全部楼层
自己先顶上来,在线等
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2016-3-24
在线时间
3 小时
 楼主| 发表于 2016-3-24 17:17:34 | 显示全部楼层
没有人支招吗
回复 支持 反对

使用道具 举报

17

主题

142

帖子

0

精华

高级会员

Rank: 4

积分
891
金钱
891
注册时间
2016-2-16
在线时间
160 小时
发表于 2017-2-25 09:20:40 来自手机 | 显示全部楼层
dma、sdio设置好,中断模式能够正常访问的
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
271
金钱
271
注册时间
2013-8-5
在线时间
100 小时
发表于 2024-7-28 19:23:42 | 显示全部楼层
qiu_zhi2008 发表于 2016-3-25 11:23
这个帖子看来没什么人气啊,也不知道是大家没有遇到过类似的问题,还是太简单了,大神们不屑解答
现将 ...

兄弟高见,我刚刚调试,一个其他的开发板,Data和cmd接口都没有硬件上拉电阻,一直看正点原子等这样的参考程序,硬是没想到硬件会有问题。刚刚通过软件上拉的方式,但是可以读,无法写,断点调试发现“HAL_SD_ERROR_DATA_CRC_FAIL”错误,看你说的降低CLK速率,从参考的6分频改成了8分频,立马可以写入,再无任何写入失败问题了。感谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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