随着汽车电子技术的持续进步,传感器与ECU间的数据传输愈发关键,SENT协议应运而生。它是一种用于汽车传感器和控制单元之间的通信标准,由SAE定义,通过脉冲信号编码传感器数据,主要用于汽车传感器向ECU传输数据。
01 SENT协议在汽车上的应用
通用公司在2005年提出SENT协议,旨在满足汽车传感器与ECU间高精度、高速度、低成本的数据传输需求。后经SAE完善,成为 SAE J2716 标准。
Source: https://www.jytek.com/news?ar...
如今,SENT协议广泛应用于汽车动力总成系统和底盘控制系统。发动机控制系统中,曲轴位置传感器、凸轮轴位置传感器等借助SENT协议,能将关键数据快速准确地传输给ECU,实现对发动机点火时刻、燃油喷射等的精确控制,提升发动机性能和燃油经济性;变速器控制系统里,变速器输入/输出速度传感器通过该协议向ECU发送数据,ECU实时监测变速器工作状态,精准控制换挡时机,提高变速器响应速度和平顺性;安全系统方面,轮速传感器、加速度传感器等的数据对ABS、ESC等安全系统至关重要,SENT协议确保这些数据及时准确传输,使ECU快速决策,保障车辆行驶安全。
02 SENT 协议的基础
SENT协议是一种点对点、单向传输(从传感器到ECU,连续传输,无需请求命令)的方案,通讯需三根线(信号线、电源线和地线)。
SENT协议是一种即单边半字传输协议,这里半个字节Nibble是指用4bit来进行编码定义的,一个半字节Nibble是通过2个下降沿之间的时间差来定义,如下所示:
其中,时间精度以 1个Tick定义,每个Nibble从一个下降沿开始,之后逻辑 0 状态至少维持 4Ticks,后一个下降沿与第一个下降沿至少相隔12Ticks,至多 27Ticks,相隔 Tick数减12即为最终Nibble值(0 - 15),二进制表示为 4bit。因此不难理解,下一个下降沿与第一个下降沿的时间差即为 Nibble值编码依据。
1)SENT 协议数据帧结构
SENT协议数据帧用于传输数据,每帧由不同宽度脉冲即半字节组成,数据传输分为快速通道和慢速通道。关键信号利用快速通道实现高频率更新,例如轮速信号;而非关键信号则置于慢速通道,通过多帧传输一个完整信号。
一个典型的 SENT协议数据帧包含以下元素:56 时钟节拍周期的校准 / 同步脉冲;12-27 时钟节拍周期的状态和串行通信脉冲,用于传输传感器相关信息;12-162 时钟节拍周期的数据脉冲,最多由 6 个半字节脉冲构成;12-27 时钟节拍周期的校验和脉冲;以及可选的 12-768 时钟节拍周期的暂停脉冲。
为了更好地理解 SENT协议数据帧结构,我们可以通过下图结合一个实际的例子来说明:
Source:https://www.zhihu.com/questio...
假设有一个汽车发动机冷却液温度传感器和进气压力传感器,它们通过 SENT协议向ECU发送数据。
对于同步脉冲。ECU接收到同步脉冲后,就像听到了一个 “开始”的口令,知道自己要开始接收来自传感器的数据帧了,并且根据同步脉冲的宽度和时钟周期,调整好自己的接收节奏,与传感器的发送节奏保持一致。
对于状态和通讯nibble。假设状态和通讯nibble的值为 “0x5”,这就像传感器给 ECU发送的一个消息头,告诉ECU自己目前状态正常,并且有一个数据帧要发送。
对于信号 1(假设为发动机冷却液温度)
- 4-bit(0 值): 这就如同信号1的 “起始标志”,告诉ECU接下来的数据是关于发动机冷却液温度的。
- 4-bit(5 值): 假设这个数据段表示温度的一个粗略范围值,例如表示温度在50-60℃这个区间。
- 4-bit(10 值):这个数据段进一步细化温度值,在之前的50-60℃区间内,更精确地指向58-60℃这个小范围。
- 4-bit(2 值):作为信号1的收尾数据,最终确定温度为58.2℃左右。
ECU收到这12bits的信号1数据后,经过解码和计算,就能得到当前发动机冷却液的温度精确值,进而根据这个温度值来调整发动机的散热风扇转速、喷油量等参数,以保证发动机在最佳温度下工作。
对于信号 2(假设为进气压力)
- 4-bit(8 值):作为信号2的开始标志,告知EC接下来的数据是进气压力相关的。
- 4-bit(9 值):表示进气压力的一个大致范围,例如表示进气压力在 0.9-1.0 bar之间。
- 4-bit(0 值):结合前面的数据,最终确定进气压力为 0.90 bar左右。
ECU 根据这个进气压力值,可以精确地控制燃油喷射量和点火时刻,优化发动机的动力输出和燃油经济性。
对于CRC/校验和。传感器根据发送的信1和信号2的数据,按照规定的算法计算出一个校验和值,比如计算得到校验和为 “0x7”,并将其作为CRC/校验和nibble发送给ECU。ECU接收到后,同样用该算法对收到的数据进行校验和计算,如果结果也是“0x7”,则确认数据传输正确,可以将这些数据用于控制算法;如果有误,则认为数据传输过程中出现了错误,可能会丢弃这个数据帧,并请求传感器重新发送数据或进行故障诊断。
整个数据帧传输完成后,ECU就可以根据接收到的发动机冷却液温度和进气压力数据,对发动机的运行状态进行精确的控制和调整,以确保发动机的性能、燃油经济性和排放等指标都处于最佳状态。
2)SENT 协议的实现基础
对于SENT协议的实现,我们可以从硬件和软件两个方面来考虑:
从硬件层面,我们知道SENT协议用于传感器信号,其基本引脚连接包括信号线、电源线和地线。SAE J2716推荐接口电路,对于一般接收端供电的应用可参考相应电路进行设计。实际接口设计中,要考虑到信号的完整性、抗干扰能力以及与传感器和 ECU 的匹配等问题。下图示意了一种接口电路:
对于ECU,可以选择具有SENT协议控制器或可灵活配置的定时器和GPIO引脚的MCU 。比如一些基于ARM Cortex-M系列内核的 MCU,像STM32系列,凭借其高性能、低功耗以及丰富的外设接口,可用于实现SENT协议的发送和接收。
在软件层面,可以从以下4个方面来考虑:
首先SENT协议解析,关键点是测量脉冲周期,可通过计算两个下降沿之间的计时器count 值的差值来实现测量。以STM32主控MCU为例,通过设置定时器下降沿捕获来实现这个功能;
其次是在软件中,根据SENT协议的状态机模型,维护一个状态变量,根据接收到的脉冲信息更新状态变量的值,从而实现状态的转换和相应的操作;
然后是SENT协议栈开发 ,包括数据帧的打包与解包、数据的编码与解码、校验和的计算与验证、快速通道和慢速通道的数据处理等功能模块;
最后在完成协议栈开发的基础上,根据具体的应用需求,开发应用层软件。比如在发动机控制系统中,应用层软件需要将接收到的传感器数据进行处理和分析,并根据这些数据控制发动机的运行参数,如燃油喷射量、点火时刻等。
03 SENT 协议的发展趋势
为了更好地了解SENT协议的发展趋势,我们先了解SENT协议的优劣势:
1)SENT 协议的优势
① 高传输精度和速度:作为数字信号传输协议,SENT具有高传输精度和速度,数字数据传输速度可达30kb/s,满足高清传感器数据传输需求。
② 低成本:无需接收器和集成发射器,单线数据传输减少信号线数量,降低硬件成本。
③ 出色的抗干扰能力:SENT协议对信号时序要求严格,信号含时钟和数据信息,抗干扰出色,能减少电磁干扰影响。
④ 强大的诊断功能:可传输传感器数据和故障代码,使传感器系统具备强大故障诊断能力,ECU能及时检测和诊断故障。
⑤ 灵活的数据传输方式:数据传输分快速通道和慢速通道,重要信号用快速通道高频更新,非关键信号放慢速通道传输,提高数据传输效率。
2)SENT 协议的劣势
① 单向传输限制:属单向传输协议,数据只能从传感器到ECU,无法双向通信,在需实时交互场景中存在局限性。
② 点对点通信:主要用于点对点通信场景,不适用于多节点网络通信,在多传感器和多ECU复杂通信系统中应用受限。
③ 较短的传输距离:与部分通信协议相比,SENT协议传输距离较短,可能限制其在大型车辆或特殊应用场景中的使用。
因此基于SENT协议的这些优劣势,SENT协议有望在传输速度、精度等方面进一步优化,以满足汽车电子系统对数据传输的更高要求;同时SENT协议可能会与其他通信技术如 LIN、CAN、以太网等进行更深度的融合,通过建立更加高效、灵活的混合通信网络,充分发挥各种通信协议的优势,实现不同类型数据的合理传输和共享,提高整个汽车电子系统的性能和可靠性。SENT协议可能会增加一些新的功能和特性。例如,在数据安全方面,可能会引入加密和认证机制,以确保传感器数据的完整性和真实性;在诊断功能方面,可能会进一步增强故障诊断的能力,提供更详细的故障信息和诊断支持。
END
作者:糊涂振
来源:汽车电子与软件
推荐阅读:
- 从手写代码到AUTOSAR工具链(J1939Tp应用篇)
- 车身座椅调节功能软件组件设计
- AP AUTOSAR中的传输层安全协议(TLS)技术详解
- 英飞凌Aurix™ TC3xx 芯片内核详解——TriCore™上下文机制
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。