请问哪位做过CAN总线协议

时间:2021-12-17 15:09:02
如题,本人在网上查了下,不过都是些简介,我想了解几个方面:
1.CAN 每种帧的格式,具体到每个位的功能。
2.CAN 如何完成一次完整的收发,步骤。
3.如何设置目标地址,目标机如何得知哪个是发给自己的帧;仲裁的作用
请各位高人指点啊

5 个解决方案

#1


谁说网上都是简介???各种资料都齐全。
个人建议不要一上来就看《规范》,比较容易看到头大。
不妨先找一款CAN控制芯片的Datasheet开始,描述比较细致一些,并且不牵扯到应用层。例如MCP2515的中文手册。

#3


引用 1 楼 ejack79 的回复:
谁说网上都是简介???各种资料都齐全。
个人建议不要一上来就看《规范》,比较容易看到头大。
不妨先找一款CAN控制芯片的Datasheet开始,描述比较细致一些,并且不牵扯到应用层。例如MCP2515的中文手册。

其实CAN协议只是定义了物理层,所以对于其只要简单了解就可以了,没必要追究每一个细节。

#4


引用 3 楼 codesnail 的回复:
引用 1 楼 ejack79 的回复:

谁说网上都是简介???各种资料都齐全。
个人建议不要一上来就看《规范》,比较容易看到头大。
不妨先找一款CAN控制芯片的Datasheet开始,描述比较细致一些,并且不牵扯到应用层。例如MCP2515的中文手册。

其实CAN协议只是定义了物理层,所以对于其只要简单了解就可以了,没必要追究每一个细节。


这个只能说每个人需求不一样吧。如果基于成熟的CAN总线底层做上层协议开发或面向对象的应用层,那么简单了解一下其原理就行。如果涉及做链路、做现场,很多实际问题都会逼得你不得不去追究其细节。
另外,CAN协议不仅仅是物理层,DLL+MAC基本也框上了。

#5


1.CAN 每种帧的格式,具体到每个位的功能。
  见BOSCH的CAN总线规范(网上可以找到周立功翻译的中文版)。

2.CAN 如何完成一次完整的收发,步骤。
  在应用中,不必关心底层的仲裁、重发等细节,这些由收发器完成了。只需要关心数据。收发的步骤可以抽象的描述为:将数据写入MCU的CAN相关寄存器 -- MCU将数据传送给CAN收发器 -- CAN收发器将数据发送到CAN总线 -- CAN总线上的设备接收到数据。

3.如何设置目标地址,目标机如何得知哪个是发给自己的帧;仲裁的作用
  见规范之帧格式与过滤。仲裁在应用中涉及到总线上的数据的优先级、设备的错误计数等。

#1


谁说网上都是简介???各种资料都齐全。
个人建议不要一上来就看《规范》,比较容易看到头大。
不妨先找一款CAN控制芯片的Datasheet开始,描述比较细致一些,并且不牵扯到应用层。例如MCP2515的中文手册。

#2


#3


引用 1 楼 ejack79 的回复:
谁说网上都是简介???各种资料都齐全。
个人建议不要一上来就看《规范》,比较容易看到头大。
不妨先找一款CAN控制芯片的Datasheet开始,描述比较细致一些,并且不牵扯到应用层。例如MCP2515的中文手册。

其实CAN协议只是定义了物理层,所以对于其只要简单了解就可以了,没必要追究每一个细节。

#4


引用 3 楼 codesnail 的回复:
引用 1 楼 ejack79 的回复:

谁说网上都是简介???各种资料都齐全。
个人建议不要一上来就看《规范》,比较容易看到头大。
不妨先找一款CAN控制芯片的Datasheet开始,描述比较细致一些,并且不牵扯到应用层。例如MCP2515的中文手册。

其实CAN协议只是定义了物理层,所以对于其只要简单了解就可以了,没必要追究每一个细节。


这个只能说每个人需求不一样吧。如果基于成熟的CAN总线底层做上层协议开发或面向对象的应用层,那么简单了解一下其原理就行。如果涉及做链路、做现场,很多实际问题都会逼得你不得不去追究其细节。
另外,CAN协议不仅仅是物理层,DLL+MAC基本也框上了。

#5


1.CAN 每种帧的格式,具体到每个位的功能。
  见BOSCH的CAN总线规范(网上可以找到周立功翻译的中文版)。

2.CAN 如何完成一次完整的收发,步骤。
  在应用中,不必关心底层的仲裁、重发等细节,这些由收发器完成了。只需要关心数据。收发的步骤可以抽象的描述为:将数据写入MCU的CAN相关寄存器 -- MCU将数据传送给CAN收发器 -- CAN收发器将数据发送到CAN总线 -- CAN总线上的设备接收到数据。

3.如何设置目标地址,目标机如何得知哪个是发给自己的帧;仲裁的作用
  见规范之帧格式与过滤。仲裁在应用中涉及到总线上的数据的优先级、设备的错误计数等。