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



我的嵌入式系统有两个微控制器:主控制器和辅助控制器。两人都准时出发。这两个控制器之间存在大量数据传输。在控制器之间进行数据传输之前,它们应该启动并运行。primary如何知道secondary正在启动和运行,反之亦然?请提供方法。

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

我的GPIO握手方法:主控制器和辅助控制器共享两个GPIO。对于两个控制器,一个GPIO将被输入,另一个将被输出。比方说,GPIO‘A’是初级的输出和次级的输入,GPIO’B’是次级的输出和初级的输入。理想情况下,GPIO状态为HIGH。两个控制器都使用GPIO向对方发出准备就绪的信号。一旦主控制器启动并准备好参与数据传输,它就会在任何数据传输之前拉下GPIO"A"并轮询GPIO"B"。一旦辅助控制器引导,它将拉下另一个GPIO"B"以通知主控制器它已准备好。Secondary还感测GPIO"A",以在参与数据传输之前检查Primary是否已启动并正在运行。当辅助引导先于主引导时也会发生同样的情况。

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

请提供更好的替代方案。感谢

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

如果通信是双向的,则发送控制器期望来自接收控制器的预定答案。如果答案不正确,我知道肯定有问题。

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

SPI有两条线:输出和输入。如果发送,请永久检查输入的数据。如果无效,请中止。

最新更新