如何知道嵌入式系统中的主要和次要微控制器已准备好通过通信总线传输数据

时间:2015-12-14 15:52:55

标签: microcontroller

我的嵌入式系统有两个微控制器:主要和次要。两者都是按时启动的。这两个控制器之间存在大量数据传输。在控制器之间传输数据之前,它们应该已启动并运行主要人员如何知道中学是否正常运行,反之亦然?请提供方法。

我已经实现了GPIO Toggle方法。但需要更好的方法。

我的GPIO握手方法: 主控制器和辅助控制器共享两个GPIO。对于两个控制器,将输入一个GPIO,并输出其他GPIO。可以说,GPIO'A'输出为Primary,输入输出为辅助,GPIO'B'输出为Secondary,输入为Primary。理想情况下,GPIO状态为HIGH。两个控制器都使用GPIO相互发信号通知它们的准备情况。一旦主控制器启动并准备参与数据传输,它就会下拉GPIO'A'并在任何数据传输之前轮询GPIO'B'。一旦辅助控制器启动,它将下拉另一个GPIO'B'以通知主要它已准备好。在检测数据传输之前,辅助设备还会检测GPIO“A”以检查主设备是否已启动并正在运行。 辅助在主要时间之前启动时也会发生相同的情况。

这种方法的缺点是:两个GPIO必须专用于握手。我缺少GPIO。

请提供更好的选择。感谢

1 个答案:

答案 0 :(得分:0)

如果我想知道我的通信是否有效(连接器已插入,参与者正在运行......)我提供了一些检查协议中数据的方法。

如果通信是双向的,则发送控制器期望来自接收控制器的预定义应答。如果答案丢失/错误,我知道必须有问题。

例如,I2C包括ACK位。如果他们不来,我知道我的沟通伙伴没有听。

SPI有两行:out和in。如果发送,请永久检查哪些数据正在进入。如果无效,则中止。