SETN协议介绍&EB工具配置及实现

1、SENT概述
1.1、SENT传输协议
SENT (Single Edge Nibble Transmission),即单边半字节传输协议,是一种点对点的单线协议。信号由传感器发送,ECU只负责读取。
1.2、协议介绍
SENT信号以Tick为单位计时,1个Tick即信号两个下降沿的时间差,一般为310us,取决于传感器时钟性能,数据每4bit为1个Nibble,即半字节,半字节的脉冲周期位1227个Tick,代表数据0~15。
一帧SENT信号包括以下几个部分
在这里插入图片描述

 Sync 同步脉冲,固定的 56Ticks
 Status/Com 状态及通讯字段,12~27Ticks,即 1 个 Nibble(4bit)
 Data 数据段,12~162Ticks,即 1~6 个 Nibble
 CRC 校验字段,12~27Ticks,即 1 个 Nibble
 Pause 暂停脉冲 12~768Ticks,早期的 SENT 协议无此字段或者一个固定长度 Ticks,SENT2010 之后,部分通过此功能可以动态条件 TICKS 的个数,实现整个 SENT 协议是同一个固定长度 TICKS
SENT有快通道和慢通道两种,一般比较重要的数据,需要实时传输,就使用快通道,每一帧的数据如上图所示的DATA位。对于优先级没有那么高的数据,采用慢通道传输,即用每一帧信号状态位中的两位去来传输,通过多帧信号,拼接出一个完整的数据。如下图所示:
Status/Com 字段的 bit3 值用来辨别以何种形式组合,第2bit为数据
在这里插入图片描述

 当 Status/Com 字段的 第3 bit值为 1,其之后的 15 帧 SENT 报文的 Status/Com 字段的 bit3 值都为 0 时,此种情况,此情况下是 16 帧 SENT 报文组合来传输附加信息。
通过连续的16帧SENT数据,由第2bit拼接出16bit完整的一帧信号,其中4-bit 的 Message ID,8-bit 的 Data 和 4-bit 的 CRC。

 当起始标志是 Status/Com 字段 第3bit 连续为 1111110,并且Status/Com 字段 3bit 组合的第 13 和第 18 位都为 0,此种情况,此情况下是 18 帧 SENT 报文组合来传输附加信息。
在这里插入图片描述

Status/Com 字段 bit3 组合的 9~12bit 和 14~17bit 分别作为 8bit ID 的高 4 位和低 4 位数据,而 Status/Com 字段 bit2 组合的 1~6bit 是 6bit 的 CRC 数据,之后的 7~18bit 则为要传输的 12bit 的数据
 Status/Com 字段 第3bit 组合的第 8 位为 0:
Status/Com 字段 bit3 组合的 9~12bit 和 14~17bit 分别作为 8bit ID 的高 4 位和低 4 位数据,而 Status/Com 字段 bit2 组合的 1~6bit 是 6bit 的 CRC 数据,之后的 7~18bit 则为要传输的 12bit 的数据。
 Status/Com 字段第3bit组合的第 8 位为 1:
Status/Com 字段 bit3 组合的 9~12bit 为 4bit ID,而 Status/Com 字段 bit2 组合的 1~6bit 是 6bit 的 CRC 数据,之后的 7~18bit 和 bit3 组合的 14~17bit 则组合为要传输的 16bit 的数据。
在这里插入图片描述

2、EB Mcal配置
2.1SENT配置
2.1.2 General
在这里插入图片描述

SentSpcFeatureSupport:确定是否启用SPC功能
SentResetSfrAtInit:是否启用初始化期间SFR重置为默认值
SentInitDeInitApiMode :选择管理员模式还是用户模式
是否启用SPC(短PWM代码)功能要看传感器是否支持,ECU是否使用
2.1.2 SentConfigSet
在这里插入图片描述

SentSystemClock :选择时钟源
SentSleepModeEnable :是否启用睡眠模式
SentModuleClkDiv:定义用于生成SENT模块时钟的8位分频器。该值将用于划分MCU SPB时钟fSpb,并派生出fSent SENT模块时钟。
SentBaudFracStep:定义10位步进分频器以生成SENT分数分频时钟,该时钟是所有SENT通道的输入;导出为如下:Ffracdiv = Fsent/ (1024-SentBaudFracStep)
如:FSPB = 100M,Ffracdiv = 100/(1024-1023) = 100M
2.1.3 SentChannelConfigSet
在这里插入图片描述

