文章目录
- 前言
- SENT接口
- 简介
- 物理层
- 数据链路层
- 编码方式
- 帧结构
- 消息格式
- 短串行消息格式
- 增强型串行消息格式
- CRC校验和
- CRC4
- CRC6
- 错误检测机制
- IP 设计
- 结构框图
- 接口设计
- 上板验证
前言
本文参考标准《SAE J2716_201604》。
SENT接口
简介
SENT(Single Edge Nibble Transmission)协议是SAE协会推出的一种点对点、单向传输方案,被用于车载传感器和ECU之间的数据传输。SENT采样单线连接,无需请求命令即可连续接收数据,是具有更高传输精度和更强抗电磁干扰性的低成本车载通信方案。
下图为SENT标准的结构和传输层的关系图,分为物理层、数据链路层和应用层。
- 物理层:物理层定义了信号的电气特性、时钟容差和传输速率。
- 数据链路层:定义了帧结构、消息格式和错误检测方法。
- 应用层:应用层根据传感器类型和应用需求选择合适的数据编码和传输格式。
物理层
SENT信号高电平最小值为4.1V,低电平最大值为0.5V。
数据链路层
编码方式
SENT协议的数据使用半字节来进行编码,一个Nibble通过2个下降沿之间的时间差来定义。
最小时间精度为1 Tick(一般为3~90us),每个Nibble值编码从一个下降沿开始,并且之后至少维持4Ticks逻辑0,之后将下一个下降沿距离第一个下降沿的时间差作为Nibble值的编码依据。两个下降沿至少间隔12Ticks,至多间隔27Ticks(对应Nibble值,最小0,最大15)。
帧结构
下图为数据长度为6个nibble的SENT帧结构。
每个SENT帧由以下部分组成:
- 校准/同步脉冲(Calibration/Synchronization Pulse)
- 用于同步接收模块和发送模块的时钟。
- 标称脉冲周期为56个时钟滴答。
- 接收模块通过测量校准脉冲的周期来校正时钟误差。
- 状态和通信nibble(Status and Communication Nibble)
- 一个nibble(4bit),用于传输传感器的状态信息或用于串行通信。
- bit0-1通常用于指示快速通道错误状态,bit2-3用于串行消息通道。
- 数据nibble(Data Nibble)
- 用于传输传感器的实际测量数据。
- 数据nibble的数量取决于具体的应用需求,通常为1到6个nibble。
- 每个nibble包含4bit数据,数据值范围为0到15。
- 校验和nibble(Checksum Nibble)
- 一个nibble(4bit),用于错误检测。
- 校验和是通过对数据nibble进行CRC计算得到的。
- 可选的暂停脉冲(Pause Pulse,可选)
- 用于在消息之间插入额外的时间间隔。
- 可以用于调整帧的总长度,使所有帧长度保持一致。
消息格式
通过多帧 “状态和通信nibble” 的 bit3-2 可组成串行消息,存在两种串行消息格式:短串行消息格式(Short Serial Message Format)和增强型串行消息格式(Enhanced Serial Message Format)。
短串行消息格式
短串行消息由连续16帧 SENT帧的“状态和通信nibble” 的bit3-2组成,要求第一帧的 “状态和通信nibble” 的bit3为1,之后连续15帧的bit3为0,此时连续16帧 “状态和通信nibble” 的bit2构成16bits串行数据,包括4bits消息ID、8bit数据和4bits CRC校验和。
增强型串行消息格式
增强型串行消息由连续18帧 SENT帧的“状态和通信nibble” 的bit3-2组成,起始标志为检测到连续8帧 SENT帧的 “状态和通信nibble” 的bit3构成 8’b01111110,且要求第14帧和第19帧的bit3为0,此时第2-19帧的 “状态和通信nibble” 的bit3-2构成一帧增强型串行消息。
根据第9帧的bit3又分为两种消息格式:
- 12 bits 数据 + 8bits 消息ID(configuration bit = 0)
- 16 bits 数据 + 4bits 消息ID(configuration bit = 1)
CRC校验和
SENT协议中定义了两种CRC校验和的计算方法:
- 4位CRC校验和(用于数据nibble和短串行消息)
- 6位CRC校验和(用于增强型串行消息)
CRC4
- 多项式:x4+x3+x2+1
- 种子值:0x05
- 示例:
CRC6
-
多项式:x6+x4+x3+1
-
种子值:0x15
-
示例:
错误检测机制
- 校准脉冲检测:校准脉冲周期应为56 ticks,允许误差范围为±20%;
- 数据nibble检测:数据nibble的脉冲周期应为12到27个ticks;
- CRC校验和检测;
- 低电平脉冲检测:任意一个脉冲的低电平时间应大于/等于 4ticks。