• 444查看
  • 0回复

[底层软件] Communication RequirementSpecification

[复制链接]


该用户从未签到

发表于 21-1-2024 13:32:19 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


在汽车电子电气架构开发中,主机厂通常会定义一些通讯相关的需求,本篇以autosar的实现方式来分解这些需求。

1. 物理层

CAN(Controller Area Network)通讯的物理层要求主要包括并且不限于:1.信号线和传输介质;2.电气特性;3.数据速率与传输距离;4.阻抗匹配;5.故障保护;6.连接器和线束设计;2.数据链路层
1.Bit Rate(比特率或波特率):这是CAN网络中所有节点必须匹配的一个基本参数,定义了总线上数据传输的速度,即每秒钟传输的位数(bps)。

2.Propagation Delay(传播延迟):信号从一个节点传输到另一个节点所需的时间,包括电缆长度、驱动器输出延迟以及接收器输入延迟等因素。它不直接作为配置参数,但会影响其他定时参数的设置。

3.Phase Segment 1 (PS1) 和 Phase Segment 2 (PS2):这两个时间段与采样点相关联,共同构成了一个完整的位时间周期。PS1位于同步跳变边沿之后,PS2位于采样点之后至下一个同步跳变边沿之前。

4.Propagation Segment (PROP_SEG):它是从同步跳变边沿开始到采样点的时间段,包含了信号在总线上传播以及各节点间同步所需要的时间。

5.SJW(Sync Jump Width 同步跳跃宽度):这是一个可调整的参数,表示采样点可以相对于理想位置向前或向后移动的最大时间单位。SJW主要用于补偿因各种原因导致的时钟偏差,提高同步性能。

6.Baudrate Prescaler (BRP, Baud Rate Prescaler):这个参数用于将CAN控制器内部时钟频率分频,以达到所需的比特率。通过改变BRP值,可以在同一CAN系统内实现多个不同的比特率。

比特时间参数表:

Communication RequirementSpecificationw1.jpg

采样点配置参考:

Communication RequirementSpecificationw2.jpg

3.交互3.1 DLC在经典CAN(控制器局域网络)中,DLC是一个4位字段,可以表示0到8个字节的数据长度。而在CAN FD中,为了适应更大的数据传输需求,数据场长度被显著增加,DLC不再是唯一决定数据长度的字段。当进入数据扩展段时,CAN FD帧会使用额外的标志来指示实际数据长度可能超过8字节,并且允许最多传输64字节(具体长度由实现定义,不同制造商可能会有所不同)的数据。
Communication RequirementSpecificationw3.jpg

3.2报文发送类型3.2.1 Cycle信号的周期小于20ms时,一般会要求周期误差(容忍度:tolerance)小于20%;周期大于20ms时,则要求信号的周期误差小于10%。

Communication RequirementSpecificationw4.jpg

3.2.2 Event事件型报文的间隔应该大于20ms。当新的事件触发时,应当丢弃上一个事件报文重新发送。

Communication RequirementSpecificationw5.jpg

3.2.3 Cycle&Event
当没有事件触发时,报文以时间T周期发送;当事件触发时,以周期t发送n次之后恢复周期T发送。

Communication RequirementSpecificationw6.jpg

3.2.4 配置那么对于自身ECU,发送的Com配置如下图:

Communication RequirementSpecificationw7.jpg

可以配置报文为周期或立即或混合发送,并配置其发送周期或重复次数(重复周期);而txmode的true和false,可以通过调用函数
Com_SwitchIpduTxMode()实现不同发送方式的改变。

4.Network Related Diagnostic

4.1 工作电压范围

Communication RequirementSpecificationw8.jpg

Communication RequirementSpecificationw9.jpg

一般主机厂都会定义Can或诊断功能的电压工作范围,在项目中,可以通过配置BSWM调用comm接口来实现,也可以手动调用ComM的接口来实现。对于诊断功能,也可以通过调用DCM的接口

Dcm_ComM_NoComModeEntered()实现对dcm相关功能的单独开关。

4.2 busoff恢复参数

当一个节点检测到过多的错误并进入bus off状态时,该节点将停止所有的总线活动以避免进一步干扰网络通讯。主机厂通常会定义快慢恢复周期及恢复次数

Communication RequirementSpecificationw10.jpg

对应到配置:

Communication RequirementSpecificationw11.jpg

4.3节点超时

Communication RequirementSpecificationw12.jpg

通常对于节点超时的判断参数都会设置为报文的10倍帧周期,不过也有更科学的参数如上图;

配置实现:

Communication RequirementSpecificationw13.jpg

可以在Com中配置IPDU的timeout和ErrorNotification,当报文超过超时周期仍未接收时,将会调用error的回调,我们可以在回调中实现具体的功能,如通知应用层或报故障码 。

4.4 报文校验

同样看上图中的pducallout配置,在配置的回调函数中实现具体rc/checksum的判断后,函数返回true才会再往Com层发送数据。

不过值得注意的是,由于是com层的回调,callout中的形参id为pduid,那么怎么通过pduid来确认是具体哪个CANID的报文呢?

以tx的回调为例,先看下回调的调用顺序:

Communication RequirementSpecificationw14.jpg

那么很自然,咱们可以去Com/PDUR/CANIF的 pbcfg.c,这几个文件中生成出的配置去查找。

pduid截图如下:

Communication RequirementSpecificationw15.jpg

通过pdu号来查找compbcfg中Com_Prv_xTxIpduCfg_acst[2].idPduRSrcPdu_uo

找到对应的pdur和序号:

Communication RequirementSpecificationw16.jpg

Communication RequirementSpecificationw17.jpg

最终在Canif_TxPduGen_a结构体中找到存储pdur序号和CANID的位置:

Communication RequirementSpecificationw18.jpg

Communication RequirementSpecificationw19.jpg

那么,通过如上代码,即可通过id去查找对应CAN报文的ID了,方便我们实现报码之类的功能。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-2-2025 12:49 , Processed in 0.381773 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.