| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> CAN帧与SocketCan帧网络通信和转换 -> 正文阅读 |
|
[网络协议]CAN帧与SocketCan帧网络通信和转换 |
一、背景can通信在汽车行业非常的普遍,搞车必备良器! 二、协议简介基础概念 Can总线
CAN协议主要有两种帧,标准帧和拓展帧 标准帧格式CAN 标准帧信息为11个字节,包括两部分:信息和数据部分。前3个字节为信息部分。 字节1为帧信息。第7位(FF)表示帧格式,在标准帧中,FF=0;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC表示在数据帧时实际的数据长度。 CAN2.0B扩展帧CAN 扩展帧信息为13个字节,包括两部分,信息和数据部分。前5个字节为信息部分 字节1为帧信息。第7位(FF)表示帧格式,在扩展帧中,FF=1;第6位(RTR)表示帧的类型,RTR=0表示为数据帧,RTR=1表示为远程帧;DLC 表示在数据帧时实际的数据长度。 三、Can盒功能实现总体来说结构非常的简单,我就着框架图简单介绍下。 主要框架实现流程首先驾驶舱和车辆之间需要有一个业务长连接,用来发起CAN盒转发任务。 建立UDP连接
这里注意几点:
转发驾驶舱下行命令这里以拓展帧为例。 我们要将拓展帧用socket can接口转发至DCU! bit7 FF=1 表示这是一个拓展帧 这里4个字节,注意我们用了bit0-bit28一共29位来表示CANID!也就是最大1FFF FFFF的值。
can_id定义如下所示,是一个无符号的32位整形数
0-28位为标识符,如果是扩展帧,则高11位为标准ID 拓展帧canid与socket can_id转换 具体代码实现,直接操作位的话参考can_frame中can_id的数据组织形式及处理 转发DCU帧到驾驶舱同上原理,反向canid转换一下,8位数据直接透传 参考CAN帧格式(标准帧、拓展帧) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处! |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:47:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |