@beijixing3329 现在休眠底电流是多少?芯片的
felix.yang 发布的帖子
-
RE: 8016HD,想实现设备连接态还能发送广播。现在的问题是一个唤醒周期是否可以同时完成这两个事件发布在 FR801xH
@beijixing3329 唤醒次数这个改不了,而且广播间隔不一定是按照设置的进行发送,也会+-一个随机值,这个值不会大于广播间隔
-
RE: 进入休眠后无法唤醒发布在 FR801xH
@lys Sleep模式:
sleep模式,芯片随时可以起来工作,唤醒不会复位
一般情况下此模式是考虑功耗的情况下,使用最多的一种模式。开启sleep模式不会影响广播,连接等BLE的工作。
用户可以在应用层决定是否打开此模式,但是打开sleep后芯片并不会立刻进入休眠状态,而是在任务处理完后才会自动进入休眠状态。也就是说进入或者不进入休眠实际上是协议栈底层自动决定的,当有任务(比如广播,软件定时器,rtc)需要执行就起来工作,没有任务执行就进入睡眠状态。
如果想要芯片较长时间在休眠状态,只需要把自己的应用层的任务都关闭,比如关闭广播,软件定时器等。
代码上调用system_sleep_enable打开此模式。
芯片在睡眠前会先进入user_entry_before_sleep_imp函数(不同系列芯片接口名称略有差异,此处以FR801x举例),然后睡眠
芯片在唤醒后会先进入user_entry_after_sleep_imp函数(不同系列芯片接口名称略有差异,此处以FR801x举例)。如果我们唤醒后需要操作cpu控制的外设(比如iic),需要在使用前初始化,就可以在此接口进行外设初始化
代码上调用system_sleep_disable关闭此模式
休眠状态CPU掉电,PMU不掉电,所以唤醒后需要重新初始化CPU的外设,休眠状态因为CPU掉电,所以也无法进行jlink烧录调试 -
RE: FR8003A Reset Cause发布在 FR800x
@patrick_salvino Hi Patrick, unfortunately, there is no such register on the FR8003A. The chip does not provide any API or CPU reset status register that would allow you to read the cause of the reset upon device power-up.
-
RE: FR8003A Unwanted Wake-up at 64 seconds发布在 FR800x
@patrick_salvino Wake up once every 64 s (this is the maximum duration for which the chip can remain continuously asleep each time; if an active wake-up occurs within this period, such as from a timer, advertising, connection, etc., this wake-up will not be triggered).
-
RE: FR8028D怎么读 128bit的 uuid呢?发布在 FR802x
@黄书剑 void system_get_unique_ID(uint8_t *buffer, uint8_t *length);
-
RE: 请问下进入休眠后还能控制io输出吗?发布在 FR801xH
@xls
可以看下这个,应该有助于您的理解,您现在的理解应该是有点问题,这两个API只是开启和关闭休眠模式,而不是进入退出休眠,具体什么时候进入退出休眠由协议栈判断,退出休眠后是需要重新初始化的 -
RE: 请问下进入休眠后还能控制io输出吗?发布在 FR801xH
@xls 休眠后PMU还在正常工作,可以将GPIO配到PMU上来控制:pmu_set_pin_mux (GPIO_PORT_ C, GPIO_PIN_4, PMU_PIN_FUNC_GPIO) ;pmu set pin to PMU (GPIO PORT C, GPIO PIN 4);pmu set pin pull (GPIO PORT C, GPIO PIN 4, GPIo PULL NONE) ;pmu_set_pin_dir (GPIO_PORT_C, GPIO_PIN_4, GPIO_DIR_IN) ;
-
RE: FR8016HA LED1/LED2脚可以做PWM功能吗?发布在 FR801xH
@summer #include "driver_pmu.h"
#include "driver_pmu_pwm.h"
#include "driver_system.h"void led2_pwm_example(void)
{
pmu_pwm_init();pmu_set_led2_as_pwm(); // 配置 LED2 为 PMU PWM 模式(固定为 PWM2) // 获取 RC 时钟频率(约 62.5KHz) uint32_t rc_freq = pmu_get_rc_clk(false); // 目标:2 Hz,占空比 50% #define TARGET_FREQ 2 // 2 Hz,闪烁可见 #define DUTY_PERCENT 50 // 每个计数单位 = 2 / rc_freq 秒 uint32_t total = (rc_freq / 2) / TARGET_FREQ; uint16_t high = total * DUTY_PERCENT / 100; uint16_t low = total - high; // 设置 PWM2 参数(用 PA2 作为代理,因为 (0*8+2)%4 = 2) pmu_pwm_set_param(GPIO_PORT_A, GPIO_BIT_2, high, low); // 停止并复位计数器 pmu_pwm_stop(GPIO_PORT_A, GPIO_BIT_2); // 启动连续输出,极性不反转 pmu_pwm_start(GPIO_PORT_A, GPIO_BIT_2, true, false);}
看一下这个demo