DA14531宏家HJ-531imf
唐山宏佳电子科技有限公司与Dialog合作开发了一款超小型、超低功耗的蓝牙5.1 SIP模块SmartBond DA14531小它是世界上最小、最节能的蓝牙5.1 SoC。HJ-531IMF内置高性能天线,尺寸为5 x 4.75 x 1.3mm,采用LGA25封装。
特性
尺寸:5 x 4.75 x 1.3毫米
包:LGA25
GPIOs: 12
电源电压:1.1 v - 3.6 v
马TX < 3.5;RX < 2.2 mA
内置高性能天线(也可以使用外部天线)
车载天线范围:5-10m;外置天线范围:40-80m
支持BLE 5.1,支持微信和用户开发
内置1MB闪存,支持OTA,存储用户数据
工作温度:-40℃~ +85℃
亚博国际官网平台网址
微小的医学应用亚博国际官网平台网址
信标
智能玩具
智能锁
遥控器
工业智能设备
订购信息
样品可用。请与当地的Dialog销售代表联系。
DA14530和DA14531.
1周前
深度睡眠模式下的唤醒功能。
张贴了Bas32180点 4回复我的目标是在我的源代码中实现深度睡眠模式的自定义时间。
在做同样的事情之前,我首先尝试实现ble_button_wakeup项目;使用RTC使能中断。
相同的目前状况如下。
1.)流量是启用RTC中断,定义中断处理程序,在中断处理程序调用时唤醒设备
2.)完成启用RTC中断,能够使用中断处理程序接收中断并调用唤醒功能。但该设备没有醒来
3.)基本上,在白蚁,我能够看到计时器运行10秒,然后睡眠模式ON消息,但设备不会唤醒基于RTC使能中断。
我已经附上了代码的重要部分供评估,请告诉我如果我错过了一些东西,请告诉我。
代码部分:对于RTC使能中断
void initialize_alarm(rtc_time_t时间)
{
rtc_time_t alarm_time;
armar_time =时间;
alarm_time。秒+ = RTC_TIMEOUT;
rtc_set_alarm (&alarm_time NULL, RTC_ALARM_EN_SEC);
//清除挂起的中断
rtc_get_event_flags ();
rtc_register_intr (rtc_interrupt_hdlr RTC_INTR_ALRM);
}
代码部分:中断处理程序
静态void rtc_interrupt_hdlr(uint8_t事件)
{
/ /存根函数
rtc_wake_flag = 1;
}
if(rtc_wake_flag) //休眠模式10s后关闭
{
printf_string(UART2,“睡眠模式关闭\ n”);
sprintf(时间,“\ nT: % d % d: % d r \ n \”,mytime.hour, mytime.minute, mytime.sec);
printf_string (UART2、时间);
rtc_wake_flag = 0;
arch_set_sleep_mode (ARCH_SLEEP_OFF);//关闭睡眠模式
arch_ble_force_wakeup ();//强制BLE唤醒
arch_ble_ext_wakeup_off ();//关闭永久休眠标志
app_easy_wakeup ();//一旦BLE被唤醒,就调用相应的动作
user_app_init();
}
您的投入和方向,效果有助于迅速原型设计。期待您的宝贵建议
1周前
嗨Bas321,
让我们在你的新论坛继续讨论:
//www.xmece.com/support-posts/wake-function-during..。
谢谢,PM_Dialog
5天前
亲爱的团队
谢谢你的回复,
(1) CFG_DEEP_SLEEP_WAKEUP_RTC
在user_proxr.h中,我找到了这个函数。
但是,具体应该在哪里定义它(在代理报告程序项目的哪一行和哪个文件中)
(2)在configure_rtc_wakeup ()
如果我们希望系统深入入睡1小时,那么就足以提及
alarm_time。秒+ = 3600
(3)下面是app_advertise_complete()对应的函数。
你能告诉我如何确保PD_TIM是打开的吗
void app_advertise_complete(const uint8_t状态)
{
if (status == GAP_ERR_NO_ERROR) || (status == GAP_ERR_CANCELED)
{
#if(ble_prox_reporter)
app_proxr_alert_stop();
#万一
}
if (status == GAP_ERR_CANCELED) / /取消取消
{
arch_ble_ext_wakeup_on ();
#如果定义(__DA14531__)
/ /配置PD_TIM
#f定义(cfg_ext_sleep_wakeup_rtc)||定义(cfg_ext_sleep_wakeup_timer1)||\
定义(CFG_DEEP_SLEEP_WAKEUP_RTC) || defined (CFG_DEEP_SLEEP_WAKEUP_TIMER1)
//确保PD_TIM已打开
setbits16(pmu_ctrl_reg,tim_sleep,0);
//请等待PD_TIM文件打开
while (GetWord16(SYS_STAT_REG) & TIM_IS_UP) !
#别的
//关闭pd_tim.
setBits16(PMU_CTRL_REG,TIM_SLEEP,1);
//等待PD_TIM关闭
while (GetWord16(SYS_STAT_REG) & TIM_IS_DOWN) !
#万一
#万一
注意:通过RTC配置深度睡眠模式是否有其他指令?
谢谢你!
4天前
嗨Bas321,
- 这是正确的——应该定义CFG_DEEP_SLEEP_WAKEUP_RTC宏,以便通过RTC从深度睡眠中唤醒。
- 请查看rtc_time_t结构。1小时时,可使用alarm_time。小时+ = 1。
- 什么时候需要打开PD_TIM ?正如您在app_advertise_complete()回调中所看到的,代码会一直等待PD_TIM被打开。
while (GetWord16(SYS_STAT_REG) & TIM_IS_UP) !
如果未打开PD_TIM,则代码将堆叠到while()循环中。
关于深度睡眠并通过RTC唤醒,应遵循以下教程:
http://lpccs-docs.dialog-semiconductor.com/DA14531_Sleep_Mode/deepsleep_config.html
谢谢,PM_Dialog
1周前
嗨Bas321,
谢谢你发布了一个新的论坛帖子。我已经在下面的论坛门票上回复了你,因为你已经添加了评论:
https://www.dialog-seminile.com/support-posts/how -keep-rtc-working-deep-sleep-mode.
请查收我的回复:
建议看看SDK的PXP_Reporter示例。
当CFG_EXT_SLEEP_WAKEUP_RTC或CFG_DEEP_SLEEP_WAKEUP_RTC时,DA14531从扩展睡眠或深度睡眠时唤醒。
configure_rtc_wakeup()将RTC配置为唤醒源,这样芯片在10秒(alarm_time)后醒来。秒+ = 10)。
在睡觉之前,您应该确保PD_TIM打开。请检查app_advertise_complete()。
一旦设备接受RTC中断,rtc_interrupt_hlr()就会被执行,以便从睡眠中恢复和唤醒。rtc_interrupt_hlr()应该注册在rtc_register_intr()中
注意:让我们继续在这个论坛线程上讨论。
谢谢,PM_Dialog