CAN总线协议栈
CAN BUS protocol stack
谁能给我解释一下什么是CAN BUS协议栈?它是 CAN BUS+ 更高层,比如 CANopen 7 层还是其他什么,有人可以解释一下我如何使用 CAN 堆栈,我如何将它与 CAN 总线连接,以及为什么我需要它?
谢谢
是的,它是具有更高层协议的 CAN 硬件,例如 CANopen、J1939 或 DeviceNet。
就 "OSI model" 而言,只有谈论第 1-3 层和第 7 层才真正有意义,其中 CAN 是第 1 层和第 2 层,而像 CANopen 这样的协议大致提供第 3 层和第 7 层。大致,因为 CAN-open 还附带硬件规格,例如波特率、同步点和存根长度建议。
所谓的 "protocol stack" 实际上只是一个具有平台无关 API 的库,通常与特定于硬件的驱动程序一起提供。如果供应商声称他们支持特定的 MCU,那么这通常意味着您从供应商那里获得了驱动程序。
所以基本上你购买了这个预制库并将你的程序与它集成,然后在 CAN 总线上获得标准化的协议行为,这是与实现相同协议的其他节点通信所必需的。自己编写这样一个库不是一件小事,尤其是对于 CANopen 来说,这是一个很大的标准,您可能只需要使用大约 10% 的可用功能。
谁能给我解释一下什么是CAN BUS协议栈?它是 CAN BUS+ 更高层,比如 CANopen 7 层还是其他什么,有人可以解释一下我如何使用 CAN 堆栈,我如何将它与 CAN 总线连接,以及为什么我需要它?
谢谢
是的,它是具有更高层协议的 CAN 硬件,例如 CANopen、J1939 或 DeviceNet。
就 "OSI model" 而言,只有谈论第 1-3 层和第 7 层才真正有意义,其中 CAN 是第 1 层和第 2 层,而像 CANopen 这样的协议大致提供第 3 层和第 7 层。大致,因为 CAN-open 还附带硬件规格,例如波特率、同步点和存根长度建议。
所谓的 "protocol stack" 实际上只是一个具有平台无关 API 的库,通常与特定于硬件的驱动程序一起提供。如果供应商声称他们支持特定的 MCU,那么这通常意味着您从供应商那里获得了驱动程序。
所以基本上你购买了这个预制库并将你的程序与它集成,然后在 CAN 总线上获得标准化的协议行为,这是与实现相同协议的其他节点通信所必需的。自己编写这样一个库不是一件小事,尤其是对于 CANopen 来说,这是一个很大的标准,您可能只需要使用大约 10% 的可用功能。