0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

车载PHY的唤醒与睡眠的正确姿势

UtFs_Zlgmcu7890 来源:工程师曾玲 2019-02-02 17:10 次阅读

适应汽车网联趋势,以及舒适性的需求,车载以太网将会在汽车车载网络中得到普遍应用。而基于安全考虑,往往汽车的相关产品和协议规范会将工程师们绕的晕头转向。小编在这就给各位看官解锁汽车以太网PHY睡眠和唤醒的正确姿势。

1相关命令介绍

由于IEEE802.3bw规范没有制定链路睡眠和唤醒的机制,因此,OPEN联盟制定了该规范并定义了新命令作为对IEEE802.3bw规范的补充。新命令包括LPS、WUR和WUP,这三个命令在PHY芯片手册十分常见,故而理解这些命令是十分必要的。

Low Power Sleep(LPS)

低功耗睡眠(LPS)是某节点向链路伙伴指示睡眠请求的命令。当链路已建立起连接时,LPS由请求转换到睡眠状态的节点发送。

Wake-Up Request(WUR)

唤醒请求(WUR)是某节点向链路伙伴指示唤醒请求的命令。WUR可以由节点PHY或交换机PHY发送,并通过活动链路转发。

Wake-Up Pulse(WUP)

唤醒脉冲(WUP)也是对链路伙伴指示唤醒请求的命令。但与WUR不同,WUP通过非活动链路转发唤醒请求。

该规范定义的这三个命令,用于请求断电或通过活动链路和非活动链路发出唤醒信号

2睡眠与唤醒规范

如果暂时不需要节点的功能并为了降低功耗,可以进入睡眠模式。在睡眠模式下,除唤醒输入和活动检测外,所有内部功能都将关闭。

如果网络中有节点处于睡眠状态,当需要该节点工作时,通过唤醒并配合唤醒转发,可以灵活地使得一些节点或快速使全局节点退出睡眠模式。唤醒分为本地唤醒和远程唤醒,本地唤醒是通过唤醒引脚唤醒节点,而远程唤醒是通过双绞线远程唤醒节点。

网络管理可选择关闭网络所选节点并协调,这种可选择性链路关闭和快速全局唤醒的网络概念特别适用于汽车以太网。

2.1 睡眠转换过程规范

车载PHY的唤醒与睡眠的正确姿势

图1

首先假设链路已连接,此时链路双方均处于正常模式,则经历以下步骤:

如果一端PHY决定要进入睡眠模式,则PHY将先进入睡眠请求状态并将发送LPS命令;

接收到LPS命令的链路伙伴进入睡眠确认状态并启动一个“睡眠确认定时器”,如果没有设置睡眠拒绝且在该定时器超时前没有接受到数据消息,则链路伙伴也将进入睡眠请求状态并发送LPS命令;

此时PHY和链路伙伴检测到它已发送和接收LPS命令,则它转换到静音状态并最终进入睡眠模式;而如果PHY在“睡眠请求定时器”超时之前未完成握手,则PHY进入睡眠失败并返回正常模式。

2.2 唤醒及唤醒转发规范

对于唤醒及唤醒转发规范应注意以下几点:

唤醒的命令取决于链路的状态。如果链路已连接,则PHY将通过活动链路发送WUR命令;如果链路断开,PHY将发送WUP命令。如果连接尚未建立,例如因为连接建立仍在准备中,则首先建立连接,然后发送WUR命令。

多PHY设备(例如,交换机)实现了选择性唤醒转发机制。如果多PHY设备在一个端口上检测到WUR或WUP,则必须可以将请求转发到设备的其他PHY。通过断开链路(WUP)唤醒或通过连接链路(WUR)唤醒到另一个PHY。此外,还应该在唤醒事件时发生时产生指示标志。唤醒检测过程的实现留给PHY供应商,且不得超过2ms。

链路上任何传输的IDLE模式都将触发唤醒检测。如果在设计时不注意这一点,可能使得一些不期望的唤醒发生,故本文将在之后以TJA1101作为实例应用时说明。

车载PHY的唤醒与睡眠的正确姿势

图2

