极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16517|回复: 9

SPI多主单从问题

[复制链接]
发表于 2015-1-6 16:11:06 | 显示全部楼层 |阅读模式
我现在需要用两块arduino连接到一个SPI接口的SD卡模块上,由于暂时没有数字开关,我使用继电器来切换不同的arduino连接SD卡,如下图所示。


平时Arduino2一直连上SD卡,当Arduino1需要使用SD卡时,向Arduino2发出中断,然后打开继电器,使得Arduino1连接上SD卡,Arduino2断开。

那么现在问题来了,Arduino1读写SD卡都没有问题,Arduino2读没有问题,但写入时,执行到SD.open(filename,FILE_WRITE);就一直死机,这是怎么回事啊?

是不是SPI的SCK信号发生问题,还是什么原因呢?谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-1-6 21:59:17 | 显示全部楼层
其实你不用那么麻烦的,可以arduino1和2用串口连接,当1要读写卡时通过串口发信息给2,由2来执行读写,不就行了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-7 09:54:41 | 显示全部楼层
fish6823 发表于 2015-1-6 21:59
其实你不用那么麻烦的,可以arduino1和2用串口连接,当1要读写卡时通过串口发信息给2,由2来执行读写,不就 ...

我现在1是接有传感器的,需要实时响应,所以1传感器检测到后,需要立刻存入SD卡,并返回是否成功。而2如果在读卡的过程中被中断,要求写入1传过来的数据,会不会造成冲突啊?
而且在2被中断的时候,它的串口还可以接受数据吗?arduino.cc上说“Serial data received while in the function may be lost”
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-8 16:31:33 来自手机 | 显示全部楼层
问题解决了,我File类型的变量本来是放在函数里的,现在我把它设为全局变量就解决了。好奇怪啊,是bug吗?不科学啊!
回复 支持 反对

使用道具 举报

发表于 2015-1-8 18:21:27 | 显示全部楼层
实现功能是两个主机轮流读取SD卡吗?
回复 支持 反对

使用道具 举报

发表于 2015-1-8 18:22:14 | 显示全部楼层
感觉一个就可以实现,
回复 支持 反对

使用道具 举报

发表于 2015-1-9 11:09:52 | 显示全部楼层
mhtt 发表于 2015-1-7 09:54
我现在1是接有传感器的,需要实时响应,所以1传感器检测到后,需要立刻存入SD卡,并返回是否成功。而2如果 ...

2读卡时被中断如果有影响的话,你现在的模式也有影响的。
2被中断后才通过串口传数据,应该没有问题的,丢失的只是中断前串口遗留的未读数据,不影响后面的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-13 19:13:04 | 显示全部楼层
suoma 发表于 2015-1-8 18:21
实现功能是两个主机轮流读取SD卡吗?

平时2一直读,1需要读了就让1读
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-13 19:16:18 | 显示全部楼层
fish6823 发表于 2015-1-9 11:09
2读卡时被中断如果有影响的话,你现在的模式也有影响的。
2被中断后才通过串口传数据,应该没有问题的, ...

我现在串口在接受另一个传感器的值,所以不能丢,一丢就会出问题的
回复 支持 反对

使用道具 举报

发表于 2015-1-15 16:33:40 | 显示全部楼层
楼主你好,请问你的文件名长度有没有很长(比如是拿日期时间来做文件名的),然后这时候open就会失败,你有没有试过?有没有解决的办法?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-18 05:34 , Processed in 0.038310 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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