对于应用层对底层传来的报文即 Rx的处理,主要思路:
主要包括报文超时、报文帧丢失、checksum错误、rollingcounter 错误、报文有效的判断
1 首先底层要有CAN data 和data flag,data 至少是8*8byte的报文数据, flag在底层应该表示为一旦底层接收到1个完整的8*8byte,则表示当前帧报文接收完毕,通过置位flag告诉应用层可以进行当前接收的报文帧数据的分析。
2-需要对接收到的data进行分析前应当判断当前帧报文的有效或者真实性并置位对应的标志位:
主要包括报文超时、报文帧丢失、checksum错误、rollingcounter 错误、报文有效。
下面将一一 对这几种报文错误的判断逻辑进行初步设计:
A 报文超时 Message Timeout:
假设报文周期是100ms 应用层调度周期为10ms 我们设定丢失报文超过5帧则判断为报文超时。一旦报文超时,相关信号要使用默认值
需要一个参数来表示两条报文的相距时间,且参数在每次接收到报文时候置0,在接收到第二条报文前参数累计时间。
实现方式:设置data memory/read/write 模块,在每次收到报文时 write 0 到变量中,实现每次收到新的报文将计时重置。