13176|11

80

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SPI模式下连续读写SD卡,会被其他外设中断干扰,造成死循环 [复制链接]

                                 采用英蓓特的例程,SYSTICK和UART的中断都会造成连续读写失败,进入死循环。请大家注意。除了关中断,我还没找到其他合适的方法。
此帖出自stm32/stm8论坛

最新回复

我的也是,增加了网口的操作函数后写SD卡就乱了,注释掉网口函数就正常,我觉得是DM9000A中断的原因,但是也还没解决  详情 回复 发表于 2012-10-28 21:20
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

你查查看,SD卡的读写操作是否有超时控制

如果有超时控制,连续读写时被中断则可能造成操作失败。

如果没有超时控制,则要检查你的程序,是否有代码重入的问题和/或变量访问冲突的问题。
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

谢谢香版提供的思路

                                 SD卡是按块来操作的,一块通常是512字节。在读操作时,通过SPI发送读命令,然后SD卡发送一块数据(512)字节。问题是,如果这512字节还没发送完,SPI通信已经被打断,这样也会造成数据接受错误。不知分析的对否,请大家斧正!
此帖出自stm32/stm8论坛
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

4
 

..

没看见SD卡有超时控制
就算是SPI通信被中断了 也是在字节和字节之间
什么中断能占用那么长时间
应该主要看看代码重入和变量访问冲突吧

路过 看看..
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 

建议可使用SPI的DMA方式访问SD卡


  我使用过的SDIO的Demo 只能作参考。
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

6
 

直接原因并不是中断引起的

                                 SPI模式下读写SD卡,SD作为设备,工作时钟由SPI控制,中断过来, 顶多会使SD卡的工作时钟中断, SD卡进入待机状态而已,当时钟恢复, SD也就会回到正常状态. 由于SPI是硬件自动发送并接受一个数据, 所以其他中断只会是在字节和字节之间,所以很明显,直接原因并不是中断引起的
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 

多谢指点!

                                 多谢!我再继续调试
此帖出自stm32/stm8论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 

重点分析硬件冲突

                                 使用spi访问sd卡过程中,是否有其他中断修改了硬件设置,如关闭了spi外设时钟,导致读spi函数死循环。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 

这个问题和置顶的I2C属同一性质

我想应当还有写FLASH,也会有这样的问题发生。
例程给出的都是单一工作状态,都能通过。各种外设一起开动,问题就来了。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 

多谢指点!

                                 多谢指点!
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

11
 
楼主,您是否已经解决了这个问题,我也遇到同样的问题呀?麻烦告知呀!
此帖出自stm32/stm8论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

12
 
我的也是,增加了网口的操作函数后写SD卡就乱了,注释掉网口函数就正常,我觉得是DM9000A中断的原因,但是也还没解决
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表