对CAN signal 的一点理解
首先每个 ECU是一个网络节点,每个网络节点可收发一些 Message,每个Message 由CAN signals构成。每个 CAN signal利用一个或多个连续的2进制位来表示承载的信息。下面就来举个列子简要介绍如何理解 CAN signal的定义。
以节点 IPC中ESP_STATUS 这个CAN message 中的 ESP_VehicleSpeed这个CAN signal 为例,查看 DBC中的定义如下图:
可以看到这个 signal由13 个bit构成,字节序是 Motorola,单位是KPH ,Factor是 0.05625,
无效值是 0x1FFF,最大值是460.69 KPH 。
怎么来理解这个 13bit以及Factor 和最大值呢?
首先可以看 Layout,这个signal 占了2个字节,其中一个占了 8位,另一个占了5位,合在一起正好是 13位,而13 个bit可以表示的无符号范围正好是 0 – 0x1FFF,因此一般把最大的那个范围定做 Invalid Value,如果CAN signal 是这个值,那么此时获取的 CAN signal就是无效的。
那么怎么理解 factor呢?可以把它理解为精度,即每一个 CAN signal的整数值所代表的有单位的数值,即 0表示0 KPH , 1表示 1*0.05625即0.05625KPH ,2表示 2*0.05625即0.1125 KPH ,n表示 n*0.05625 KPH,注意这里的n是十进制数值。因此可以把收到的 CAN signal整数值对应转换为实际数值,自然的可以理解最大值是怎么来的,即 0x1FFF即十进制8191 ,与0.05625相乘得到的 460.69。
如何根据 layout获得相应的CAN signal 数值呢,写代码获取该 CAN signal的数值应该是这样:
(Msg.ESP_VehicleSpeed_0 << 0) + (Msg.ESP_VehicleSpeed_1 << 5)
对CAN signal 的一点理解的更多相关文章
- opencv笔记5:频域和空域的一点理解
time:2015年10月06日 星期二 12时14分51秒 # opencv笔记5:频域和空域的一点理解 空间域和频率域 傅立叶变换是f(t)乘以正弦项的展开,正弦项的频率由u(其实是miu)的值决 ...
- 对socket的一点理解笔记
需要学web service,但是在视频中讲解到了socket套接字编程.以前貌似课上老师有提过,只是没用到也感觉乏味.现在遇到,自己看了些博客和资料.记录一点理解,不知正确与否. 首先说这个名字,叫 ...
- iOS 的一点理解(一) 代理delegate
做了一年的iOS,想记录自己对知识点的一点理解. 第一篇,想记录一下iOS中delegate(委托,也有人称作代理)的理解吧. 故名思议,delegate就是代理的含义, 一件事情自己不方便做,然后交 ...
- 关于web开发的一点理解
对于web开发上的一点理解 1 宏观上的一点理解 网页从请求第地址 到获得页面的过程:从客户端(浏览器)通过地址 从soket把请求报文封装发往服务端 服务端通过解析报文并处理报文最后把处理的结果 ...
- angular.js的一点理解
对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...
- RxSwift 入坑好多天 - 终于有了一点理解
一.前言 江湖上都在说现在就要赶紧学 swift 了,即将是 swift 的天下了.在 api 变化不大的情况下,swift 作为一门新的语言,集众家之所长,普通编码确实比 oc 要好用的多了 老早就 ...
- rt-thread中动态内存分配之小内存管理模块方法的一点理解
@2019-01-18 [小记] rt-thread中动态内存分配之小内存管理模块方法的一点理解 > 内存初始化后的布局示意 lfree指向内存空闲区首地址 /** * @ingroup Sys ...
- rt-thread中软件定时器组件超时界限的一点理解
@2019-01-15 [小记] 对 rt-thread 中的软件定时器组件中超时界限的一点理解 rt_thread_timer_entry(void *parameter)函数中if ((next_ ...
- mycat的schema.xml的个人的一点理解
官方文档里讲的详细的部分的我就不再赘述了,我只是谈谈我自己的理解 刚开始接触mycat,最重要的几个配置文件有server.xml,schema.xml,还有个rule.xml配置文件 具体都是干啥用 ...
随机推荐
- NetCore下的log4
https://www.cnblogs.com/zhangxiaoyong/p/9463791.html 这一篇也不错 .NET常用的日志组件有NLog.Log4net等,.NET CORE下微软也自 ...
- 19南京网络赛A 扫描线
题目链接:https://nanti.jisuanke.com/t/41298 扫描线的简单题,题目难在找宫殿的价值(°ー°"),比赛时将近100多行代码找价值,纯模拟,看到题解哭了. 存下 ...
- javaweb-codereview 学习记录-4
反射java.lang.Runtime 之前在p牛的知识星球中也学过反射机制调用Runtime来执行命令时需要用getruntime来返回Runtime类的实例,因为Runtime类设计是单例模式,并 ...
- django cms 5月第一弹
官方文档: ##http://django-cms.readthedocs.io/en/latest/index.html #截图 #生存的项目结构
- Data for the People: How to Make Our Post-Privacy Economy Work for You
等翻译成 chinese在看吧
- Kdenlive-简单的操作
版权声明:原创文章,未经博主允许不得转载 前章:https://www.cnblogs.com/weilinfox/p/12246123.html 尽管是简单操作,但内容比较多.可以一边自己尝试编辑一 ...
- IDEA debug下取消后续操作
有时进行测试时,不想后面的代码执行 具体应该怎么请看下文: 测试代码 public class demo { public static void main(String[] args) { Syst ...
- 脚本在Shell可以执行成功,放到crontab里执行失败
一.背景 自己写了个监控MGR状态的脚本,直接在Linux的Shell环境下可以执行成功,但是只要放到crontab里执行,就失败,脚本内容如下 #!/bin/bash MAIL_ADDR=`cat ...
- python 动态导包
python 包简介 基本导包/模块 import 动态导包/模块 __import__ importlib 1. python 包简介 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和 ...
- CUDA学习(一)之使用GPU输出HelloWorld
最近在学习CUDA,编程入门第一步便是“HelloWorld”,主要代码如下: #include "cuda_runtime.h" #include "device_la ...