SENT协议学习总结
Single Edge Nibble Transmission协议理解
SENT协议学习总结
- 1.SENT协议简介
- 2.基本概念
- 3.消息定义
-
- 3.1 帧结构
- 3.2 基本规则
- 3.3 通信格式
- 3.4 慢通道(slow channel)介绍
- 4.CRC计算
-
- 4.1 快通道CRC Nibble
- 4.2 慢通道(slow channel)CRC
- 5.接收策略
-
- 5.1运算与校准
- 5.2接收检测
- 6. 时钟偏差容忍度
1.SENT协议简介
SENT 全称:Single Edge Nibble Transmission,中文名称为:单边半字节传输协议,是SAE推出的一种点对点的、单向传输的方案,被用于车载传感器和ECU(Engine Control Unit)之间的数据传输,其主要特点如下:
-
SENT 总线一种数字信号传输协议,相比CAN或Lin成本更低,且具有不错的传输精度和速度,数字数据传输速度可达30kb/s;
-
SENT 总线是单线传输数据,加上电源和地线,总共 3 线;

-
SENT 总线单向传输, 数据只能从传感器到 ECU,传输是连续的,不需要请求命令;
-
SENT 总线由帧来传输数据, 或者数据包的形式,每一帧由不同宽度的脉冲即半字节组成;
-
SENT 总线数据的传输可以分为快速通道和慢速通道,重要的信号用快速通道以实现高频率的更新,比如压力等,对于非关键的信号,如诊断等可以放在慢速通道传输;
-
SENT 总线快速通道是每一帧传输一个完整的信号,慢速通道需要多帧来传输一个完整的信号, 即更新频率不同。
(引自: SENT (Single Edge Nibble Transmission)协议接口_sent协议-CSDN博客)
2.基本概念
协议版本(本文):J2716 JAN2010
- 脉冲周期:Pulse Period,指SENT协议波形两个连续下降沿之间的时间

- Nibble:半字节,4bit位宽;
- 时钟节拍:Ttick,也称UT (unit time),是SENT通信的基本时间单位。
3.消息定义
3.1 帧结构
每一帧信号都是由同步域,状态&通讯域,数据域,校验域,加一个可选的暂停域构成。

(1) Calibration/Synchronization
同步域,协议规定持续56 ticks。接收端(ECU)的tick判定,根据同步域的波形进行运算与校正补偿,产生贴近发送端(Sensor)的实际tick,用以对帧剩下的Nibble进行译码。
(2) Status and Serial Communication
状态&通讯域,1 Nibble,可译码为4bit数据。通过多个帧中的状态通讯域的拼接可以传递传感器代号,生产厂家和诊断信息,根据状态消息的规则由两种形式:简短型串行信息(Short Serial Message)和增强型串行报文格式(Enhanced Serial Message)。该Nibble的译码信息如下对应:

注意:校验域的CRC运算不包含状态&通讯域Nibble,在多帧组成的慢通道应用中,有相应的另外的CRC运算操作。
(3)Data
数据域,最多6个Nibbbles(4bit),即最多 3Byte/帧。数据域的字节定义由不同的应用决定,对于一个特定的应用,数据域的长度是固定的。
(4)CRC/Checksum
校验域,CRC4。从图2可以看出,考虑CRC Nibble后,最短的帧时间为154ticks,最长为270ticks。具体见下表
| Case | D1 | D2 | D3 | D4 | D5 | D6 | CRC |
|---|---|---|---|---|---|---|---|
| #1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
| #2 | 0 | 0 | 1 | 0 | 0 | 0 | 1 |
| #3 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| Case | D1 | D2 | D3 | D4 | D5 | D6 | CRC |
|---|---|---|---|---|---|---|---|
| #1 | E | F | F | F | F | E | F |
| #2 | F | F | E | F | F | F | E |
| #3 | F | F | F | E | E | F | F |
(5) Pause pulse
暂停域,可选。
(引自: 简单的SENT 协议解析-(1)_sent协议-CSDN博客, SAE J2716_201001协议)
3.2 基本规则
- 脉冲顺序(即帧结构)是固定的,最小的Pulse Period为12 ticks ;
- Pulse Period低电平至少维持4ticks,无论是同步域,状态&通讯域,数据域,还是校验域都是;
- 每一个Nibbbl代表的数值范围仅为[0,15],其他情况诊断为错误。例如,0(0x0)对应12ticks,15(0xf)对应27ticks;

