SENT - Single Edge Nibble Transmission for Automotive
SENT 总线的特征和优势
- SENT 总线是一种数字信号传输协议,具有更高的传输精度和速度;
- SENT 总线是单线传输数据,减少信号线,降低成本。加上电源和地线,总共 3 线;
- SENT 总线具有更强大的诊断功能;
- SENT 总线的逻辑电平为 4.75V – 5.25V;
- SENT 总线单向传输协议,数据只能从传感器到 ECU,传输是连续的,不需要请求命令;
- SENT 总线由帧来传输数据,或者数据包的形式,每一帧由不同宽度的脉冲即半字节组成;
- SENT 总线数据的传输可以分为快速通道和慢速通道,重要的信号用快速通道以实现高频率的更新,比如压力等,对于非关键的信号,如诊断等可以放在慢速通道传输;
- SENT 总线快速通道是每一帧传输一个完整的信号,慢速通道需要多帧来传输一个完整的信号,即更新频率不同。
SENT协议定义
- SENT协议的数据是使用Nibble(半字节)来进行编码定义的。
- 脉冲的周期是指以发送信号的连续两个下降沿之间的时间。即发送信号开始的下降沿,然后维持特定的拉低时间,然后剩余的时间拉高,最后再次拉低结束这个脉冲传输的下降沿之间的时间差。
- 在发送一个Nibble时,需要大于4个(通常用5个)时钟周期的拉低时间。
- 脉冲所表示的数值由两个下降沿之间的时钟数决定。最小的数0的时钟数为12,每增加一个数值,时钟数在12的基础上加1,所以最大数15的时钟数为27。
- n的时钟周期数 = 5个LOW时钟周期 + 7个HIGH时钟周期 + n*Clock。
各个数据对应的ticks数目如下:
Frame Format
一个Frame基本组成:
- Sync 同步脉冲,固定的56Ticks。(这个不是按照标准的SENT数据格式发送),该脉冲与后续的下降沿之间的时间间隔等效于56个时钟节拍。
- Status/Com 状态及通讯字段,按照SENT格式传送,12~27Ticks,即1个Nibble(4bit)。
- 这个nibble可以传输零件号,错误代码等杂项信息
- Data 数据段,12~162Ticks,即1~6个Nibble。
- CRC 校验字段,12~27Ticks,即1个Nibble。
- Pause 暂停脉冲(可选), 12~768Ticks,早期的SENT协议无此字段或者一个固定长度Ticks,SENT2010之后,部分通过此功能可以动态条件TICKS的个数,实现整个SENT协议是同一个固定长度TICKS。
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>#define u08_T unsigned char
#define u16_T unsigned short
#define u32_T unsigned longunion fcFrame_T
{struct{u08_T scCom;u08_T data1; // MSN of Signalu08_T data2; // MidSN of Signalu08_T data3; // LSN of Signalu08_T data4;u08_T data5;u08_T data6;u08_T crc;};u08_T array[8];
};u08_T calc4BitCrc(u08_T* dataArray, u08_T startPtr, u08_T endPtr)
{u08_T calculatedCRC, i;const u08_T CrcLookup[16] = {0, 13, 7, 10, 14, 3, 9, 4, 1, 12,6, 11, 15, 2, 8, 5};calculatedCRC = 5; // initialize checksum with seed "0101"for (i = startPtr; i <= endPtr; i++){calculatedCRC = CrcLookup[calculatedCRC];calculatedCRC = (calculatedCRC ^ dataArray[i]) & 0x0F;}// One more round with 0 as inputcalculatedCRC = CrcLookup[calculatedCRC];return calculatedCRC;
}int main()
{union fcFrame_T fcFrame;fcFrame.data1 = 0x2;fcFrame.data2 = 0xC;fcFrame.data3 = 0x4;fcFrame.data4 = 0x8;fcFrame.data5 = 0x8;fcFrame.data6 = 0xD;fcFrame.crc = 0x0F & calc4BitCrc(fcFrame.array, 1, 6);printf("CRC=0x%X\r\n", fcFrame.crc);return 0;
}
消息格式
快速消息Fast Channel
SENT发送一帧数据,就是一帧快速消息。
串行消息
Short Serial Message 格式
- 短串行消息是依靠“通信和状态位的bit3来传输的。”即每帧SENT数据只能传输串行消息中的一位;一个short serial message有16位,所以要传输一个完整的short serial message 需要16帧sent信号。
-
串行消息的识别:
串行消息是的识别是依靠SENT信号的“status&comm ”Nibble 的bit3来识别的;
第一个SENT信号的“status&comm ”Nibble 的bit3是1,接下来的15帧SENT信号的“status&comm ”Nibble 的bit3都是0。那么这16帧SENT信号中的status&comm Nibble中的bit2就可以构成一个串行消息。
- 一个串行消息包括1个nibble的Message ID,2个nibble的data,还有1个nibble的CRC校验。
- 一个Short Serial Message 的帧格式如下:
前4帧SENT信号的“status&comm ”Nibble 的bit2 构成了串行消息的MessageID;中间8帧SENT信号的“status&comm Nibble 的bit2 构成了串行消息的DATA byte;后4帧SENT信号的“status&comm Nibble 的bit2 构成了串行消息的CRC校验位。
Enhance Serial Message 格式
- 增强型串行消息的传输是依靠SENT信号“status&comm”Nibble中的bit2和bit3共同传输的。增强型串行消息可以配置成12bit data和8bit messageID。也可以配置成16bit data和 4bit message ID。每传输一个增强型串行消息需要18帧SENT信号。
- 增强型串行消息的识别:
如果连续6帧SENT信号“status&comm”Nibble中的bit3都是1,第7帧SENT信号“status&comm”Nibble中的bit3是0。那么从这个第1帧SENT信号 到 第18帧SENT信号中“status&comm”Nibble的bit2和bit3就可以提取出来一个增强型串行消息。
增强型消息可以根据配置位(由第8个SENT帧的bit3作为configuration bit)配置成两种形式:
12-bit 数据 and 8-bit 报文代号message ID (configuration bit = 0)
16-bit 数据 and 4-bit 报文代号message ID (configuration bit = 1)
相关文章:

SENT - Single Edge Nibble Transmission for Automotive
SENT 总线的特征和优势 SENT 总线是一种数字信号传输协议,具有更高的传输精度和速度;SENT 总线是单线传输数据,减少信号线,降低成本。加上电源和地线,总共 3 线;SENT 总线具有更强大的诊断功能;…...

2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(下)23种设计模式(分值10+)
目录 前言阅读前必看 第七章 面向对象技术(下)7.3 设计模式(固定4分)7.3.1 设计模式的要素7.3.2 创建型设计模式7.3.2.1 Abstract Factory(抽象工厂)7.3.2.2 Builder(生成器)7.3.2.3…...

未来人工智能的发展对就业市场的影响 人工智能在生活中的相关
人工智能(Artificial Intelligence),英文缩写为AI.是新一轮科技革命和产业变革的重要驱动力量, 是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学. 人工智能的发展对就业市场的影响主要…...
Oracle EBS 中财务模块
Oracle E-Business Suite (EBS) 提供了全面的财务管理解决方案,涵盖了企业财务活动的各个方面。以下是EBS中主要的财务模块及其功能概述: 总账(General Ledger, GL):Oracle EBS 中 GL 模块的财务流程概览-CSDN博客 总账…...

基于SSM公廉租房维保系统的设计
管理员账户功能包括:系统首页,个人中心,业主管理,维修单位管理,房屋信息管理,维修申报管理,维修完成,房屋维护管理 业主账号功能包括:系统首页,个人中心&…...

【AI大模型】深入Transformer架构:解码器部分的实现与解析
目录 🍔 解码器介绍 🍔 解码器层 2.1 解码器层的作用 2.2 解码器层的代码实现 2.3 解码器层总结 🍔 解码器 3.1 解码器的作用 3.2 解码器的代码分析 3.3 解码器总结 学习目标 🍀 了解解码器中各个组成部分的作用. &#…...

前端html js css 基础巩固3
一个这样的首页 滑动显示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>&l…...

如在下载自己的需要的rmp包呢
下载地址:https://pkgs.org/和https://rpmfind.net/linux/rpm2html/search.php 根基自己的需要进行下载使用。...

Android TextView实现一串文字特定几个字改变颜色
遇到一个需求,让Android端实现给定一个字符串指定下标的几个字颜色与其他字颜色不一致。 主要是用ForegroundColorSpan这个API来传入颜色值,用SpannableString来设置指定索引下标的字的颜色值。 这里通过给定一个输入文字描述框,要求输入指定…...

桃子叶片病害分类检测数据集(猫脸码客 第221期)
桃子叶片病害分类检测数据集 一、引言 桃子作为世界上广泛种植的果树之一,其叶片的健康状况直接关系到果实的产量和品质。然而,桃子叶片易受多种病害的侵袭,这些病害不仅影响叶片的光合作用,还可能导致果实减产、品质下降&#…...

Vue--》掌握自定义依赖引入的最佳实践
在现代前端开发中,vue凭借其灵活性和高效性,已成为开发者们的宠儿,然而随着项目的复杂度提升,如何高效地管理和引入依赖,尤其是自定义引入依赖,成为了许多开发者面临的一大挑战。无论是为了优化加载速度&am…...
repo 命令大全详解(第十四篇 repo overview)
repo overview 命令用于显示当前项目的概览信息,帮助用户快速了解项目的状态和分支信息。 参数分类及解释 基本参数 [--current-branch]: 可选,仅考虑已检出的分支。 示例: repo overview --current-branch [<project>...]: 可选,指定…...
【设计模式】深入理解Python中的抽象工厂设计模式
深入理解Python中的抽象工厂设计模式 设计模式是软件开发中解决常见问题的经典方案,而**抽象工厂模式(Abstract Factory Pattern)**是其中非常重要的一种创建型模式。抽象工厂模式的主要作用是提供一个接口,创建一系列相关或依赖…...

网站建设完成后,多久需要升级迭代一次
网站建设完成后,一般每隔几个月就会进行一次迭代升级。以下是关于网站迭代周期和原因的具体分析: 更新频率:网站在建设完成后,一般每隔几个月就会进行一次迭代升级。这种周期性的更新有助于保持网站的现代感和竞争力。更新目的&a…...

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
这里写目录标题 问题详情分析问题代码展示 问题详情 剑指 Offer 56: 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例: 输入&a…...
Vue基本学习2
Vue使用方法 <script src"js/vue.js"></script><script>/*** Mode1:数据模型,负责数据存储(后台业务逻辑/数据库)* View:视图层,负责页面展示(HTML)* View Model(Vue):负责业务逻辑处理(比如Ajax请求等)* view 与 Model 数…...

创作者等级权益说明
创作者等级权益说明 一、如何查看创作者等级权益二、等级权益对照表 一、如何查看创作者等级权益 step1:鼠标移动至头像,显示如下图的浮窗 step2:点击我的等级,即跳转到创作者等级权益页面 图1.1 我的等级 图1.2 创作者等级权益…...

基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...
统一修改UI库样式的几种方式
统一修改element组件库样式的几种方式。主题 | Element Plus 通过css变量设置 【CSS扩展】VUE如何使用或修改element plus中自带的CSS全局变量来定义样式:root {--hc-text-color-placeholder: #5f84a2;--hc-text-color-regular: #fff;--hc-text-color-primary: #fff;--hc-bg-c…...
ICM20948 DMP代码详解(88)
接前一篇文章:ICM20948 DMP代码详解(87) 本回继续对inv_convert_androidSensor_to_control函数进行解析。为了便于理解和回顾,再次贴出inv_convert_androidSensor_to_control函数源码,在EMD-Core\sources\Invn\Devices\Drivers\ICM20948\Icm20948DataBaseControl.c中,如下…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...