RTC时间不准确
DA1469x
2个月前
RTC时间不准确
发布的jagath5275点 7回复你好
我使用社交距离标签的例子与wira sdk。
我的腕带使用的是Da14695 MCU,它有LCD显示时间。
手机应用会发送HH:MM:SS和day:mon:year的时间,但是2天后的时间会比实际时间晚2分钟。
我用深度睡眠来减少当前的消耗。
谢谢你!
Jagath
2个月前
你好
这是rtc开始
我已经注释了hw_rtc_set_time_clndr(),以避免设备从深度睡眠中醒来时重新初始化时间。
静态int LOG_InitTimestamp(空白)
{
int状态;
/*如果这是第一次设备供电*/
if (TimestampMagicValue != LOG_TIMESTAMP_INIT_MAGIC_VALUE) {
//状态= hw_rtc_set_time_clndr(&time_cfg, &calendar_cfg);
// if (Status != HW_RTC_VALID_ENTRY) {//!任何无效的条目都将导致失败
/ / ASSERT_WARNING (0);
/ /返回LOG_STATUS_INVALID_TIMESTAMP_DEFAULT_VALUES;
/ /}
/*
*指定RTC初始化已经完成
*(在设备通电时有效)。
*
* \注意另外,魔术值可以存储在闪存中使用
*因此设备不会在电源故障后重新初始化。
*/
TimestampMagicValue = LOG_TIMESTAMP_INIT_MAGIC_VALUE;
}
hw_rtc_clock_enable ();/ / !确保时钟门控被激活
hw_rtc_start ();/ / !确保时间和日历计时器都被激活
_VERBOSE_ (VERBOSE_STATE % s, __func__)
返回LOG_STATUS_OK;
}
这个功能接收来自移动应用程序的时间和日期
Static cts_set_time_cb(ble_service_t *svc, uint16_t conn_idx, const cts_current_time_t *time)
{
int状态;
/*检查通过的时间是否有效*/
如果(! cts_is_current_time_valid(时间)){
/* if not return wit error that time set was ignored */
cts_set_time_cfm (svc conn_idx CTS_ERROR_DATA_FIELD_IGNORED);
返回;
}
/*复制CTS时间/日期到RTC时间/日期*/
calendar_cfg。年=时间- > date_time.year;
calendar_cfg。月=时间- > date_time.month;
calendar_cfg。mday =时间- > date_time.day;
time_cfg。小时=时间- > date_time.hours;
time_cfg。分钟=时间- > date_time.minutes;
time_cfg。秒=时间- > date_time.seconds;
calendar_cfg。wday =时间- > day_of_week;
/*设置网元时间/日期为RTC */
状态= hw_rtc_set_time_clndr(&time_cfg, &calendar_cfg);
if (status != HW_RTC_VALID_ENTRY) {
/*如果检测到任何无效的条目拒绝时间更新*/
cts_set_time_cfm (svc conn_idx CTS_ERROR_DATA_FIELD_IGNORED);
}
/* CTS服务设置时间*/
cts_set_time_cfm (svc conn_idx ATT_ERROR_OK);
}
深度睡眠
我使用深度睡眠来让设备在不使用时进入睡眠状态
如果我使用深度睡眠,对rtc有什么效果
谢谢你!
Jagath
2个月前
嗨jagath52,
你正在使用的低功率时钟(LPC)是哪个?是内部的RCX,还是外部的XTAL?
但是两天后,时间会比实际时间晚两分钟
所以,DA1469x被配置为深度睡眠2天,当它醒来的时间是2分钟以下?
谢谢,PM_Dialog
2个月前
你好PM_Dialog
1.低功耗时钟是xtal 32K
#define dg_configUSE_LP_CLK (LP_CLK_32768)
2.设备会随机进入深度睡眠
a.基于gpio press
b.基于活动
3.深度睡眠可能在5分钟,1小时,甚至1天之后。
4.设备深度睡眠时间可达5分钟、1小时或超过1天
谢谢你!
Jagath
2个月前
嗨jagath52,
谢谢你的澄清。请将设备置于深度睡眠模式,约1小时后唤醒。你能在第一次唤醒时检测到RTC漂移吗?很抱歉问你这个问题,但我想知道是哪里出了问题。
谢谢,PM_Dialog
2个月前
嗨jagath52,
谢谢你的问题。您能分享您在应用程序代码中使用的RTC配置吗?
这只有在DA14695处于深度睡眠状态时才会被复制?
谢谢,PM_Dialog