TC10休眠唤醒规范(OPEN Sleep/Wake-up Specification V2.1)是针对车载以太网100BASE-T1,是对IEEE 802.3bw的补充和完善。TC10休眠唤醒规范主要规范了车载以太网物理层(PHY)的休眠唤醒,包括新的服务原语的定义、PHY电源模式的定义、电源模式跳转条件定义以及时间参数定义等内容。其与车载以太网应用层的休眠唤醒UDPNM结合使用,才能真正实现车辆基于以太网的休眠唤醒策略/方法。
TC10休眠唤醒规范的学习和理解,对车载以太网休眠唤醒策略及技术方案的开发有一定的指导意义。本文接下来将用4部分对TC10进行介绍。
新服务原语
TC10引入并介绍三个新的服务原语,用于辅助完成PHY的休眠唤醒。
Service Primitives |
Description |
LPS |
Low Power Sleep,睡眠请求,是请求转换到睡眠的节点/网关所发送,最少64 bits |
WUR |
Wake-Up Request,唤醒请求,是节点/网关PHY发送,用于分发唤醒请求,最少64 bits,同时要求唤醒网络的最大跳数是4 |
WUP |
Wake-Up Pulse,唤醒请求,是节点/网关PHY发送,用于分发唤醒请求,持续时间1ms(±0.3ms),在双绞线上的活动被partner PHY作为远程唤醒 |
表中WUR和WUP的发送方相同、且都是唤醒请求,有什么区别呢?
这里要简单说明下两者的区别:WUR是link up链路上主动唤醒节点/网关所发;而WUP是training模式下的节点/link down链路上的网关所发。
结合TJA 1101资料里唤醒转发的示意图来阐述更容易理解。下图中PHY 1和PHY 2 均处于NORMAL状态,即link up状态,网关内的PHY 3、PHY 5和节点的PHY 4、PHY 6均处于sleep状态。在图示的唤醒转发过程中,PHY 1所在的节点想唤醒PHY 4和PHY 6所在的节点,以便完成某项功能的实现。首先PHY 1请求唤醒,因为PHY 1和PHY 2处于link up状态,因此发送的唤醒信号是WUR;网关转发唤醒信号时,由于相应的链路(PHY 3和PHY 4、PHY5和PHY 6)处于sleep状态,因此发送的唤醒信号是WUP。
图1 唤醒转发示意图(Source:TJA 1101 ApplicationHints)
PHY电源模式
参照TC10并结合图2,先对PHY电源模式进行简要介绍:
PHY Power Mode |
Description |
NORMAL |
正常数据传输状态,正常收发数据 |
SLEEP_ACK |
睡眠确认状态,PHY收到对端睡眠指令(LPS)时进入 |
SLEEP_REQUEST |
睡眠请求状态,PHY本身请求睡眠或者PHY接收对端睡眠指令(LPS)一定时间后进入 |
SLEEP_SILENT |
睡眠静默状态,能量检测电路保持非使能以阻止虚假的唤醒毛刺,阻止通过LPS命令的相互唤醒 |
SLEEP_FAIL |
睡眠失败状态,睡眠被终止,PHY将回到NORMAL状态 |
SLEEP |
睡眠状态,PHY部分功能断电,等待唤醒脉冲或者软件唤醒 |
PHY电源模式主要定义了休眠唤醒过程中的各种状态,结合状态跳转的各种判定条件(定时器溢出、变量/参数值变化),完成PHY休眠唤醒的控制。
PHY电源模式跳转
图 2 PHY电源模式及跳转示意图(Source:OPEN Sleep/Wake-up Specification V2.1)
结合图2来查看下PHY各电源模式之间的跳转关系。假设起始时,链路上的2个PHY(PHY A和PHY B)均处于NORMAL模式。图中的定时器、变量/参数变化将用文字描述,以便于理解。
-
处于NORMAL模式的PHY A请求睡眠,进入SLEEP_REQUEST模式,发送LPS指令给PHY B,并启动睡眠请求定时器(sleep_req_timer);
-
处于NORMAL模式的PHY B接收到PHY A发送的LPS指令,进入SLEEP_ACK模式,并启动睡眠确认定时器(sleep_ack_timer);
-
如果PHY B由于传入信息而终止睡眠,PHY B回到NORMAL模式;
-
如果PHY B没有拒绝睡眠(即没有信息传入),则将同样进入SLEEP_REQUEST模式,并发出LPS指令;
-
PHY B由于先收到LPS,且已发送LPS指令,PHY B将直接进入SLEEP_SILENT模式;PHY A在接收到PHY B发送的LPS指令后,也同样进入SLEEP_SILENT模式;
-
如果PHY A在定时器sleep_req_timer溢出时仍未收到PHY B发送的LPS指令,将进入SLEEP_FAIL模式,继而回到NORMAL模式;
-
在SLEEP_SILENT模式,若在sleep_req_timer溢出时,收到非zero符号(loc_act_detect = True),则PHY A/B进入SLEEP_FAIL模式,继而回到NORMAL模式;
-
在SLEEP_SILENT模式,若在sleep_req_timer溢出前,收到连续的zero符号(loc_act_detect = False),则PHY A/B进入SLEEP模式。
-
处于SLEEP模式下的PHY A/B当接收到本地唤醒或者远程唤醒信号/指令后,进入NORMAL模式,开始正常通信。
不同芯片供应商对TC10的支持不一样,各PHY芯片对TC10电源模式及跳转条件也都有各自的修订,在实际应用中,建议查询相应芯片的datasheet。
定时器参数
PHY电源模式状态跳转涉及的定时器参数,ECU开发过程中需要考虑这些时间参数。本表中未列出唤醒传输时间参数和唤醒转发传输时间参数,有需求者可以查阅TC10。
Timer |
Description |
Recommendation |
sleep_ack_timer |
SLEEP_ACK状态持续时间 |
8 ms |
sleep_req_timer |
SLEEP_REQUEST和SLEEP_SILENT状态持续时间 |
16 ms |
本文仅对TC10休眠唤醒规范做简要解析,深入的研究既需要对规范理解,也需要结合实际项目来实现。同时本文讲解的主要是针对100BASE-T1版本的TC10,目前1000BASE-T1的TC10规范draft版本也已经开始讨论,大家还有什么疑问欢迎下方留言哦~