【问题标题】:CAN BUS protocol stackCAN BUS 协议栈
【发布时间】:2020-02-27 16:46:01
【问题描述】:

谁能给我解释一下什么是 CAN BUS 协议栈?是 CAN BUS+ 更高的层,比如 7 层的 CANopen 还是其他的,有人可以解释我如何使用 CAN 堆栈,如何将它与 CAN 总线连接,以及为什么需要它?

谢谢

【问题讨论】:

    标签: embedded can-bus canopen


    【解决方案1】:

    是的,它是具有更高层协议的 CAN 硬件,例如 CANopen、J1939 或 DeviceNet。

    就“OSI 模型”而言,仅谈论第 1-3 层和第 7 层才真正有意义,其中 CAN 是第 1 层和第 2 层,像 CANopen 这样的协议大致提供第 3 层和第 7 层。粗略地说,由于 CAN -open 还附带硬件规范,例如波特率、同步点和存根长度建议。

    所谓的“协议栈”实际上只是一个具有独立于平台的 API 的库,通常与特定于硬件的驱动程序一起交付。如果供应商声称他们支持特定的 MCU,则通常意味着您从供应商处获取驱动程序。

    所以基本上你购买这个预制库并将你的程序与它集成,然后在 CAN 总线上获得标准化的协议行为,这是与实现相同协议的其他节点通信所必需的。自己编写这样的库并非易事,尤其是对于作为一个大标准的 CANopen,您可能只会使用大约 10% 的可用功能。

    【讨论】:

    • 谢谢。我也在阅读这篇文章 (embitel.com/blog/embedded-blog/…),并且有一个 CAN 堆栈有两层,CAN IF 和 CAN NM。我猜这些是“OSI 模型”的一些层,比如 CAN NM 是网络层,还是我错了?还有传输级别(ISO 15765),我还在一些文章中发现 CANopen 有 7 层,而不仅仅是 3 或 7 层,所以我有点困惑。
    • @aztaztazt 是的,这是关于一些称为 ISO TP 的汽车协议。相同的原则。来自规范来源的一般信息,自动化中的 CAN:can-cia.org/can-knowledge
    猜你喜欢
    • 2023-03-07
    • 2013-02-17
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多