- 允许最大时钟节拍时间误差为±20%;
- 时钟节拍可以设置成介于3-90us;
- 当时钟节拍时间为3us时,最长允许的一帧数据时长不超过1ms;
- 编码方案采用4位CRC校验位。
3.3 通信格式
根据协议,通信格式可以划分为快通道(fast channel)信息,与慢通道(slow channel)信息。
一般SENT信号由“校验/同步脉冲(同步域)+1个状态Nibble(状态&通讯域)+6个数据Nibble(数据域)+CRC Nibble(校验域)”组成。其中,6个数据Nibble传输的是传感器发出的快通道(fast channel)数据,传输的是主要信息。而状态Nibble中可以存储传感器的额外信息(例如传感器的型号、制造商、环境温度等),构成慢通道(slow channel)数据。
慢通道分为简短型串行信息(Short Serial Message)和增强型串行信息(Enhanced Serial Message)。简短型串行信息由16帧连续的无错误SENT信号拼接而成,而增强型串行信息由18帧拼接而成。同时增强型根据传递的数据量不同,又可以分为12位数据+8位ID,和16位数据+4位ID两种。
单个SENT帧可以称为快速帧(fast frames),慢通道也可以称为慢速帧(slow frame),因此两者的关系是:快速帧将传输的数据放在单个SENT帧中,而慢速帧则用于通过多个快速帧传输更长的数据流。
(引自: Single Edge Nibble Transmission (SENT), SENT协议学习)
3.4 慢通道(slow channel)介绍
(1)简短型串行信息格式
对于本格式,完整的消息由16个连续的SENT帧组成,其中表1 Status and Serial Communication中的Bit3,Bit2情况如下:
- Bit 3作用:第一个SENT帧中为1,表示一个消息的开始,其余15个帧均为0;
- Bit 2作用:由每个SENT帧的数据域拼接成数据类型定义。这些类型包括Message ID、Data Byte和相应的CRC值等,此CRC和SENT帧内部的CRC算法一样。MessageID决定了Data Byte数值的意义。

(2)增强型串行信息格式
增强型消息可以表示更大的Message ID和Data Byte,该格式需要连续18个SENT帧来完成,由Bit3 和Bit2共同在18个帧中拼接完成。

其中,第8帧中的Status and Serial Communication Bit3,记为configuration bit,可以区分为如下两种功能格式。当configuration bit = 0,慢通道信息组成为:12bit 数据 + 8bit 报文代号message ID;当configuration bit = 1,慢通道信息组成为:16bit 数据 + 4bit 报文代号message ID。


4.CRC计算
4.1 快通道CRC Nibble
多项式:x4 + x3 + x2 + 1 ,seed value:0101。
(1) 传统方法实现
- 代码
CheckSum = 5; % initialize checksum
for I=1:numNibbles
tempCS = data(I)+CheckSum*16;
CheckSum = CRC4Table(tempCS+1);
End
- 数组

