我正在研究一种连接两个微控制器的方法。在序列化层面上,我考虑使用Nano Protobuffers (http://code.google.com/p/nanopb/),这样我可以编码/解码消息并在两个处理器之间发送它们。
基本上,一个小型处理器将是RPC服务器,能够执行几个功能。更大的处理器将通过发送消息调用其RPCs,然后当数据准备好时,它将从较小的处理器中读取数据。
使用UART、I2C或SPI的优缺点是什么?
在发送之前,消息将被放入邮箱队列中。
我正在研究一种连接两个微控制器的方法。在序列化层面上,我考虑使用Nano Protobuffers (http://code.google.com/p/nanopb/),这样我可以编码/解码消息并在两个处理器之间发送它们。
基本上,一个小型处理器将是RPC服务器,能够执行几个功能。更大的处理器将通过发送消息调用其RPCs,然后当数据准备好时,它将从较小的处理器中读取数据。
使用UART、I2C或SPI的优缺点是什么?
在发送之前,消息将被放入邮箱队列中。
这取决于您的总体需求以及引脚的成本。
I2C只需要两根引脚,但它很慢,无论使用中断与否都很麻烦,即使使用了内置的外设模块。
它是一个主/从系统,适用于控制许多缓慢的设备,如温度传感器。
所有总线设备仅需要两条线路,在协议中通过I2C地址进行选择。
UART需要两个引脚,通常更快,易于处理,但在两侧几乎需要相同的时钟。
异步的一对一系统,如果两个系统都需要发送数据而不等待主轮询请求,则可以很好地使用。
也可以用作总线系统,但那样就需要主/从结构或更复杂的协议。
SPI需要3(或4个带CS的)引脚,速度最快,即使使用DMA也很容易实现,CPU时间开销低,经常有缓冲。 如果您有足够的空闲引脚,则我会更喜欢使用SPI。