如果您不是构建商业产品,而是构建一些供您自己使用并放入发动机舱的东西,那么您可能可以使用 USB。 USB 可以轻松地与乘客舱中的笔记本电脑连接,尽管它不是为高噪声环境而设计的,但它会在相当高的电压下发出差分信号。
You've already chosen the AT90CAN128, whose standout feature compared to other AVR processors is support for the CAN bus. There really is not a better choice than CAN for an automotive application with your data rate and noise immunity requirements. If you march in to an automotive customer with anything other than CAN, you'll end up spending all your time defending the decision not to use it.
With that said, for noise immunity in a hostile environment like a car you'll need a bus using differential signaling. That rules out i2c or SPI, which is unfortunate because they meet your other requirements. RS-485 would be workable as @Andrew Edgecombe points out.
If you're not building a commercial product but instead building something for your own use to put in the engine compartment, you can probably get by with USB. USB will make it easy to interface with a laptop in the passenger compartment, and though it isn't designed for high-noise environments it is differentially signaled at a reasonably high voltage.
For all out reliability you can't go past CANbus (but then that was sort of implied by your choice of processor?)
Depending on what you want to interface to, this can be very simple - the base level protocol is quite straight forward. But if you want to talk to any other non-proprietary devices you'll have to implement the higher protocols (eg. CANopen).
But if CANbus isn't appropriate, then I would recommend RS485 or RS422 (depending on your topology). If all you're trying to achieve is point to point communications it's identical to RS232. (you'll have to put your own protocol layer on top if you're trying to support multidrop comms though.)
Two other excellent choices other than CAN are LIN and FlexRay. LIN is a simpler, slower interface while FlexRay is more robust and designed for safety critical systems like real-time controls of brakes.
For a nice overview chart of how the various bus choices interrelate see this slide.
发布评论
评论(5)
您已经选择了 AT90CAN128,与其他 AVR 处理器相比,其突出特点是支持 CAN 总线。 对于满足您的数据速率和抗噪要求的汽车应用来说,确实没有比 CAN 更好的选择了。 如果您使用 CAN 以外的任何技术来接触汽车客户,您最终将花费所有时间来捍卫不使用 CAN 的决定。
话虽如此,为了在汽车等恶劣环境中实现抗噪性,您需要使用差分信号的总线。 这排除了 i2c 或 SPI,这是不幸的,因为它们满足您的其他要求。 正如 @Andrew Edgecombe 指出的那样,RS-485 是可行的。
如果您不是构建商业产品,而是构建一些供您自己使用并放入发动机舱的东西,那么您可能可以使用 USB。 USB 可以轻松地与乘客舱中的笔记本电脑连接,尽管它不是为高噪声环境而设计的,但它会在相当高的电压下发出差分信号。
You've already chosen the AT90CAN128, whose standout feature compared to other AVR processors is support for the CAN bus. There really is not a better choice than CAN for an automotive application with your data rate and noise immunity requirements. If you march in to an automotive customer with anything other than CAN, you'll end up spending all your time defending the decision not to use it.
With that said, for noise immunity in a hostile environment like a car you'll need a bus using differential signaling. That rules out i2c or SPI, which is unfortunate because they meet your other requirements. RS-485 would be workable as @Andrew Edgecombe points out.
If you're not building a commercial product but instead building something for your own use to put in the engine compartment, you can probably get by with USB. USB will make it easy to interface with a laptop in the passenger compartment, and though it isn't designed for high-noise environments it is differentially signaled at a reasonably high voltage.
为了获得全面的可靠性,您不能超越 CANbus(但这在某种程度上是由您选择的处理器暗示的?)
根据您想要连接的接口,这可能非常简单 - 基础级协议非常简单。 但如果您想与任何其他非专有设备通信,您将必须实现更高的协议(例如 CANopen)。
但如果 CANbus 不合适,那么我会推荐 RS485 或 RS422(取决于您的拓扑)。 如果您想要实现的只是点对点通信,那么它与 RS232 相同。 (如果您想支持多点通信,则必须将自己的协议层放在顶部。)
For all out reliability you can't go past CANbus (but then that was sort of implied by your choice of processor?)
Depending on what you want to interface to, this can be very simple - the base level protocol is quite straight forward. But if you want to talk to any other non-proprietary devices you'll have to implement the higher protocols (eg. CANopen).
But if CANbus isn't appropriate, then I would recommend RS485 or RS422 (depending on your topology). If all you're trying to achieve is point to point communications it's identical to RS232. (you'll have to put your own protocol layer on top if you're trying to support multidrop comms though.)
除了 CAN 之外,另外两个出色的选择是 LIN 和 FlexRay。 LIN 是一个更简单、更慢的界面,而FlexRay 更加强大,专为制动实时控制等安全关键系统而设计。
有关各种总线选择如何相互关联的概览图表,请参阅此幻灯片。
Two other excellent choices other than CAN are LIN and FlexRay. LIN is a simpler, slower interface while FlexRay is more robust and designed for safety critical systems like real-time controls of brakes.
For a nice overview chart of how the various bus choices interrelate see this slide.
我始终认为 CAN 是汽车通信中最好的。
I would always suggest that CAN is the best in automotive communication.
正如其他人所说,CAN 是标准的、稳健的、更稳健但速度较慢等。
如果您需要更大的系统,Linux 内核甚至从 2.6.15 版本开始支持它。
As others said, CAN is standard, robust, more robust with slow speed etc.
And there's even support in Linux kernel for it from version 2.6.15 if you ever need bigger system.