极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 50862|回复: 17

Arduino上SPI接多个从设备该如何接?大家来探讨探讨呗~

[复制链接]
发表于 2013-8-30 19:12:47 | 显示全部楼层 |阅读模式
本帖最后由 friskit 于 2013-8-30 19:25 编辑

话说最近有个项目,打算用一个主Arduino控制一大堆从Arduino。。。觉得自带的SPI库还是很方便的,但是发现了个问题。

一主一从还好说。但是当一主多从,似乎SPI库中没有提供相关的函数。看到了Arduino DUE是直接支持从设备选择的,所以估计不是DUE的设备都没有了……

然后我想想可能用个n选1多路选择器,由程序员手动控制片选信号,然后再用系统库,不止这样的方案是否可行。

如果再不行就换IIC了— —。。。

还有问个问题。。。Arduino Pro Mini支持IIC么。。。引脚是啥??
回复

使用道具 举报

发表于 2016-1-8 11:21:25 | 显示全部楼层

主设备自己的ss正常使用,再定义几个控制从设备ss引脚的片选数字引脚ss1,ss2,ss3.....从设备上的程序跟主设备上的都可以用spi的库啊
回复 支持 1 反对 0

使用道具 举报

发表于 2013-8-31 10:18:08 | 显示全部楼层
AVR都支持I2C,自己看文档。

SPI自定个SS就可以,要控制那个就控制SS脚让芯片知道就好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-1 09:18:26 | 显示全部楼层
Halry 发表于 2013-8-31 10:18
AVR都支持I2C,自己看文档。

SPI自定个SS就可以,要控制那个就控制SS脚让芯片知道就好

SPI对于主机来说只有一个SS,而且SPI库是已经把SPI的四个口都封装好了的。所以说主机没法做到多个SS。。。DUE能做到— —。。。

好吧已经用上IIC了。。不过它占的时钟频率比较多啊。。。
回复 支持 反对

使用道具 举报

发表于 2013-9-26 08:12:15 来自手机 | 显示全部楼层
自定义数字输出管脚为cs片选,操作spi之前,先操作自定义的片选脚,spi操作不用管片选的问题,当成只有一个从设备就好了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-26 14:26:37 | 显示全部楼层
maxims 发表于 2013-9-26 08:12
自定义数字输出管脚为cs片选,操作spi之前,先操作自定义的片选脚,spi操作不用管片选的问题,当成只有一个 ...

这么做就用不了Arduino的SPI库了……
回复 支持 反对

使用道具 举报

发表于 2013-9-26 21:32:24 | 显示全部楼层
friskit 发表于 2013-9-26 14:26
这么做就用不了Arduino的SPI库了……

应该不存在啊~SPI库操作单个的SPI设备没有问题吧?你自己定义管脚去操作每个设备的CS片选端,然后再用SPI库去操作该设备就好了。
对与SPI库来说,只有一个设备在线而已,相当于一个硬件开关去操作CS片选了嘛~
要不你就用一个74LS138做一个片选译码呗。

总的说来就是:SPI库软件操作SPI相关的,硬件去操作片选了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-29 10:44:14 | 显示全部楼层
SPI库似乎已经要求一个给定的CS了。。。不能用多个CS,所以顶多就是用个译码器。。。好吧已经改用IIC了。。
回复 支持 反对

使用道具 举报

发表于 2013-9-29 10:59:53 | 显示全部楼层
还不会SPI,只会IIC
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-29 18:36:39 | 显示全部楼层
学慧放弃 发表于 2013-9-29 10:59
还不会SPI,只会IIC

SPI就是个坑……还是IIC方便哈。。。不过每次寻址请求会浪费很多个时钟周期!!!!不过如果只是单纯的主发从收,速度还是很快的……
回复 支持 反对

使用道具 举报

发表于 2013-9-29 18:48:30 | 显示全部楼层
friskit 发表于 2013-9-29 18:36
SPI就是个坑……还是IIC方便哈。。。不过每次寻址请求会浪费很多个时钟周期!!!!不过如果只是单纯的主 ...

呵呵,是啊 啊
回复 支持 反对

使用道具 举报

发表于 2013-9-30 09:06:20 来自手机 | 显示全部楼层
friskit 发表于 2013-9-29 10:44
SPI库似乎已经要求一个给定的CS了。。。不能用多个CS,所以顶多就是用个译码器。。。好吧已经改用IIC了。。

嘿嘿,你弃用它的这个CS,自己用管脚做CS不行么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-30 09:30:40 | 显示全部楼层
maxims 发表于 2013-9-30 09:06
嘿嘿,你弃用它的这个CS,自己用管脚做CS不行么?

所以就不能直接用SPI库了……
回复 支持 反对

使用道具 举报

发表于 2013-12-15 00:11:13 | 显示全部楼层
这个帖子什么情况。。为什么会得出完全错误的结论这么久没人纠正。。
首先用多根连线分别联通arduino和其他spi设备
然后在使用时,通过拉高拉低片选,进行选择
传输时直接通过spi.transfer
回复 支持 反对

使用道具 举报

发表于 2013-12-15 09:35:15 来自手机 | 显示全部楼层
[email protected] 发表于 2013-12-15 00:11
这个帖子什么情况。。为什么会得出完全错误的结论这么久没人纠正。。
首先用多根连线分别联通arduino和其他 ...

是人家理解不过来,我已经说得很清楚了!
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 22:39 , Processed in 0.044400 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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