This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

spi 多主机模式

Other Parts Discussed in Thread: MSP430G2202

有没有人尝试过spi的多主机通讯呀?

  • 是不是只要CLK统一,就能进行通讯呀
  • 个人感觉多主机会比多从机更加复杂。

    不知道您现在使用的是哪款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:没有实际做过多主机的项目,所以请实际做过的大神分享一下经验 谢谢
  • 我目前使用的是MSP430G2202款芯片。
    我的想法是master1 通过GPIO 来给master2 一个中断信号,然后master2 进行数据发送,在两个主机时钟统一的情况下,理论上应该也能实现数据读取。其中,master1 master2都可用于扩展读取其他设备。
  • 或者,能否通过外部中断来控制USIMST变量的0/1(0为从机模式,1位主机模式),这样来实现主从机模式的切换。
  • spi多主机的应用,本人觉得重点是对CS线状态的监听,并在操作完毕及时释放cs线。

    cs线的状态是所有cs引脚状态的线与

  • 与啥?兄嘚,后面是啥0.0
  • 之前是我理解错了STE的功能,如果目标是主设备,当使用STE时,则时钟输出也将被禁用,并且内部状态将被重置。所以不太适合多主机的情况。

    您的想法“master1 通过GPIO 来给master2 一个中断信号” 这个更确切说应该是

    “一个主机master1将通过软件(使用GPIO引脚)将中断发拉到另一主机master2 上,以确保在mster1通信时master2不会中断”

    我在E2E上发现了一个帖子,您可以参考一下

    e2e.ti.com/.../93631
  • cs线的状态是所有cs引脚状态的线与

    灰小子 说的应该是 “线与”

    baike.baidu.com/.../10525288
  • 非常感谢你~~
    我的作品不需要两个主机同时为master模式
    需要主机1固定为master模式
    主机2平时为master模式,仅在接收到主机1的信号(GPIO拉高电平)期间切换为slave模式,
    从而让主机1对主机2的数据进行读取
    所以是否可以通过程序配置,让主机2在程序运行期间进行master和slave模式的切换呢。。。
    我目前的想法是这样的~~
  • 没法配置,都为master模式时是没法通讯的,主机2收不到主机1的信号。除非主机1用额外的io控制主机2的状态。
    个人觉得,可能你的应用中,主机2平时应该保持为slave模式,这是可以和主机1通讯,在需要的时候再转换为master模式模式。
  • 你说的这样也可以达到同样的目的,大佬有没有相关经验呀?430g系列能实现主从模式的在线切换吗?
  • spi的主从模式在线切换,理论上是没问题的。

    但我没测试过主从模式切换,我一般从系统的架构设计就避免那么复杂的运行逻辑。

    只要合理规划各个mcu间的功能,不需要那么复杂的。