TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310时间同步的误差

用的是CC1310-LaunchPad开发板,测试程序是从rf_EchoTx和rf_EchoRx两个有系统的程序改的,发送间隔为30ms,关掉了电源策略,排除了其自动睡眠的这段不可控的空窗时期。

测试过程:抓取从发送板开始发送到接收板接收到进回调的时间,将此时间进行历史比较,将误差通过串口打印到电脑屏幕上,现在捕捉出来的误差峰值高低相差13-15us左右。问一下有没有可能将此误差降到5us以下?

Viki Shi:

建议参考一下下面两个例程

路径: C:\ti\simplelink_cc13x0_sdk_4_10_00_10\examples\rtos\CC1310_LAUNCHXL\drivers

时间同步的原理可以参考这个文档:http://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_2_40_00_20/docs/proprietary-rf/proprietary-rf-users-guide/proprietary-rf/time-synchronization.html

jay lei:

回复 Viki Shi:

你好,现在我这边主要的问题是从发送到接收的时间历史比较是有误差的,其误差在10us以上,这个时候即使使用这个例程里面的时间同步也还是有误差存在的。理论上其发送到接收是不应该有这么多误差的,怎么样才能控制在5us以内,这样的话同步的时间误差范围才被允许。

Viki Shi:

回复 jay lei:

能否把你的测试数据发一下

jay lei:

回复 Viki Shi:

 如图。每3秒打印一次,也就是每打印一次都收发100包数据。从左往右,单位us,第一个数据是每个第100包从发送到接收的时间,第二个数据是从发送到接收的时间历史上(包括未显示出来的99包)的最小时间,第三个是历史上最大的时间,可以看到这个时候最小的866us,最大的887us,中间相差了21us,也就是峰值为±10us左右。

jay lei:

回复 Viki Shi:

Viki Shi:

回复 jay lei:

每一列数字代表啥能说明一下吗?误差应该是TI RTOS的SWI造成的,你可以提高RF driver的优先级看看,不过效果可能不是很明显。
TX/RX的时间戳是否一致?

jay lei:

回复 Viki Shi:

第一次图没有发上去,图上面的回复就是每一列的解释。现在我已经改变策略了,就怕是任务调度使其出现时间差,所以现在是用的裸机跑的,一个板子发送一个板子接收,在接收回调中读取RF内核也就是那个M0内核的时钟,让这次接收时刻的时间戳和上次接收时刻的时间戳做差,然后把这个差值进行历史比较。所得到的的结果是这个差值在30ms上下波动,发送板正好是30ms发送一次,这也表明发送和接收的tick是同步的。同样获取历史最大值和最小值,得到的峰值上下差11us-12us。还是不符合满足应用要求的5us

Viki Shi:

回复 jay lei:

请问你是如何获取的时间戳?

jay lei:

回复 Viki Shi:

用RF_getCurrentTime()这个函数获取RF内核的定时器的时间。

jay lei:

回复 Viki Shi:

发送的时候也是通过这个函数获取的初始时间给TX.startTime,然后每次都给这个startTime加上30ms的时间,到时间后由RF内核自动触发发送机制

赞(0)
未经允许不得转载:TI中文支持网 » CC1310时间同步的误差
分享到: 更多 (0)