LP1、LP2、LP3可以是PHY或交换机,它们的端口P1和P2可以是MDI或唤醒I/O引脚。当LP的某一端口检测到WUP/WUR或本地唤醒时且转发使能,则在其端口通过唤醒I/O输出唤醒信号或发送WUP/WUR转发唤醒信息至另一端口,如LP1中的P2和P1的唤醒过程。唤醒转发功能使得网络具有了快速全局唤醒能力。

该规范规定PHY的唤醒过程应满足以下要求:

必须有专用I/O引脚唤醒,且引脚应支持唤醒转发输出和本地唤醒输入;

对于多PHY设计,可以连接这些引脚,且必须为高电平有效,但I/O电压留给设计者;

在本地唤醒引脚处识别唤醒请求的脉冲持续时间阈值应至少为10us,低于此值的脉冲将被忽略,必须保证检测到超过40us的脉冲持续时间,因此,本地唤醒输出脉冲必须具有至少40us的持续时间才能被可靠地检测到。

3TJA1101睡眠与唤醒应用实例

车载PHY的唤醒与睡眠的正确姿势

图3

它展示了TJA1101各种状态转换,转换条件限于篇幅有限不便解释未标出,它完全遵循了睡眠转换过程规范,即实现了图1所示的睡眠转换途径。

3.1TJA1101睡眠功能

TJA1101除了遵循睡眠转换过程规范外,还进行了扩展,其表现如下:

扩展了一些进入睡眠模式的其他方式,比如PHY睡眠时可以不通过握手确认;

链路伙伴可以拒绝接受LPS命令而不进入睡眠请求状态。

此外,TJA1101要成功进行睡眠转换还应注意以下问题:

在进入睡眠请求模式后,应停止链路数据传输和访问PHY寄存器操作,并保证没有唤醒事件发生(除非拒绝唤醒);

需要握手确认睡眠请求的,应使链路伙伴进行相应配置,例如禁止睡眠拒绝;

当PHY配置为SLAVE时且链路已连接时,若想主动进行睡眠转换,则还需要禁止远程唤醒,否则PHY无法进入睡眠模式,对于该点的解释将在下文介绍。

3.2TJA1101唤醒及唤醒转发TJA1101的唤醒及唤醒转发机制也遵循了该规范,但除了唤醒持续时间与唤醒检测时间可以配置等比较基础的扩展外而无明显的功能扩展,但受到该规范启发,在利用该功能时应注意以下问题:

相比TJA1101引入了待机(STANDBY)模式,但TJA1101被唤醒后进入待机模式而不会直接进入正常模式;

当PHY配置为MASTER时且处于正常模式时,若链路伙伴处于睡眠状态时,即便没有主动设置唤醒,链路伙伴也会退出睡眠模式,出现该现象的原因是因为PHY在这种情况下会发送IDLE使链路伙伴被唤醒,正如上文“唤醒及唤醒转发规范”第三点规定,如需避免该问题可使链路伙伴设置为禁止唤醒。

4结语

以上就是车载PHY的唤醒与睡眠规范概要及应用实例,尽管各半导体制造商设计的车载PHY在扩展功能上会有所差异,但万变不离其宗——规范,它们均会参照OPEN联盟制定的规范,所以掌握该规范会使得你可以更轻松利用各种车载PHY的唤醒和睡眠功能

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 以太网
    +关注

    关注

    40

    文章

    5334

    浏览量

    170704
  • 脉冲
    +关注

    关注

    20

    文章

    882

    浏览量

    95452

