你好,
我目前使用的DA1458和我已经修改user_sensor_reporting .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;
Switch (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到50ms之间波动很大。
考虑到采集的时间,采样频率为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