当前位置: 首页 > news >正文

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 message16位,所以要传输一个完整的short serial message 需要16sent信号。
  • 串行消息的识别:

串行消息是的识别是依靠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。每传输一个增强型串行消息需要18SENT信号。
  • 增强型串行消息的识别:

如果连续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)

                    

http://www.lryc.cn/news/463521.html

相关文章:

  • 2024年软件设计师中级(软考中级)详细笔记【7】面向对象技术(下)23种设计模式(分值10+)
  • 未来人工智能的发展对就业市场的影响 人工智能在生活中的相关
  • Oracle EBS 中财务模块
  • 基于SSM公廉租房维保系统的设计
  • 【AI大模型】深入Transformer架构:解码器部分的实现与解析
  • 前端html js css 基础巩固3
  • 如在下载自己的需要的rmp包呢
  • Android TextView实现一串文字特定几个字改变颜色
  • 桃子叶片病害分类检测数据集(猫脸码客 第221期)
  • Vue--》掌握自定义依赖引入的最佳实践
  • repo 命令大全详解(第十四篇 repo overview)
  • 【设计模式】深入理解Python中的抽象工厂设计模式
  • 网站建设完成后,多久需要升级迭代一次
  • 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字
  • Vue基本学习2
  • 创作者等级权益说明
  • 基于SpringBoot+Vue+uniapp微信小程序的校园反诈骗微信小程序的详细设计和实现(源码+lw+部署文档+讲解等)
  • 统一修改UI库样式的几种方式
  • ICM20948 DMP代码详解(88)
  • 字节跳动实习生投毒自家大模型细节曝光 影响到底有多大?
  • 【路径规划】蚁群算法优化bp神经网络回归预测
  • 如何在OceanBase中新增系统变量及应用实践
  • Olap数据处理
  • Tailwind Starter Kit 一款极简的前端快速启动模板
  • 物联网智能家居环境监测系统
  • 观测云 AI 助手上线:智能运维,从此触手可及!
  • 案例分析:拒绝服务攻击引发的网络调优之旅
  • Spring Boot Web框架:智慧社区设计新思路
  • 从 Hadoop 迁移到数据 Lakehouse 的架构师指南
  • Python基础——类与对象