野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16408|回复: 6

SDIO使用注意事项

[复制链接]
发表于 2014-5-14 17:13:47 | 显示全部楼层 |阅读模式
在使用SDIO传输数据时,或许很多人都没注意到的一个事项,在使用DBCKEND判断收发结束其实并不准确,还需要进一步做判断,需要再结合RXACE和TXACT做进一步判断。
回复

使用道具 举报

发表于 2014-5-14 20:03:43 | 显示全部楼层
原来官方的SDIO库是用什么方式来检测的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 11:43:52 | 显示全部楼层
官方的库文件只是底层的一些操作函数,具体实现方法是我们自己写的。我看了配套的开发板实验例程中数据传输是使用DBCKEND的中断来作为结束标志,应该再加我提到的那两个标志位的判断,数据都是先进FIFO的,然后才进入数据通道,或进入数据通道后再进入FIFO的,看是收还是发,只是有FIFO中的所有操作完成才能算整个传输的过程完成。可以在SD卡的实验例程中在DBCKEND的中断程序中添加读出STA寄存器的状态看到我说的现象,
回复 支持 反对

使用道具 举报

发表于 2014-5-16 11:47:39 | 显示全部楼层
365497604 发表于 2014-5-16 11:43
官方的库文件只是底层的一些操作函数,具体实现方法是我们自己写的。我看了配套的开发板实验例程中数据传输 ...

开发板配套的关于SDIO的操作是ST官方的SDIO文件来的,现在更新到5.0版了,不知道会不会有你说的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 11:57:50 | 显示全部楼层
我的意思不是SDIO操作库的问题,是我们使用库进行相关数据传输时需要注意的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 12:08:49 | 显示全部楼层
在数据传输操作中我们一般很少去关闭数据通道状态机,所以这错误的现象不是很明显,可能你进行别的操作这段延迟正好把数据全部传输完成,也就没出现错误。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 12:11:00 | 显示全部楼层
本帖最后由 365497604 于 2014-5-16 12:15 编辑

比如我的数据收发结果处理中有关状态机这个操作,那么如果没有增加相关判断就会出现数据传输错误。
/*******************************************************************************
函数名称:SD_DATA_Response STM_SDIO:ATA_Response()
入口函数:无
出口函数:操作结果
函数说明:数据操作结果
编写人员:陈志鹏
编写时间:2014.05.12
修改人员:
修改时间:
修改说明:
********************************************************************************/
SD_DATA_Response STM_SDIO:ATA_Response()
{
SD_DATA_Response status;

while(!(SDIO->STA.BIT.DCRCFAIL || SDIO->STA.BIT.DTIMEOUT || SDIO->STA.BIT.RXOVERR || SDIO->STA.BIT.STBITERR || SDIO->STA.BIT.DBCKEND));

if(SDIO->STA.BIT.DBCKEND==1)
{
  status=SD_DATA_DBCKEND;
  while(SDIO->STA.BIT.RXACT);
  while(SDIO->STA.BIT.TXACT);
}
else if(SDIO->STA.BIT.DTIMEOUT)
{
  status=SD_DATA_TIMEOUT;
}
else if(SDIO->STA.BIT.DCRCFAIL)
{
  status=SD_DATA_CRCFAIL;
}
else if(SDIO->STA.BIT.RXOVERR)
{
  status=SD_DATA_RX_OV_ERR;
}
else if(SDIO->STA.BIT.STBITERR)
{
  status=SD_DATA_START_BIT_ERR;
}

SDIO->ICR.ALL=0x0000073A;
SDIO->DCTRL.BIT.DTEN=0;
return status;
}
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-17 02:30 , Processed in 0.047936 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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