前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你搞懂J1939的连接管理协议了吗?

你搞懂J1939的连接管理协议了吗?

作者头像
用户1605515
发布2018-12-27 11:55:19
1.8K0
发布2018-12-27 11:55:19
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

正如CAN的高层协议J1939标准所规定,传输协议功能是数据链路层的一部分,主要完成消息的拆装和重组以及连接管理,稍微了解一点CAN通信的童鞋应该知道,长度大于8字节的消息无法使用单个CAN数据帧来传输,因此必须被拆为很多个小的数据包,然后根据标准使用单个的数据帧对这个长消息进行多帧传输,这就要求接收方必须能够接收这些单个的数据帧,然后在重组成原始的消息,说白了就是拆包和打包。标准定义数据域的第一个字节作为多包消息的编号,例如,1,2,3......最大的数据长度为255 * 7 = 1785字节,也就是说J1939的多帧最多可以传送1785个字节。必须注意数据包编号从1开始,最大到255.其实在实际应用中,很少有一次传输这么多字节的。还有一点就是在多帧消息中,例如你有24个字节需要通过多帧传送,那么被拆分为4个包,而最后一个包未使用的字节需要填充0xff。

连接管理主要是在指定特定目标地址传输时候,用于处理节点之间虚拟连接的打开,使用和关闭,而所有的连接管理控制在标准的J1939-21里都有详细的描述和讲解,所有的连接管理协议包含五种,连接模式下的请求发送,连接模式下的准备发送,消息结束应答,放弃连接,以及常用的广播公告消息,例如连接模式下的请求发送,标准要求:

连接模式下的请求发送可以理解为用于通知一个节点,在网络上有另一个节点希望和他建立一个虚拟连接进行消息传输。而这五种连接管理消息在软件中都要去实现以支持传输管理,而对这些协议的正确理解,直接决定着你软件中能否正确实现这些功能,完成通讯实现,也影响你的开发调试,所以一再给大家强调,通讯协议栈代码的开发,一定要吃透标准要求,这些都是死规定,没有商量的地方,而且需求很清楚,就是标准的描述。完成开发后可以一个点一个点来按照标准测试你的协议栈是否可以正常工作。如你需要完成类似这样的函数来达到你对连接管理的支持。名字可以不同,但功能一定是要完全符合标准。void j1939tp_update_rx_rtscts( uint8_t index ),涉及标准的内容很多,不能给大家一一列举,如果你想深入理解J1939的应用和开发一定好好看标准。目前J1939已经越来越多的在使用,像重卡,公交,校车,拖车,重型机械设备,发电,船舶,舰艇,农机,等等,我们已经在多种芯片上实现了J1939通讯。如有相关项目欢迎联系,保证保量高质量为您提供J1939的通讯。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档