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.
评论
发表评论