目录
基础了解
SENT(single edge nibble transmission),单边半字节信号传输。在 AUTOSAR 规范中,SENT并没有明确的标准,因此将其归类为 CDD(复杂驱动)模块。
SENT 是一种 MCU 和传感器之间直接连接的点对点通信方式,其结构简单,除了一根数据线之外,还由 5V供电和GND 三根线构成。由于 SENT 特殊的信号传输方式,使其传输信号的精度更高。总结来讲,SENT有以下优点:
1. 采用数字信号传输,使得精度和传输速度更高;
2. 结构简单,成本低。
主要因为上述特点,SENT 一般用于汽车的温度、湿度、风速、风压 等数据的传输。
工作流程
SENT 分为快速通道和慢速通道,快速通道用来传输实时性要求高的数据比如上面提到的温度等,并且一帧数据就能包含完整的数据内容;慢速通道可以传输一些实时性要求低的数据,比如诊断数据,要获得完整的数据可能需要多个SENT帧拼凑出来。
本文暂时不对慢速通道进行介绍,一切以快速通道为标准。
在实际应用中,我们可能会用到多组SENT,每组SENT又包含多条通道(channel)。至于要用到几组,每组通道有多少,这个要根据芯片支持情况来具体分析。(本人习惯把SENT的组称作路,以下均为 路 来替代)
举个例子,比如现在有款芯片支持两路SENT,分别是 SENT0 和 SENT1,其中第一路SENT支持6个通道,另一路支持5个通道。在使用时,我们将传感器的信号线连在这些通道上并确定这个通道初始化完成。然后我们就能读取该通道采集的数据了。
需要注意的是,SENT是单向传输协议,数据只能从传感器到ECU,且传输是连续的,不需要请求命令。
通信帧
SENT物理接口由一个信号线、一个+5 V供电电压线和一个接地组成高低信号的电平要求:0~0.5 V为逻辑电平0,4.1~5 V为逻辑电平1。
下图所示为一个SENT通信帧。首先要明确两个概念:
脉冲周期(Pulse Period): 发送信号的连续两个下降沿间隔时间的基本单位,由 同步域/56 获得 ;
半字节(Nibbbles): 信号识别的基本单位,共4 bit;
一个 SENT 帧可以同时携带两种数据,比如 温度和湿度。
SENT帧开始的第一个下降沿间隔叫做同步信号,这个根据这个信号可以算出来脉冲周期的大小,这个信号的时间长度为56个脉冲周期。脉冲周期的范围为 3us 到 10us,以传感器的性能决定。
SENT采用连续两个下降沿之间的内容作为一个Nibble的数据。
SENT的数据使用半个字节(Nibble),即4bit来进行编码定义的,一个ibble是通过2个下降沿之间的时间差来定义的。一个Nibble的最短时间为12 脉冲周期(数值0的时候);在发送一个Nibble时,需要大于4个(通常用5个)脉冲周期的拉低时间,剩余的clock需要拉高,为下降沿做准备。
Nibble的最小值0(0x0)由12个脉冲表示,每增加一个数值,时钟数在12的基础上加1。
由于采用十六进制,所以最小的数0(0x0)的时钟数为12,最大数15(0xF)的时钟数为27。脉冲周期数的计算公式如下:
脉冲周期数 = 5个LOW脉冲周期 + 7个HIGH脉冲周期 + n*Clock
同步域后的第一个Nibble是状态位,它能告诉MCU这帧数据后面都是什么内容,比如是什么数据,是否有校验位等。
再之后,就是两个data的数据,每个data分别有三个Nibble。
跟在data后面的就是校验位。
如果看实际波形的话,如果在两帧数据之前有一个很大的间隔叫做帧间隔,用于区分两个帧。