欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

SENT协议学习

程序员文章站 2022-06-16 16:58:59
本文资料来自SNET传输协议手册,加上了自己的理解,如有不对的地方,欢迎大家指正。SENT协议(Single Edge Nibble Transmission,单边半字传输协议)是一种将传感器数据编码成一系列脉冲信号的单向通信方案,用于传感器向发动机控制单元(Engine Control Unit,ECU)的数据发送。使用该协议传输的传感器信号,具有信号频率高,传输速度快,数据单向连续发送等特点。它旨在作为一种替代方法,代替10位A/D和PWM的较低分辨率的信号传输,并且是CAN或LIN的一种更简单的低成...

本文资料来自SNET传输协议手册(J2716 JAN2010),加上了自己的理解,如有不对的地方,欢迎大家指正。

SENT协议(Single Edge Nibble Transmission,单边半字传输协议)是一种将传感器数据编码成一系列脉冲信号的单向通信方案,用于传感器向发动机控制单元(Engine Control Unit,ECU)的数据发送。使用该协议传输的传感器信号,具有信号频率高,传输速度快,数据单向连续发送等特点。它旨在作为一种替代方法,代替10位A/D和PWM的较低分辨率的信号传输,并且是CAN或LIN的一种更简单的低成本替代产品。

1 信号定义

SENT信号以tick为单位计时,1个tick的名义长度是3us。数据每4 bit记为1个Nibble,即半字,半字的脉冲周期为12 ~ 27个tick,代表数据0 ~ 15。
一帧SENT信号包含如下几个部分:

  • 校验/同步(Calibration/Synchronization)脉冲,脉冲周期为56 ticks。
  • 一个状态和串行通信(Status and Serial Communication)半字。
  • 一串数据半字(Data nibble),最多有6个半字,代表要传输的数据。
  • 一个CRC校验半字(Checksum nibble)。
  • 一个可选的暂停脉冲(Pause Pulse)。

下图是一帧带有2个12位数据的SENT信号。除了可选的Pause Pulse外,包含1个校验/同步脉冲,1个状态Nibble,6个数据Nibble,1个CRC Nibble。因CRC Nibble的值由前面6个数据Nibble的大小经循环冗余校验得到,一帧不含Pause Pulse的SENT信号最短为154个tick,最长为270个tick。
SENT协议学习

2 解析方法

SENT信号是将数据值对应到相邻下降沿的时间间隔上,因此解析SENT信号的关键也就是检测出时间间隔,计算出tick数。标准的1个tick为3us,实际信号中会存在一些偏差,可根据校验/同步脉冲修正。修正过程如下:
首先,SENT信号中校验/同步脉冲的理论周期为56个标准tick(3us),实际处理中允许周期长度存在±20%的误差。解析时,用校验/同步脉冲的实际周期与理论周期(168us)相除,得到一个修正因子;后面数据Nibble的实际周期与修正因子相除,得到当前数据Nibble的理论周期,该值与36us的差,除以3us,就可以得到数据Nibble对应的数据值(范围是0~15)。协议中的描述如下图所示。
SENT协议学习

3 慢通道数据

一般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两种。

本文地址:https://blog.csdn.net/qq_35693079/article/details/110149743