(2) 协议推荐方法实现
使用与传统计算相同的种子值和多项式,但在CRC计算中还将消息数据增加了额外的4个零位。
(2.1)256个元素数组实现
CRC校验和可以通过一系列左移4位(相当于乘以16)操作,接着进行一个256元素数组查找来实现。校验和的计算通过按顺序使用所有数据字节,然后将结果与额外的零值一起进行校验和计算。
- 代码
CheckSum = 5; % initialize checksum
for I=1:numNibbles
tempCS = data(I)+CheckSum*16;
CheckSum = CRC4Table(tempCS+1);
end
% checksum with an extra “0” value
tempCS = CheckSum*16;
CheckSum = CRC4Table(tempCS+1);
- 数组(同图8数组)
(2.2)16个元素数组实现
CRC校验和可以通过逐位异或操作与一个16元素的数组查找来实现。校验和的计算通过按顺序使用所有数据字节,然后将结果与额外的零值一起进行校验和计算。
- 代码
%CRC table for poly = 0xd
crc4_table = [0 13 7 10 14 3 9 4 1 12 6 11 15 2 8 5 ]; % array
CheckSum16 = 5; % initialize checksum
for I=1:numNibbles
CheckSum16 = bitxor(uint8(data(I)), uint8(crc4_table(CheckSum16+1)));
end
% checksum with an extra “0” value
CheckSum16 = bitxor(uint8(0), uint8(crc4_table(CheckSum16+1)));
4.2 慢通道(slow channel)CRC
(1) Short Serial Message 格式的CRC(4 bit)
算法同快通道,通过吃入消息ID(4 bit)和2个Nibbles(8bit)求得。
(2)Enhanced Serial Message 格式的CRC(6 bit)
该CRC值是根据第7到第18帧的串行数据消息位#2和#3的内容计算得出的,包括12位数据字段(第7-18帧的串行数据消息位#2)、8位消息ID(第9-12帧,第14-17帧的串行数据消息位#3)、第8帧的配置位(串行数据消息位#3),以及第7、13和18帧串行数据消息位#3的0。为了进行CRC计算,位应按以下顺序排列见图
多项式:x6+x4+x3+1,seed value:010101 (0x15)。末位补6个0便于CRC运算,mcrc = [m0 m1 m2 ……. m21 m22 m23 0 0 0 0 0 0]。CRC校验和可以通过按位异或操作,利用一个64元素数组来实现。
% Table-based CRC generation with Matlab
% 24-bit message data
% data = 4 x 6-bit (Attention: Difference to 4-bit nibbles)
% CRC table for poly = 0x59 (x^6+x^4+x^3+1)
% Seed 0x15 (21 in decimal)
crc6_table = [
0 25 50 43 61 36 15 22 35 58 17 8 30 7 44 53
31 6 45 52 34 59 16 9 60 37 14 23 1 24 51 42
62 39 12 21 3 26 49 40 29 4 47 54 32 57 18 11
33 56 19 10 28 5 46 55 2 27 48 41 63 38 13 20 ];
CheckSum64 = 21; % initialize checksum
for I=1:4
CheckSum64 = bitxor(uint8(data(I)), uint8(crc6_table(CheckSum64+1)));
end
% checksum with an extra “0” value (message is augmented by six zeros)
CheckSum64 = bitxor(uint8(0), uint8(crc6_table(CheckSum64+1)));
5.接收策略
5.1运算与校准
ECU检查同步段的时间长度,如果算出来的时钟数和理论上的时钟数相差±20%以内,则认定为一个新数据的开始,并且此后的时钟数的计算将以此同步段换算出来的clock时间为基准,进行计算。
例如,对于一个3us时钟的计算如下:
同步段理论时间:3us*56=168us
时钟比例 K= 同步段测量的时间值/168 us(K∈[0.8,1.2])
数据N的值:Data Value N = Round[(数据N的测量时间/K – 36 us)/3us]
此外,接收端还需要依据J2726编写相应的CRC计算方法,才能检验CRC是否正确。
(引自: 关于对SENT信号传输协议的理解)
5.2接收检测
当出现如下任何一种情况时,接收端认为出现错误:
- 同步段时间超出理论时间的±25%;
- 两个同步段之间的下降沿数不等;
- Checksum不匹配;
- 计算出的Nibble值在0-15之外;
- 连续两次的同步段时间比例大于±1/64;
上述任何错误都将导致接收器重新开始搜索有效的校准脉冲,以同步接收与发射设备的消息开始。诊断将允许在±25%时间范围内接收消息。然而,只有最大±20%时间范围的系统才会被认证为符合SENT要求。
6. 时钟偏差容忍度
发送器/接收器都有自己的时钟偏差,根据协议,容忍度如下表:

更多推荐



所有评论(0)