JL JieLi AC696N Development Board Tutorial – Low Power Basics: Reset and Wake-up Source Configuration for the AC6966B Chip

 

文章内容

Introduction

In battery-powered products, poor low-power performance renders all other features useless. The JL JieLi AC696N chip is widely used in Bluetooth headphone and speaker solutions—its power control fundamentals are solid. However, if you can't clearly identify the reset cause or configure the wake-up I/O correctly, you'll still encounter unexplained reboots or devices that won't wake up from sleep. When I was debugging low power on the AC696N development board, I found that while reset source printing and I/O wake-up configuration aren't complicated, the details are easy to miss. Here's a consolidated guide to the common configurations, so you can reference them directly when troubleshooting.

文章内容

I. How to Check the Reset Cause?

Call the power_reset_source_dump() function, and the serial port will print the last reset cause, for example:

VDDIO POR: Power-on reset

WDT: Watchdog timer reset

SOFT RESET: Software reset

This is extremely useful for debugging unexpected resets.

Wake-up Source Retrieval

• Add the following interface for BR25 (AC696, AC6082):

up_pnd = 0; 
u8 get_wakeup_pnd(void)
{
    return wkup_pnd;
}
// Return value: 0x00 | BIT(x) // x = wake-up I/O pin number

• Meaning of reset sources printed by the SDK:

u8 power_reset_source_dump(void);

文章内容

II. Configuring Multi-Channel I/O Wake-up

The AC696N supports waking the system from low-power states via edge detection (rising/falling) on multiple I/O pins.

Configuration Steps:

1.In the board-level file, define a port_wakeup structure variable.

文章内容

2. Configure the structure members:

• pullup_down_enable: Enable internal pull-up/down

• edge: Wake-up edge (FALLING_EDGE / RISING_EDGE)

• iomap: Specify the wake-up I/O, e.g., IO_PORTA_06

3. Add these structure pointers to the wakeup_param structure array.

文章内容

Example Code Snippet:

struct port_wakeup port0 = {
    .pullup_down_enable = ENABLE,
    .edge = FALLING_EDGE, // wake on falling edge
    .iomap = IO_PORTA_06,
};
// ... define port1, port2, etc.
const struct wakeup_param wk_param = {
    .port[1] = &port0,
    .port[2] = &port1,
    // ...
};

Summary

The reset cause printing feature is something I recommend adding during the product debugging phase. When the device encounters an unexpected reset, checking the serial log immediately tells you whether it was a watchdog reset or an unstable power supply—no guesswork required. For wake-up configuration, start by getting a single I/O wake-up working on the AC696N development board, confirm that the edge and pull-up/down settings are effective, then add multi-channel wake-up.

One additional reminder: some I/Os have alternate functions (like UART, ADC) in low-power mode by default. If you want to use them for wake-up, remember to disable the alternate function first—otherwise, the device may fail to wake up or exhibit excessive leakage current. Once you've gone through these basic configurations, you'll have a solid foundation for low-power product development.

评论

此博客中的热门博文

Jieli Bluetooth Smart Speaker Development: Common Issues with AC696N SoCs

KT148A Voice Chip: A Powerful Tool to Enhance the User Experience of Smart Soymilk Makers