主题中讨论的其他器件: EK-TM4C1294XL、 CC3100、 TPS63020、 BQ25892
工具/软件:TI-RTOS
大家好、
我希望你能做得好。
我正在一个项目中进行能源优化、我使用不同的技术来充分利用仪器电池的运行时间。 我在监控 MCU 电流消耗的同时、尝试使用外部25MHz 晶体振荡器测试了介于30MHz 和120MHz 之间的不同 MCU 时钟频率。 在较低频率下、MCU 电流消耗会相当下降。 此外、我还在尝试通过检查以太网电缆连接来节省更多能源、以供 Web 服务器使用;如果电缆未连接、我将关闭以太网 PHY。 我必须在此提及的是、我使用的是 TM4C 集成 PHY。 我的代码每5秒为 PHY 上电并检查电缆是否已连接。 如果是、它不会关闭 PHY。 但是、这里有一个限制条件、我要观察到。 PHY 上电后、在30MHz 和120MHz 频率下、检测到连接的电缆需要大约1600毫秒。 这种电缆检测似乎与 MCU 时钟频率无关。 由于 PHY 处于通电状态时的延迟为1600毫秒、因此消耗能量图会上升。 下面给出了我用于此目的的代码。 请查看我以及下面列出的问题。 提前感谢与此帖子互动的所有人。
//获取 EMAC PHY 断电状态
emacPhyBmcr = EMACPHYREAD (EMAC0_BASE、0U、EPHY_BMCR);
//如果 EMAC PHY 断电
if (emacPhyBmcr 和 EPHY_BMCR_PWRDWN)
{
//打开电源
EMAPPHYPowerOn (EMAC0_BASE、0U);
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_4、GPIO_PIN_4);
SysCtlDelay(40000u*emacDelay);
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_4、0);
}
//等待 EMAC PHY 上电
while (EMAC0_BASE、0U、EPHY_BMCR)& EPHY_BMCR_PWRDWN)
{
}
//获取 EMAC 链路状态
emacIsLinkUp = EMACSnow_isLinkUp();
//检查电缆是否已连接
if (emacIsLinkUp == false)
{
//打开电源
EMAPPHYPowerOff (EMAC0_BASE、0U);
}
我还必须提及的是、我将 TI RTOS NDK 用于以太网客户端。 在上面给出的代码中、我将切换 PQ4以测量 PHY 从断电状态通电后检测到连接电缆的延迟。 请查看下面列出的问题。
(i)是否有任何可能遗漏的步骤可消除电缆检测的1600ms 延迟?
(ii)由于这个上电关闭周期、以太网 PHY 寄存器配置是否会丢失?
(iii)如果有人从事 TM4C 能源优化工作、您能分享您的经验吗?
谢谢、
Muhammad Shuaib.