我试图通过SPI通信使PIC1成为主机,PIC2成为从机。我想从PIC1(master)向PIC2(slave)发送一个命令,然后让它执行一些操作。不过,我想建立另一个SPI通信从PIC2(从)到数字电位器(MCP4241)通过SPI通信以及。这行吗?
举例说明:
PIC1发送'a'--->PIC2读取
PIC2--->与数字电位器(MCP4241)建立连接
PIC2--->将数据发送到数字罐
所以在PIC1和PIC2,然后PIC2和digital pot之间会有SPI通信,我只是不知道这是否可行,因为我需要使用相同的管脚。对于这两张照片,我使用的是pic16f690。
我希望我的问题是明确的,请如果这不起作用,我应该如何解决它?
谢谢!
最佳答案
首先,为了简单的生活,我建议使用一个PIC和两个SPI端口的PIC2。
然而,如果你确定你只想使用一个SPI端口,有时是主端口,有时是从端口,那么要记住的是,你真的不希望两个pic同时驱动串行线。您可能需要编写TRIS寄存器,以使端口三态变为高z,并禁用spi外围设备。
如果你在里面放了一些串联电阻,那么事情就不会那么糟糕了,例如pic1试图驱动SCLK高,而pic2试图驱动它低,那么从pic1到pic2的电流将受到限制
您可以使用一个额外的GPIO来允许pic2在pic1繁忙时告诉它。您需要清楚地了解这两个设备之间的执行流,这样您就不会被竞速条件等抓到
例如,您可以有
pic1向pic2发送“write pot please”命令
pic1知道等待忙碌的信号
然后pic2断言忙信号
pic1看到一个繁忙的信号,知道现在等待它清除,然后再启动另一个spi事务
pic2用pot执行spi事务
pic2清除忙信号
pic1 is看到忙信号已清除,并知道可以执行spi事务
pic2在获得另一个“write pot please”之前不会尝试任何spi事务
有很多方法可以实现这样的事情。重要的是在开始实现之前清楚地知道流是什么