原文标题:你不知道的车载以太网睡眠唤醒姿势!

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一文搞懂Linux进程的睡眠唤醒

    用完时,此进程会进入就绪态,如果此进程正在执行一些IO操作(阻塞操作)会进入阻塞态,完成IO操作(阻塞结束)后又可进入就绪态,等待CPU的调度,当进程运行结束即进入结束态。 一、睡眠机制与唤醒机制
    发表于 11-04 15:15

    如何设置以及唤醒stm32 ucos下睡眠

    请教一下ucos进入睡眠模式,是不是应该先挂起所有任务然后进入睡眠,还是直接进入睡眠等待唤醒(等待唤醒任务是否还在执行调度)?
    发表于 07-29 00:42

    睡眠时的BOR/LPBOR无法唤醒

    。但我的意思是,如果棕色的持续时间很长,那么PIC通常会醒来吗?棕色是否会导致PIC无法正常唤醒或根本无法唤醒的情况?如果可能的话,那么我会在睡眠时也启用BOR。我可以在没有睡眠时启用
    发表于 10-12 14:46

    求助!关于arduino睡眠唤醒

    我用arduino读取数据写了一个睡眠 用看门狗定时唤醒读取数据但是唤醒后arduino的AI针脚不能读取求大佬答疑!!
    发表于 07-02 19:06

    imx8qm中的睡眠唤醒顺序是怎样的?

    )设置为唤醒模式。3.向SCFW发送命令到DDR(自刷新)和所有A53进入挂起模式。4.等待SCU唤醒a53核。5. 从 OCRAM 执行唤醒序列。我对睡眠
    发表于 04-20 07:44

    UJA1166ATK如何唤醒睡眠模式?

    WAKE 引脚进行本地唤醒。我将高到低信号应用于“唤醒”引脚。UJA1166ATK 仍处于睡眠模式。如果我尝试从 canbus 应用远程唤醒,我不知道 uja1166a 在正常或待机
    发表于 04-20 07:54

    SJA1110唤醒-睡眠功能故障怎么解决?

    我将 SJA1110 的 100base-t1 phys 之一的唤醒-睡眠功能选择配置为“ISO21111-7/OA TC-10 唤醒-睡眠功能”,将其他五个配置为“基本
    发表于 05-19 08:18

    从深度睡眠唤醒并不总是正确唤醒的原因?怎么解决?

    。 我正在做很多其他人似乎已经尝试过的事情(成功率有限),那就是制作一个电池供电的环境传感器,将温度和湿度数据发布到网络上。我们似乎都想做的是使用 DeepSleep 功能每隔几分钟唤醒一次采样、发布
    发表于 05-30 07:42

    渐响式睡眠唤醒器电路图

    渐响式睡眠唤醒器电路图
    发表于 05-25 13:43 1484次阅读
    渐响式<b class='flag-5'>睡眠</b><b class='flag-5'>唤醒</b>器电路图

    Linux进程的睡眠唤醒

    设想有两个进程 A 和 B,A 进程正在处理一个链表,它需要检查这个链表是否为空,如果不空就对链表里面的数据进行一些操作,同时 B 进程也在往这个链表添加节点。当这个链表是空的时候,由于无数据可操作,这时 A 进程就进入睡眠,当 B 进程向链表里面添加了节点之后它就唤醒
    的头像 发表于 03-20 14:34 4321次阅读

    安全充电的正确姿势是怎样的

    今天咱们就来聊聊第二步——论安全充电的正确姿势
    的头像 发表于 05-20 14:27 3151次阅读

    GD32低功耗:深度睡眠唤醒系统时钟变慢问题

    一、问题1、进入深度睡眠后,通过外部中断唤醒,发现系统时钟变慢。2、进入休眠模式,通过任何中断唤醒,系统时钟正常。二、原因1、从电源管理章节可知,睡眠模式下使用没有什么需要需要注意的,
    发表于 12-02 15:06 21次下载
    GD32低功耗:深度<b class='flag-5'>睡眠</b><b class='flag-5'>唤醒</b>系统时钟变慢问题

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)唤醒实现及优化

    STM32 低功耗睡眠模式(SLEEP)事件(EVENT)唤醒实现及优化1. 介绍STM32具有多种低功耗模式,当前以STM32L4系列的低功耗模式最为丰富,此处基于STM32L476
    发表于 12-31 19:08 34次下载
    STM32 低功耗<b class='flag-5'>睡眠</b>模式(SLEEP)事件(EVENT)<b class='flag-5'>唤醒</b>实现及优化

    AN010 从深度睡眠模式2唤醒并恢复

    AN010 从深度睡眠模式2唤醒并恢复
    发表于 02-27 18:18 1次下载
    AN010 从深度<b class='flag-5'>睡眠</b>模式2<b class='flag-5'>唤醒</b>并恢复

    高效稳定管理电源的正确姿势”!

    高效稳定管理电源的正确姿势”!
    的头像 发表于 11-23 09:04 376次阅读
    高效稳定管理电源的<b class='flag-5'>正确</b>“<b class='flag-5'>姿势</b>”!