HDRL/HDRH和HDP用于定义软件配置完发送帧头命令,到LIN模块实际发送帧头的时间,可用于延时发送。
官方LIN总线例子提供了帧头延时时间设置函数:
- //========================================================================
- // 函数: void LinSetHeadDelay(u8 base_ms, u8 prescaler)
- // 描述: Lin总线设置帧头延时函数。
- // 参数: base_ms:延时计数, prescaler:延时分频.
- // 返回: none.
- // 版本: VER1.0
- // 日期: 2021-01-05
- // 备注: 延时时间(ms) = base_ms*(prescaler+1)
- //========================================================================
- void LinSetHeadDelay(u8 base_ms, u8 prescaler)
- {
- u16 tmp;
- tmp = (MAIN_Fosc * base_ms) / 1000; //注意计算结果不能超过65535,否则会溢出
- LinWriteReg(HDRH,(u8)(tmp>>8));
- LinWriteReg(HDRL,(u8)tmp); //设置帧头延时计数
-
- LinWriteReg(HDP,prescaler); //设置帧头延时分频
- }
复制代码
如果调用函数时设置参数:LinSetHeadDelay(0x01,0x02);
那么延时发送时间 = 1ms * (2+1) = 3ms
|