mhtt 发表于 2015-1-6 16:11:06

SPI多主单从问题

我现在需要用两块arduino连接到一个SPI接口的SD卡模块上,由于暂时没有数字开关,我使用继电器来切换不同的arduino连接SD卡,如下图所示。


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

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

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

fish6823 发表于 2015-1-6 21:59:17

其实你不用那么麻烦的,可以arduino1和2用串口连接,当1要读写卡时通过串口发信息给2,由2来执行读写,不就行了。

mhtt 发表于 2015-1-7 09:54:41

fish6823 发表于 2015-1-6 21:59 static/image/common/back.gif
其实你不用那么麻烦的,可以arduino1和2用串口连接,当1要读写卡时通过串口发信息给2,由2来执行读写,不就 ...

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

mhtt 发表于 2015-1-8 16:31:33

问题解决了,我File类型的变量本来是放在函数里的,现在我把它设为全局变量就解决了。好奇怪啊,是bug吗?不科学啊!

suoma 发表于 2015-1-8 18:21:27

实现功能是两个主机轮流读取SD卡吗?

suoma 发表于 2015-1-8 18:22:14

感觉一个就可以实现,

fish6823 发表于 2015-1-9 11:09:52

mhtt 发表于 2015-1-7 09:54 static/image/common/back.gif
我现在1是接有传感器的,需要实时响应,所以1传感器检测到后,需要立刻存入SD卡,并返回是否成功。而2如果 ...

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

mhtt 发表于 2015-1-13 19:13:04

suoma 发表于 2015-1-8 18:21 static/image/common/back.gif
实现功能是两个主机轮流读取SD卡吗?

平时2一直读,1需要读了就让1读

mhtt 发表于 2015-1-13 19:16:18

fish6823 发表于 2015-1-9 11:09 static/image/common/back.gif
2读卡时被中断如果有影响的话,你现在的模式也有影响的。
2被中断后才通过串口传数据,应该没有问题的, ...

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

wz13625550312 发表于 2015-1-15 16:33:40

楼主你好,请问你的文件名长度有没有很长(比如是拿日期时间来做文件名的),然后这时候open就会失败,你有没有试过?有没有解决的办法?
页: [1]
查看完整版本: SPI多主单从问题