SPI两主一从的问题

2015-01-071.3万
AI 快速预览详细 收起
本文探讨了使用两块Arduino通过继电器切换连接到同一个SPI接口的SD卡模块时遇到的问题。主要问题是Arduino2在写入SD卡时会死机。文章分析了SCK信号可能的问题,并提供了具体的解决方案,以确保Arduino1优先使用SD卡并避免Arduino2长时间中断。此外,还讨论了通过串口传输数据的替代方案及其潜在问题。
我现在需要用两块Arduino连接到一个SPI接口的SD卡模块上,由于暂时没有数字开关,我使用继电器来切换不同的arduino连接SD卡,如下图所示。
SPI两主一从的问题图1



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

注意:
1、Arduino1具有优先使用SD卡的权利,且对实时性要求很高,需要使用SD卡必须立即打开。
2、Arduino2不可以长时间被中断。

那么现在问题来了,Arduino1读写SD卡都没有问题,Arduino2读没有问题,但写入时,执行到SD.open(filename,FILE_WRITE);就一直死机,这是怎么回事啊?
是不是SPI的SCK信号发生问题,还是什么原因呢?或者有没有更好的解决方法?谢谢!

以前有想过只让2连接SD卡,1通过串口发送数据给2,让2将数据存储到SD卡中。可这样会有3个问题:
1、串口传输会需要一定的时间,而Arduino2不能被长时间中断
2、如果中断前,2刚好在操作SD卡,那中断过程中,2将1传来的数据存储到SD卡会不会发生错误?中断返回后,还可以接着操作SD卡吗?
3、arduino.cc中有说“Serial data received while in the function may be lost.“,中断时串口数据接收会有问题。(不过这个倒可以用I2C的Wire库来解决)

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(2)
Youyou
Youyou
以前还有人使用过用继电器来调速,那个啪啪啪的声音实在。。。
云水尧
云水尧
作者
回复Youyou
:loveliness:,有推荐的模块吗?能在dfrobot里买到的
Grey
Grey回复Youyou
那个啪啪啪的声音。。。。
Grey
Grey
继电器。。。
云水尧
云水尧
作者
回复Grey
没有数字开关嘛,暂时使用继电器代替一下啦,测试下来还可以,影响不是很大
- 没有更多了 -