你好,
我目前正在使用da1458,我已经修改了user_sensor_reports.h以添加额外的数据字段(UINT32_T,CURRIME)以获取HW的当前时间值。而且我在user_sensor_reports.cn上调用lld_evt_time_get.c,如下所示:
pdrc =(data_report_acc_gyr_mag *)&req->报告[0];
pdrc-> ucreportid = rep_id;
pdrc-> ucsensorstate = 2;// 2就绪,3无数据
pdrc-> ucsensorevent = 3;
切换(Sensor_type){
案例SENSOR_TYPE_ACCOLEROMER:
pdrc-> val_x = sensor_data.accel_xyz.x;
pdrc-> val_y = sensor_data.accel_xyz.y;
pdrc-> val_z = sensor_data.accel_xyz.z
pdrc-> curtime = lld_evt_time_get();
ble_attribute_idx(dws_idx_accel_val);
休息;
....
我正在进行这一点来将所获取的数据同义100Hz的获取,其中来自连接到应用的其他传感器的数据。我已经修改了应用程序只使用DA1458,我在时间戳上看到了一个奇怪的行为,因为我的采样频率是100Hz,我期望在大约10ms的两个连续时间戳之间具有近似的差异,但我得到了波动很多,Beteween 10和50毫秒的值。
考虑到采集的时间,每次获取的样本数量为100Hz的样本频率,但时间戳有点截止。附加存在时间戳差异的文件差异。
有什么我能做些什么来解决它吗?lld_evt_time_get()是否有任何已知问题?我的方法是什么问题吗?
先谢谢您的帮助!
嗨戈麦佐戈,
让我检查一下,我会尽快回复你。
谢谢,PM_DIALOG.
嗨pm_dialog,
你有什么新闻吗?
祝一切顺利!
嗨戈麦佐戈
我为延迟道歉。让我分享关于LLD_evt_time_get()的一些提示。但是,由于您已修改IOT源代码,这取决于您的应用程序,这取决于您。
LLD_EVT_TIME_GET()根据625US基础时间计数器测量时间并返回BLE定时器的值。该计数器没有稳定的时钟输入,但根据设备是否正在睡觉而变化,或者它是清醒的,并且根据XTAL16和XTAL32从上电传出时的时间。因此,测量的时间来自xtal16,并且当睡眠期间经过的时间通过XTAL32测量并在设备唤醒时得到补偿并应用于定时器,因此在测量的时间内引入错误不固定。
此外,您可以使用user_add_sensor_report_acc_gyro_mag()。此功能以通知(报告)的形式发送传感器数据到中央设备。传感器数据通知称为报告。此功能形成加速度计,陀螺仪或磁力计的报告。形成DWS_VAL_NTF_REQ消息并发送到DWS配置文件任务。
谢谢,PM_DIALOG.