有没有人尝试过spi的多主机通讯呀?
何帅帅:
是不是只要CLK统一,就能进行通讯呀
Susan Yang:
个人感觉多主机会比多从机更加复杂。
不知道您现在使用的是哪款MSP430的芯片?
在主要的MSP430芯片中,使用多主机的时候,您需要使一个主机如master 1 将通过软件(如使用GPIO引脚)将trigger 连到另一主机如master 2上,以确保第二个不会中断。
即master 1应该通过普通端口(如使用GPIO引脚)控制master 2的STE(slave transmit enable)引脚。同理,master 2也应该通过普通端口(如使用GPIO引脚)控制master 1的STE。
这样master 1就知道自己是否被master 2 “shut-up” 或者 released(禁言或者释放)
但是据我所知目前没办法得知 STE pin当前的确切状态,所以实现起来比较困难。
PS:没有实际做过多主机的项目,所以请实际做过的大神分享一下经验 谢谢
何帅帅:
回复 Susan Yang:
我目前使用的是MSP430G2202款芯片。
我的想法是master1 通过GPIO 来给master2 一个中断信号,然后master2 进行数据发送,在两个主机时钟统一的情况下,理论上应该也能实现数据读取。其中,master1 master2都可用于扩展读取其他设备。
何帅帅:
回复 Susan Yang:
或者,能否通过外部中断来控制USIMST变量的0/1(0为从机模式,1位主机模式),这样来实现主从机模式的切换。
灰小子:
回复 何帅帅:
spi多主机的应用,本人觉得重点是对CS线状态的监听,并在操作完毕及时释放cs线。
cs线的状态是所有cs引脚状态的线与
何帅帅:
回复 灰小子:
与啥?兄嘚,后面是啥0.0
Susan Yang:
回复 何帅帅:
之前是我理解错了STE的功能,如果目标是主设备,当使用STE时,则时钟输出也将被禁用,并且内部状态将被重置。所以不太适合多主机的情况。
您的想法“master1 通过GPIO 来给master2 一个中断信号” 这个更确切说应该是
“一个主机master1将通过软件(使用GPIO引脚)将中断发拉到另一主机master2 上,以确保在mster1通信时master2不会中断”
我在E2E上发现了一个帖子,您可以参考一下
e2e.ti.com/…/93631
Susan Yang:
回复 何帅帅:
cs线的状态是所有cs引脚状态的线与
灰小子 说的应该是 “线与”
baike.baidu.com/…/10525288
何帅帅:
回复 Susan Yang:
非常感谢你~~
我的作品不需要两个主机同时为master模式
需要主机1固定为master模式
主机2平时为master模式,仅在接收到主机1的信号(GPIO拉高电平)期间切换为slave模式,
从而让主机1对主机2的数据进行读取
所以是否可以通过程序配置,让主机2在程序运行期间进行master和slave模式的切换呢。。。
我目前的想法是这样的~~
灰小子:
回复 何帅帅:
没法配置,都为master模式时是没法通讯的,主机2收不到主机1的信号。除非主机1用额外的io控制主机2的状态。
个人觉得,可能你的应用中,主机2平时应该保持为slave模式,这是可以和主机1通讯,在需要的时候再转换为master模式模式。