多个微控制器之间的通讯
我想开始实现一个由N个微控制器(N> = 2个MCU)组成的系统,但是我想知道让它们彼此通信的可能性。 理想情况下,将(N-1)个微控制器放置在充当客户端的房屋内部,而最后一个(“服务器”)微控制器则通过USB连接到PC。我现在遇到的问题是如何将这些(N-1)个微控制器连接到“服务器”。客户端MCU执行非常简单的任务,因此仅使用它们提供CAN / PHY-MAC的方法,使用ARM进行此类简单的工作可能不是一个好的解决方案。 对于大多数设备而言,每隔几分钟通信一次,对于其他设备而言,通信不会超过一次。速度不是很关键(消息很短):1 Mbit / s我认为对于我的目的来说是过大了。 我计划使用的MCU如下。 Atmel AVR Tiny / Mega 德州仪器MSP430 ARM Cortex M3 / M4 (可能是Atmel AVR UC3-32位) 我想尽可能避免使用PIC(个人选择),这仅仅是因为编程它们的可能性很小(上述所有功能都有或多或少的开源工具以及一些官方工具)。 我知道有些ARM提供CAN功能,但对其他ARM 不太确定。 现在,我想到了以下可能性: 简单的GPIO发送数据(例如,高电平时> 16位表示消息的开始,低电平时> 16位表示消息的结束)。但是,它必须处于标准频率<<(frequency_client,frequency_server)才能检测所有位。每个客户端MCU仅需要一根电缆。 RS-232:我认为这是迄今为止最常用的通信协议,但是我不知道它的扩展性如何。我现在正在考虑使用多达64个客户端MCU(可能以后再考虑) USB:AFAIK大多类似于RS-232,但是在这种情况下,它的扩展性不太好(尽管USB支持许多设备-如果我记得没错,则支持255-对于此应用程序可能过于复杂) RJ45 /以太网:这是我真正喜欢使用的,因为它可以无障碍地进行长距离传输(至少使用屏蔽> Cat 6电缆)。问题是成本(PHY,MAC,变压器等)。我不知道您是否真的可以在家焊接好。这样我就不需要客户端MCU 无线/ ZigBee:模块非常昂贵,尽管这可能是避免桌子后面出现“意大利面”的一种方式 射频模块/收发器:我说的是300 MHz-1 GHz频段的模块,因此在家里很难焊接。这些模块都是内置的,但它们与ZigBee相当昂贵(至少在Mouser,Sparkfun的RF模块似乎更便宜)。 能够?它似乎非常强大。即使我不打算在汽车应用中使用它,它仍然可能是一个不错的选择。 I²C / SPI / UART?再说一次-如果可能的话,最好避免电缆出现“意大利面条” PLC并不是真正的选择。随着长度的增加,性能会很快下降,并且取决于电网的电容负载。我认为价格方面与以太网大致相同。 …