简介

做低功耗产品,最头疼的就是两个问题:一是设备无缘无故重启了,找不到原因;二是睡眠之后唤不醒,或者误唤醒导致功耗居高不下。

JL杰理AC696N这个系列的芯片在蓝牙耳机、音箱、IoT设备里用得很多,它的复位和唤醒机制其实挺灵活的,但官方文档分散在各个模块里,新手容易漏配置。最近在AC696N开发板上调试低功耗方案,把复位源和唤醒IO这块理了一下,整理出来方便后面排查问题用。


芯片复位与唤醒源深度解析

在低功耗产品设计中,复位与唤醒机制至关重要。JL杰理AC696N芯片提供了丰富的复位源和灵活的唤醒IO配置。

  • 唤醒源获取
  • BR25(AC696,AC6082)接口添加
  • u8 wkup_pnd = 0;
  • u8 get_wakeup_pnd(void)
  • {
  •     return wkup_pnd;
  • }
  • //返回值: 0x00 | BIT(x)//x唤醒的IO口编号

  • SDK打印的复位源含义

AC695X 为例:

u8 power_reset_source_dump(void);

通过power_reset_source_dump()函数可以打印复位原因,包括:

  • VDDIO POR(上电复位)
  • VDDIO LVD(电压低于设定值复位)
  • WDT(看门狗复位)
  • VCM(VCOM复位)
  • PPINR(长按Reset IO复位)
  • SYS RESET(主系统复位P33)
  • SOFT RESET(软件复位)

这些信息对于调试异常重启问题极具价值。

打印测试:

唤醒功能方面,AC696N支持注册多个IO口作为唤醒源。

开发者需要在板级文件中配置port_wakeup结构体,设置内部上下拉使能、唤醒边沿(上升沿/下降沿)以及具体的唤醒IO映射(如IO_PORTA_06)。

通过wakeup_param结构体将多个唤醒端口、sub唤醒和charge唤醒统一管理,实现灵活的低功耗唤醒策略。

唤醒IO设置

  • 注册多个IO口唤醒

AC696N 注册多IO口做唤醒功能(BR23,BR25通用)


总结

复位原因打印这个功能挺实用的,设备异常重启的时候,上电第一时间调一下power_reset_source_dump(),基本能定位是看门狗咬的、电压不稳掉的,还是软件主动复位。唤醒配置这块,建议先在AC696N开发板上把单IO唤醒调通,确认边沿和上下拉配置没问题,再往里加多路唤醒。

另外注意一下,有些IO在睡眠状态下默认是复用的(比如UART、ADC),如果要当唤醒IO用,得先把复用功能关掉,否则可能唤不醒或者电流偏大。这些坑踩过一次之后,后面做低功耗项目就顺多了。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