坚固且易于实现的串行总线(汽车应用)

时间:2020-03-06 14:49:59  来源:igfitidea点击:

如果主要选择标准是,我们将在汽车嵌入式系统中使用哪种串行通信总线:

  • 电气坚固
  • 慢速(32 kb / s)
  • 易于编程
  • 易于与微控制器接口

它不会传输大量数据,但是需要定期以高速(100 500 Hz)进行传输。我发现如果接地线中有噪声,RS-232的可靠性还不够。 CAN总线似乎很有趣,但是我没有经验。

我们目前对AVR AT90CAN128微控制器的组合感兴趣。

解决方案

为了获得全面的可靠性,我们不能超越CANbus(但是那是我们所选择的处理器所隐含的吗?)

根据我们要连接的对象,这可能非常简单,基本级别的协议非常简单。但是,如果我们想与任何其他非专有设备对话,则必须实现更高的协议(例如CANopen)。

但是,如果不适合使用CANbus,那么我建议使用RS485或者RS422(取决于拓扑)。如果我们要实现的只是点对点通信,则它与RS232相同。 (但是,如果我们要支持多点通信,则必须在自己的协议层之上。)

我们已经选择了AT90CAN128,与其他AVR处理器相比,它的突出特点是对CAN总线的支持。对于数据速率和抗扰性要求,对于汽车应用而言,确实没有比CAN更好的选择。如果我们使用CAN以外的其他产品来吸引汽车客户,我们将最终花费所有时间为不使用它的决定辩护。

话虽如此,为了在汽车等恶劣环境中获得抗扰性,我们需要使用差分信号的总线。排除了i2c或者SPI,这很不幸,因为它们满足其他要求。如@Andrew Edgecombe所指出的,RS-485是可行的。

如果我们不是在生产商业产品,而是在建造自己的东西放入发动机舱,则可以使用USB。 USB可以很容易地与乘客舱中的笔记本电脑接口,尽管它不是为高噪声环境设计的,但它会以合理的高电压进行差分信号传输。

就像其他人所说的那样,CAN是标准的,强大的,速度较慢的更强大。

如果需要更大的系统,甚至从2.6.15版开始,Linux内核都对此提供支持。

LIN和FlexRay是CAN以外的另外两个出色的选择。 LIN是一个更简单,更慢的界面,而FlexRay则更强大,并且设计用于诸如刹车实时控制之类的安全关键系统。

有关各种总线选择之间如何相互联系的详细概述图,请参见此幻灯片。