你好,
580年我的应用程序有两个,一个主人和奴隶我想要两个有时间同步和时间精度为0.01年代,最好是0.001秒。
假设同步要求仅适用于连接状态,你应该能够依靠连接事件的时机结束在rwble(这个事件可以被探测到。c -寻找BLE_EVT_END文件)。
/ MHv
谢谢MT_dialog,
这些天我研究你的建议,我想主人和奴隶BLE_EVT_END同步发生,我可以得到BLE_EVT_END后立即发生的时间,然后我可以有时间同步。尽管BLE_EVT_END频繁发生,我找不到相应的来自双方的事件,如何解决这个问题?
非常感谢。
BLE_EVT_END事件在祝福主人和奴隶应该尽可能接近syncronous。如果你想限制同步发生的时候,你可以实现一个关贸总协定特点然后驱动逻辑同步写在下列事件的结束。您可以添加rwble同步代码。c事件被记录之后(这一行记录的事件:arch_rwble_last_event = BLE_EVT_END;——请注意,您会发现这条线在rwble.c两次。哪一个执行的实际上取决于你的力量优化设置)。之间可能存在一个固定的时间延迟事件引发中央和事件触发的边缘,但是它很小,常数,因此可以补偿。
使用BLE_EVT_END的优点之一是,你会有很多时间来管理同步算法。没有高度重视终端请求事件需要处理,直到下一个连接。
您可以使用函数uint32_t lld_evt_time_get (void) 625年增量得到当前时间。如果你需要比这更好的时机,你将不得不禁用睡眠和使用systick定时器也可以提供低至1我们的准确性。
请让我们知道如果你设法实现建议的解决方案。我想象这同步方案将会很强大的结合超声测距/远程应用程序。如果实施得当,你可能得到英寸或者厘米类型精度。
亲爱的MT_dialog,
非常感谢你快速的反应。
我的问题围绕着如何“识别”相同的相应BLE_EVT_END连接从主人和奴隶,因为事件一个接一个的非常快,我不能区分不同BLE_EVT_END事件。
应用程序远程应用程序,但不是超声测距。0.01秒时间同步精度可以满足我的应用程序的要求,更好的同步是首选的,因为我不需要重置同步由于时间漂移短时间使用,我将实现建议的解决方案,但现在我专注于如何“识别”对应的BLE_EVT_END双方。
再次感谢。
写作特点,了解连接间隔应该允许你标记一个连接。下面的连接上传输的数据会发生事件,所以将在服务器端接收(可能有一个偏移量,但这抵消应该不变)。客户端将收到一个确认数据已经传输时,服务器将接收表明数据已经到来。
您好!我的问题是两个580主从时间同步的问题,如何才能确定主从的BLE_EVT_END为相对应的事件呢?因为BLE_EVT_END是在不停快速地重复出现,我不知道如何确定主从对应的事件。只有确定了主从相对应的BLE_EVT_END事件后才可以在事件发生后取得时间以同步。谢谢!
亲爱的MHv_Dialog,非常感谢你的回答。坦率地说,我是一个新的手在这一领域,虽然我觉得你的回答我的问题可能是正确的,在很多研究中,仍然不知道如何去做。
1。确认和指示是什么?BLE_EVT_END吗?或其他事件吗?2。我仍然不知道如何标记连接,应该有一些事情不同的区分,我认为。
希望你不会对我不耐烦的问题。
你好,本杰明,
我先说你要做的不是简单:o)
但这里是我将努力实现它的核心。首先,中央和周边,使用app_on_connection事件全局计数器复位。然后,在rwble。c,找到引用BLE_EVT_END(的两个地方有两种实现的这一事件。运行哪一个取决于你使用“USE_POWER_OPTIMIZATIONS”)。这样的实现都有一条线:
arch_rwble_last_event = BLE_EVT_END;
这条线后,中央和周边,可以增加全局计数器重置app_on_connection事件如上所述。两个计数器,一个在中央/主人和一个在外围/奴隶将同步运行,因为祝福事件双方“几乎完全相同的结束时间(微秒)——只要你不开始实施奴隶延迟。柜台将粗糙的时间。这将给你一个同步的主人和奴隶,但粒度取决于连接间隔(最低7.5毫秒)。实现一个细的粒度可以实现一个基于SysTick好计时器计时(见参考manaual细节)。这个定时器应该在每个BLE_EVT_END和重置会让你减少粒度几微秒。注意SysTick计时器将只工作装置是醒着的,所以好计时器只在你清醒的时候有效。
我希望有帮助。我们都知道它是如何工作的。
/米凯尔
你好再次,
我只是实现上面描述的概念,结果是有前途的。我使用了rwble无代码项目作为起点和改变。c切换GPIO BLE_EVT_END高。然后我加载这个修改无代码hexfile两发展工具和他们之间建立一个连接通过命令(见无编码的文档)。我使用一个逻辑分析仪monitot两GPIOs,我看到他们被3分开我们抵消的偏差+ / - 500 ns。在各种应用程序中使用声音,500 ns声音旅行小于0.2毫米。
会有时间的奴隶将错过传输从主(RF)的“美”,所以你会需要做一些船位推算之间的计时器事件过滤掉那些实例。但他们应该很容易被发现。
嗨,米凯尔,
我测试你给我的方法,一般来说,这是一个很好的方法,可以满足我的需求。我计划有更多的测试有问题,看到这里有更多的信息,我先把我的测试结果。我遇到的问题是,大约有1%的情况下,BLE_EVT_END不是同步发生,从主或从药膏,在最严重的情况下,异步是0.5毫秒,而其他99%情况下,同步是非常好的。对于我的应用程序,0.5异步女士是可以接受的,事实上,我能找到asychronization如果我想要的。我有更多的测试来看看它真正的异步或由于其他原因。
你提到的“奴隶将错过大师”的传播BLE_EVT_END不会发生在对你意味着什么?我担心这个,但acc。我的测试,这从未发生过。如果这个理论可能发生或者即使实际发生你已经找到,我可以设法避免它的影响。
再次谢谢米凯尔。
很高兴听说你已经看到结果。在射频的世界中,你偶尔会遇到一个通道被其他车辆,这导致“miissing”连接事件。奴隶可能错过TX从主,将试图保持其接收机开放一段时间。奴隶不考虑事件结束,直到超时,这导致BLE_EVT_END触发稍后从奴隶的观点。事件还会发生,但实际上你不与主保持同步。这可能是你在观察什么。0.5毫秒嘛。
嗨MHv_Dialog,
非常感谢你快速的反应。“奴隶仍然将传输从主小姐”,有时听起来可能错过的内容,而事件(BLE_EVT_END)永远不会错过(虽然偶尔可能会有一些延迟),换句话说,BLE_EVT_END总是发生在对主机和奴隶。
这是非常重要的,如果我想对事件发生,虽然有时是单边失踪事件(主机或奴隶),可能会有大问题。
我需要一个确认。理论上,如果没有任何失踪事件或双方小姐,我会放心。或理论,将有可能单边失踪事件,我需要考虑我的函数。
谢谢。
我可以证实,总是会有双方的相同数量的事件。奴隶不得“听到”从中央,但事件仍将结束,虽然时间会错过一些半毫秒的顺序。换句话说会有一些异常值的时机,但事件依靠主总是匹配的奴隶。在你的案子,1毫秒精度已经足够好了,你真的不需要过滤任何东西。
我将使用函数uint32_t lld_evt_time_get (void)获得当前时间推荐,我发现这对我来说将是非常方便能够重置计时器,有什么功能我可以这样做吗?
没有这样的功能可用,不幸的是。
嗨MHv_Dialog团队,
在使用上面的方法,我遇到了一个新问题。我使用“app_connect_confirm”而不是“app_on_connection”(我的SDK是3。在SDK5 x,我没有例子。x虽然我想使用它)全局计数器复位。“arch_rwble_last_event = BLE_EVT_END”后我增加全局计数器中央和周边像你说的,这个工作直到我遇见新的问题。
现在的问题是如下:一段时间后连接的奴隶和主人,短的几分钟,时间是20分钟,在奴隶身边,“app_disconnect_func”电话后,奴隶不能接收信息从主,但“arch_rwble_last_event = BLE_EVT_END”可以excuted两边,奴隶还在前面的速度,但在主人身边,奴隶的速度15倍的速度。
我的分析如下:连接坏了,奴隶不能接收来自掌握的信息,但为什么在双方,这种设备可以执行“arch_rwble_last_event = BLE_EVT_END”?
你能帮我以下呢?可能的原因是什么,为什么“app_disconnect_func”被称为奴隶吗?我认为不应该有坏连接两个设备的环境。很明显时间同步是不可能的,希望你能帮我解决这个问题。
谢谢
嗨BenjaminDu,
是的,如果设备经过app_disconnect_func,然后连接断开,BLE_EVT_END是一个状态,你应该得到广告和设备时,设备连接,它说明了段祝福活动结束。所以你的设备失去联系,它继续广告,所以你会得到的BLE_END_EVT广告活动。关于的断开,断开的发生有许多原因,可以初始化从中央或断开外围本身,可能松散连接的设备如果外围出于某种原因没有找到主人指定的连接上的间隔,或由于某种原因奴隶的主人有延迟传输或接收当连接间隔时间的到来。你可以开始通过检查的原因app_disconnect_func()当设备断开连接,以确定580年报告一个断开的原因。
由于MT_dialog
嗨MT_dialog团队,
正如前面讨论的,BLE_EVT_END总是发生在对主机和奴隶一个计数器,可以scynchronized事件后,时间。但计数器显示不同的双方如果一个设备很忙(例子:如果长时间或frquent定时器中断)
1。怎么能发生这种事如果BLE_EVT_END总是发生在对主机和奴隶2。任何其他方法保持时间同步?
非常感谢便雅悯
你好,
假设同步要求仅适用于连接状态,你应该能够依靠连接事件的时机结束在rwble(这个事件可以被探测到。c -寻找BLE_EVT_END文件)。
/ MHv
谢谢MT_dialog,
这些天我研究你的建议,我想主人和奴隶BLE_EVT_END同步发生,我可以得到BLE_EVT_END后立即发生的时间,然后我可以有时间同步。
尽管BLE_EVT_END频繁发生,我找不到相应的来自双方的事件,如何解决这个问题?
非常感谢。
BLE_EVT_END事件在祝福主人和奴隶应该尽可能接近syncronous。如果你想限制同步发生的时候,你可以实现一个关贸总协定特点然后驱动逻辑同步写在下列事件的结束。您可以添加rwble同步代码。c事件被记录之后(这一行记录的事件:arch_rwble_last_event = BLE_EVT_END;——请注意,您会发现这条线在rwble.c两次。哪一个执行的实际上取决于你的力量优化设置)。之间可能存在一个固定的时间延迟事件引发中央和事件触发的边缘,但是它很小,常数,因此可以补偿。
使用BLE_EVT_END的优点之一是,你会有很多时间来管理同步算法。没有高度重视终端请求事件需要处理,直到下一个连接。
您可以使用函数uint32_t lld_evt_time_get (void) 625年增量得到当前时间。如果你需要比这更好的时机,你将不得不禁用睡眠和使用systick定时器也可以提供低至1我们的准确性。
请让我们知道如果你设法实现建议的解决方案。我想象这同步方案将会很强大的结合超声测距/远程应用程序。如果实施得当,你可能得到英寸或者厘米类型精度。
/ MHv
/ MHv
亲爱的MT_dialog,
非常感谢你快速的反应。
我的问题围绕着如何“识别”相同的相应BLE_EVT_END连接从主人和奴隶,因为事件一个接一个的非常快,我不能区分不同BLE_EVT_END事件。
应用程序远程应用程序,但不是超声测距。
0.01秒时间同步精度可以满足我的应用程序的要求,更好的同步是首选的,因为我不需要重置同步由于时间漂移短时间使用,我将实现建议的解决方案,但现在我专注于如何“识别”对应的BLE_EVT_END双方。
再次感谢。
写作特点,了解连接间隔应该允许你标记一个连接。下面的连接上传输的数据会发生事件,所以将在服务器端接收(可能有一个偏移量,但这抵消应该不变)。客户端将收到一个确认数据已经传输时,服务器将接收表明数据已经到来。
/ MHv
您好!
我的问题是两个580主从时间同步的问题,如何才能确定主从的BLE_EVT_END为相对应的事件呢?因为BLE_EVT_END是在不停快速地重复出现,我不知道如何确定主从对应的事件。
只有确定了主从相对应的BLE_EVT_END事件后才可以在事件发生后取得时间以同步。
谢谢!
亲爱的MHv_Dialog,
非常感谢你的回答。
坦率地说,我是一个新的手在这一领域,虽然我觉得你的回答我的问题可能是正确的,在很多研究中,仍然不知道如何去做。
1。确认和指示是什么?BLE_EVT_END吗?或其他事件吗?
2。我仍然不知道如何标记连接,应该有一些事情不同的区分,我认为。
希望你不会对我不耐烦的问题。
你好,本杰明,
我先说你要做的不是简单:o)
但这里是我将努力实现它的核心。首先,中央和周边,使用app_on_connection事件全局计数器复位。然后,在rwble。c,找到引用BLE_EVT_END(的两个地方有两种实现的这一事件。运行哪一个取决于你使用“USE_POWER_OPTIMIZATIONS”)。这样的实现都有一条线:
arch_rwble_last_event = BLE_EVT_END;
这条线后,中央和周边,可以增加全局计数器重置app_on_connection事件如上所述。两个计数器,一个在中央/主人和一个在外围/奴隶将同步运行,因为祝福事件双方“几乎完全相同的结束时间(微秒)——只要你不开始实施奴隶延迟。柜台将粗糙的时间。这将给你一个同步的主人和奴隶,但粒度取决于连接间隔(最低7.5毫秒)。实现一个细的粒度可以实现一个基于SysTick好计时器计时(见参考manaual细节)。这个定时器应该在每个BLE_EVT_END和重置会让你减少粒度几微秒。注意SysTick计时器将只工作装置是醒着的,所以好计时器只在你清醒的时候有效。
我希望有帮助。我们都知道它是如何工作的。
/米凯尔
你好再次,
我只是实现上面描述的概念,结果是有前途的。我使用了rwble无代码项目作为起点和改变。c切换GPIO BLE_EVT_END高。然后我加载这个修改无代码hexfile两发展工具和他们之间建立一个连接通过命令(见无编码的文档)。我使用一个逻辑分析仪monitot两GPIOs,我看到他们被3分开我们抵消的偏差+ / - 500 ns。在各种应用程序中使用声音,500 ns声音旅行小于0.2毫米。
会有时间的奴隶将错过传输从主(RF)的“美”,所以你会需要做一些船位推算之间的计时器事件过滤掉那些实例。但他们应该很容易被发现。
/ MHv
嗨,米凯尔,
我测试你给我的方法,一般来说,这是一个很好的方法,可以满足我的需求。我计划有更多的测试有问题,看到这里有更多的信息,我先把我的测试结果。
我遇到的问题是,大约有1%的情况下,BLE_EVT_END不是同步发生,从主或从药膏,在最严重的情况下,异步是0.5毫秒,而其他99%情况下,同步是非常好的。
对于我的应用程序,0.5异步女士是可以接受的,事实上,我能找到asychronization如果我想要的。
我有更多的测试来看看它真正的异步或由于其他原因。
你提到的“奴隶将错过大师”的传播BLE_EVT_END不会发生在对你意味着什么?我担心这个,但acc。我的测试,这从未发生过。如果这个理论可能发生或者即使实际发生你已经找到,我可以设法避免它的影响。
再次谢谢米凯尔。
你好,本杰明,
很高兴听说你已经看到结果。在射频的世界中,你偶尔会遇到一个通道被其他车辆,这导致“miissing”连接事件。奴隶可能错过TX从主,将试图保持其接收机开放一段时间。奴隶不考虑事件结束,直到超时,这导致BLE_EVT_END触发稍后从奴隶的观点。事件还会发生,但实际上你不与主保持同步。这可能是你在观察什么。0.5毫秒嘛。
/ MHv
嗨MHv_Dialog,
非常感谢你快速的反应。
“奴隶仍然将传输从主小姐”,有时听起来可能错过的内容,而事件(BLE_EVT_END
)永远不会错过(虽然偶尔可能会有一些延迟),换句话说,BLE_EVT_END总是发生在对主机和奴隶。
这是非常重要的,如果我想对事件发生,虽然有时是单边失踪事件(主机或奴隶),可能会有大问题。
我需要一个确认。
理论上,如果没有任何失踪事件或双方小姐,我会放心。
或理论,将有可能单边失踪事件,我需要考虑我的函数。
谢谢。
我可以证实,总是会有双方的相同数量的事件。奴隶不得“听到”从中央,但事件仍将结束,虽然时间会错过一些半毫秒的顺序。换句话说会有一些异常值的时机,但事件依靠主总是匹配的奴隶。在你的案子,1毫秒精度已经足够好了,你真的不需要过滤任何东西。
/ MHv
嗨MHv_Dialog,
我将使用函数uint32_t lld_evt_time_get (void)获得当前时间推荐,我发现这对我来说将是非常方便能够重置计时器,有什么功能我可以这样做吗?
谢谢。
你好,本杰明,
没有这样的功能可用,不幸的是。
/ MHv
嗨MHv_Dialog团队,
在使用上面的方法,我遇到了一个新问题。
我使用“app_connect_confirm”而不是“app_on_connection”(我的SDK是3。在SDK5 x,我没有例子。x虽然我想使用它)全局计数器复位。
“arch_rwble_last_event = BLE_EVT_END”后我增加全局计数器中央和周边像你说的,这个工作直到我遇见新的问题。
现在的问题是如下:
一段时间后连接的奴隶和主人,短的几分钟,时间是20分钟,在奴隶身边,“app_disconnect_func”电话后,奴隶不能接收信息从主,但“arch_rwble_last_event = BLE_EVT_END”可以excuted两边,奴隶还在前面的速度,但在主人身边,奴隶的速度15倍的速度。
我的分析如下:
连接坏了,奴隶不能接收来自掌握的信息,但为什么在双方,这种设备可以执行“arch_rwble_last_event = BLE_EVT_END”?
你能帮我以下呢?
可能的原因是什么,为什么“app_disconnect_func”被称为奴隶吗?我认为不应该有坏连接两个设备的环境。
很明显时间同步是不可能的,希望你能帮我解决这个问题。
谢谢
嗨BenjaminDu,
是的,如果设备经过app_disconnect_func,然后连接断开,BLE_EVT_END是一个状态,你应该得到广告和设备时,设备连接,它说明了段祝福活动结束。所以你的设备失去联系,它继续广告,所以你会得到的BLE_END_EVT广告活动。关于的断开,断开的发生有许多原因,可以初始化从中央或断开外围本身,可能松散连接的设备如果外围出于某种原因没有找到主人指定的连接上的间隔,或由于某种原因奴隶的主人有延迟传输或接收当连接间隔时间的到来。你可以开始通过检查的原因app_disconnect_func()当设备断开连接,以确定580年报告一个断开的原因。
由于MT_dialog
嗨MT_dialog团队,
正如前面讨论的,
BLE_EVT_END总是发生在对主机和奴隶
一个计数器,可以scynchronized事件后,时间。
但计数器显示不同的双方如果一个设备很忙(例子:如果长时间或frquent定时器中断)
1。怎么能发生这种事如果BLE_EVT_END总是发生在对主机和奴隶
2。任何其他方法保持时间同步?
非常感谢
便雅悯
嗨BenjaminDu,
由于MT_dialog