SentChLogiIndex :SENT要配置的逻辑通道Id。
SentChanPreDiv:定义通道预分频器的12位分频器设置时钟;派生为 Fpdiv = Ffracdiv/ (SentChanPreDiv + 1)。(100/(7+1)= 12.5MHz)
SentChanBaudDiv:为通道的小数分频时钟Ftick定义12位分频设置。这是信道的波特率频率派生为 FtickFpdiv56/SentChanBaudDiv。(12.556/2200=0.318MHz=3.142us)
SentChanCRCMode :定义用于快速通道/慢速通道数据通信的CRC模式
SentChPhyIndex :定义发送方的物理id
SentRxInput :该参数为给定的发送通道选择RX信号的备用输入
对应选择的port口确认通道
在这里插入图片描述

SentChanStatusNibbleCRCInc:定义是否应该将状态nibble用于CRC计算。
SentChanEnESF : 定义应该使用标准串行模式还是扩展串行编码模式。如果使用标准串行模式,则在16个SENT帧(4bit ID, 8bit data, 4bit CRC)之后进行处理。如果使用扩展串行模式,则在18个SENT帧(4或8位ID, 12或16位数据,6位CRC)之后进行处理。
SentChanSerialProcEn : nSerialProcEn(nSerialProcEn)定义是否应该启用串行数据的自动处理。如果启用,一旦SDI中断被激活,串行数据可以通过Sent_ReadSerialData读取。如果不启用,状态蚕食可以手动读取,用户应该相应地从各自发送帧的状态蚕食中整理串行数据。
SentChanSerialCrcDisable : 定义串行数据的CRC是否应该由SENT硬件在内部进行验证。如果为TRUE,则由应用程序负责验证接收到的串行数据的CRC。
SentChanFrameCrcDisable : 定义当前发送帧的CRC是否应该由发送硬件内部验证。如果为TRUE,则由应用程序负责验证接收到的SENT帧的CRC。
SentChanFrameChk : 定义当前发送帧是否应该与前发送帧/最后一个有效的前发送帧进行验证,以实现连续的同步脉冲差(> 1.5625%)。如果选择SENT_PAST_SYNC_PULSE,将当前帧的同步脉冲与前一帧的同步脉冲进行比较。根据标准[8],这是首选选项。如果选择了SENT_PAST_VALID_SYNC_PULSE,则将当前帧的同步脉冲与前一个有效帧的同步脉冲进行比较。
SentChanFrameDataLen: 定义每个SENT帧的数据蚕食数。事实并非如此包括同步脉冲,状态nibble,CRC nibble,或额外的零长度nibble
SentChanDriftErrEn :。如果配置了超过8个小块,则每次将8个小块写入该通道的RDR寄存器时都会发出RDl中断。在最后一个数据帧的末尾,RDI中断也被发出。如果在最后一个数据帧没有发生RDI中断,则发生错误。RSI中断应在每次成功接收到单个发送帧时发出。
SentChanDriftErrEn : 定义是否应该启用漂移错误。SPC触发的某些传感器往往有很长的暂停期,累积漂移可能超过1.5625%,那么禁用此功能是有用的。
SentChanCRZEn : 定义是否应该为CRC计算增加零位。如果为TRUE,则选择扩增(即在CRC计算结束时添加ZERO NIBBLE(仅在计算中))。例如,作为第7口(在6口数据的情况下)。
SentChanIgnoreEndPulse : 定义是否应该忽略结束脉冲。对于某些具有结束脉冲的系统,在接收同步或再同步期间,如果检测到一个校准脉冲紧跟着另一个校准脉冲,则应忽略第一个校准脉冲,因为它可能是一个持续时间与校准脉冲范围匹配的暂停脉冲。
SentChanInPulse : minPuise定义各自输入通道的脉冲极性。
SentChanOutPulse : 定义各自输出通道的脉冲极性。
SentChanGlitchFilterDepth: 定义数字故障滤波器应考虑的输入采样数。
SentChanDataView: 定义将接收到的数据片段呈现给相应通道的用户的顺序。例如Ox76540123表示接收到的啃咬0进入RDR的1215位,接收到的啃咬1进入RDR的8-11位,接收到的啃咬2进入RDR的4-7位,接收到的啃咬4进入RDR的16-19位,接收到的啃咬5进入RDR的20-23位,接收到的啃咬6进入RDR的24-27位,接收到的啃咬7进入RDR的28-31位。
在这里插入图片描述

SentChanFreqDriftCheckLen : 定义是否激活FDFL模式。这只用于有暂停脉冲的帧。如果是,漂移误差不被HW检查。
SentChanCalloutFn : 定义要为任何通知事件/错误调用的函数各自频道的。
触发回调函数的事件:
在这里插入图片描述在这里插入图片描述

2.2 IRQ配置
在这里插入图片描述

选择OS托管中断
3、代码实现
根据配置的中断回调函数,会输入两个入参channelid和事件状态
Sent_Callback( Sent_ChannelIdxType ChannelId, Sent_NotifType Stat )
当状态为SENT_INT_RSI_EVENT时,调用API Sent_ReadData获取data。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值