你好,
我目前使用DA1458,我已经修改了user_sensor_reports.h,以添加一个额外的数据字段(uint32_t, currTime)从HW获得当前时间值。我在user_sensor_reports.c上调用lld_evt_time_get(),如下所示:
pdrc = (data_report_acc_gyr_mag *)请求- >报告[0];
pdrc - > ucReportId = rep_id;
pdrc - > ucSensorState = 2;//2准备好,3没有数据
pdrc - > ucSensorEvent = 3;
开关(sensor_type) {
案例SENSOR_TYPE_ACCELEROMETER:
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的差异,但我得到的值波动很大,在10到50 ms之间。
考虑到采集的时间,对于采样频率为100Hz的样本,每个采集的样本数量与预期的一样,但是时间戳有一点偏差。附件中有一个单独获取的时间戳差异的文件。
有什么我能做的吗?lld_evt_time_get()有任何已知的问题吗?我的方法有问题吗?
提前感谢您的帮助!
嗨gomezago,
让我查一下,我会尽快给你答复。
谢谢,PM_Dialog
嗨PM_Dialog,
你有这方面的消息吗?
所有最好的!
嗨gomezago
我为耽搁道歉。让我与您分享一些关于lld_evt_time_get()的提示。然而,由于您已经修改了物联网源代码,这取决于您的应用程序,由您决定。
lld_evt_time_get()基于625us基准时间计数器度量时间,并返回BLE计时器的值。这个计数器没有稳定的时钟输入,但会根据设备是处于睡眠状态还是处于清醒状态而变化,并基于XTAL16和XTAL32测量从上电开始经过的时间。所以的时间是衡量从XTAL16当睡着的时间消耗在睡眠中通过XTAL32得到补偿和测量应用于定时器装置是醒着的,所以引入了一个错误的时间测量是不固定的。
此外,还可以使用user_add_sensor_report_acc_gyro_mag()。该功能将传感器数据以通知(报告)的形式发送到中心设备。传感器数据通知称为报告。这个函数为加速度计,陀螺仪或磁力计形成一个报告。形成一个DWS_VAL_NTF_REQ消息并发送给DWS概要任务。
谢谢,PM_Dialog