MD14 MCAL 2.3.0 LINflexD Timeout Error 说明
-
1. 背景
- 软件:MCAL 2.3.0 Lin_Demo
- 背景描述:
- 有客户在使用 YCT 配置的时候对 LinResponseTimeout 和 LinHeaderTimeout 两个配置项与具体超时时间之间存在什么关系,本篇文章会重点介绍
- YCT 配置工具中单击 LinResponseTimeout 和 LinHeaderTimeou 也对这两个参数有一定的解释

- 文档参考:《YTM32B1MD1x_RM_v1.3.pdf》的 19.4.2.5 Errors 章节的 Timeout Error 部分
2. 描述
- 当在超时响应周期内出现响应不完整或无响应时,会发生超时错误。
- 图 19.10:不完整响应(例如,缺少校验和)
- 图 19.11:无响应
- 两个图展示了 “响应超时” 的场景:在规定的 T_Reesponse_Max 时间内,若从设备的响应不完整(如缺少校验和)或完全无响应,会触发 Error。

2.1 Response Timeout Mechanism(响应超时机制)
- 用于检测从设备是否在规定时间内返回完整响应,分为主模式和从模式。
2.1.1 Master
- 在标识符字段的停止位结束时,向 OC2 加载 nominal_time_out + LINTCSR.CNT(其中 nominal_time_out = 1.4 × ((DFL + 2) × 10 位时间))。该加载发生在标识符字段结束时(而非数据字段开始时),且会立即加载与 DFL 相关的正确值,无需后续更新。
- 若完全无响应(未收到数据起始),或响应不完整,当计数器达到 OC2 值时,触发超时。

1. LINOCR 寄存器

2. BIDR 寄存器
- DFL 值为接收数据的长度 - 1,例:RX 的接收长度配置为 8,DFL 的值为 7

- nominal_time_out = 1.4 × ((DFL + 2) × 10 位时间)
- nominal_time_out:超时时间,单位是 bits
- 1.4:LinResponseTimeout(YCT 配置项) / 10
- DFL:接收数据长度 - 1
- 10:固定值,单位为 bits
2.1.2 Slave
-
在从机模式下响应超时有两种情况:
-
Case 1:实现与主模式类似,在标识符字段的停止位结束时加载 OC2,值为 nominal_time_out = 1.4 × ((DFL + 2) × 10 位时间)

-
Case 2:帧头结束 到 数据1 直接的时间(应答间隔时间),OC2 加载 36(最大可能响应空间) + LINTCSR.CNT

2.2 Header Timeout Mechanism
- 用于检测报头(主设备发送的命令帧头部)的接收时效性,分为主模式和从模式。
2.2.1 Master
- 报头由 LINFlexD 自身生成,仅存在两种情况:总线无错且时序正确(标称报头长度),或总线出错(如位错误,由 LINESR 标记)。因此,主模式下无报头超时,该功能被禁用
2.2.2 Slave
- header_nominal = 13 + 2 + 10 + 10 = 35 T_bit(标称报头长度,以位时间为单位);
- header_max = 1.4 × header_nominal = 49 T_bit(最大报头长度);
- 考虑 14% 的时钟偏差,LINFlexD 实际监控的 header_max 为 49 × 1.14 = 55.86 T_bit;
- 若计数器在 11 T_bit(Break 持续时间)后启动,则 LINTOCR.HTO 值为 55.86 - 11 = 44.86 T_bit(LinHeaderTimeout(YCT 配置值):复位值为 44)。计数器在 Break 持续时间后重启,LINOC.OC1 加载 LINTOCR.HTO 的值。
快速上手云途开发生态
发帖前请查看
帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...