目录
LIN NM
在CANoe中,软件已经集成好了LIN的网络管理失眠唤醒模块LIN NM
在这个模块中适用于所有LIN的网络管理
在这个模块中,定义了开始start state,和action
start state:
定义了两种上电状态,在oe工程启动时候的初始化状态
1.awake:一般选择awake
2.asleep:
action:
定义了网络行为
1.sleep:立即进入睡眠
2.wakeup:立即唤醒
注:如果使用此模块的时候,wakeup:唤醒帧默认为1ms左右的显性电平;sleep:默认使用睡眠:0x3C:00 FF FF FF FF FF FF FF
自定义睡眠唤醒
如果我们不能满足于系统给定的睡眠唤醒行为,这时候我们可以自定义睡眠唤醒行为
此时,我们需要用到CAPL中的睡眠唤醒函数
上图是所有的睡眠唤醒函数
linSendWakeup
lingotosleep
有三种函数允许我们调用,同时等效于linwake和linsetwakeuptimings这两个函数
on key 'b'
{
if(1== a)
{
writeex(-3,1,"睡眠");
linGotoSleep();
a = 2;
}
else if(2 == a)
{
writeex(-3,1,"发送唤醒指令");
linSendWakeup();
a = 3;
}
else if(3 == a)
{
writeex(-3,1,"睡眠");
linGotoSleep();
a = 4;
}
else if(4 == a)
{
writeex(-3,1,"发送唤醒指令");
linSendWakeup(150,3,2000);
a = 5;
}
}
配置自定义睡眠
如果我们使用使用睡眠不是0xFF的时候;这时候我们需要自己配置睡眠指令
on key 'b'
{
if(1== a)
{
writeex(-3,1,"睡眠");
linGotoSleep();
a = 2;
}
else if(2 == a)
{
writeex(-3,1,"发送唤醒指令");
linSendWakeup();
a = 3;
}
else if(3 == a)
{
writeex(-3,1,"睡眠");
master_msg.byte(0) = 0;
master_msg.byte(1) = 0x1;
master_msg.byte(2) = 0x2;
master_msg.byte(3) = 0x3;
master_msg.byte(4) = 0x4;
master_msg.byte(5) = 0x5;
master_msg.byte(6) = 0x6;
master_msg.byte(7) = 0x7;
master_msg.rtr = 0;
output(master_msg);
master_msg.rtr = 1;
output(master_msg);
a = 4;
}
else if(4 == a)
{
writeex(-3,1,"发送唤醒指令");
linSendWakeup(150,3,2000);
a = 5;
}
}
其他函数具体参考help手册就行