DSP:在发送数据之前等待SPS_SERVER_ENABLE_CFM之后?

4个帖子/ 0新
最后一篇
Mabraun.
离线
最后一次露面:3年7个月前
加入:2015-11-16 15:57
DSP:在发送数据之前等待SPS_SERVER_ENABLE_CFM之后?

大家好,

我遇到了DSP的特殊行为,即我似乎没有理解,希望其他人可以帮助。我在外部UC配置的DA14580上运行SPS Server软件(主UC是MSP430)。SPS客户端软件(原始SPS主机项目)在对话框USB加密狗上运行(HW流量控制被禁用,没有问题)。我想做的是将数据从MSP430发送到Windows终端超过SPS:
MSP430 - > DA14580(Devkit Pro,SPS Server) - > DA14580(Dongle,SPS客户端) - >终端(PC)

我注意到以下内容:在启用SPS服务并接收SPS_SERVER_ENABLE_CFM消息后,我必须在我开始发送数据之前等待大约200毫秒(使用user_send_ble_data())。如果我等待小于〜200毫秒,则终端上未显示已发送的数据。但是,我确实接收了sps_server_data_tx_cfm消息。

如果我等待超过200毫秒,一切都按预期工作:所有数据都显示在终端中。

有人可以解释在这里发生的事情吗?

谢谢!

设备:
MSUN
离线
最后一次露面:10个月1周前
加入:2015-11-30 22:40
可能有几个

您的SPS服务器可能会有几件事。
默认情况下,应用程序将执行扩展睡眠状态。这个200ms延迟可能是睡眠活动的副产品。

同样非常重要,是您的MSP430还必须实现UART硬件流量控制(RTS / CTS)。

您可能可以在没有流量控制的情况下工作,但您首先需要在SPS服务器设备上禁用扩展睡眠。

请参阅user_config.h ...
.... const static sleep_state_t app_default_sleep_mode = arch_sleep_off;

谢谢。

Mabraun.
离线
最后一次露面:3年7个月前
加入:2015-11-16 15:57
嗨msun,

嗨msun,

感谢您的回复并提出睡眠问题。我实际上已经取消了流量控制,因为我不相信我的应用程序是必要的(连续的低吞吐量数据流)。(加上,我不能使用HW流量控制,因为USB加密狗没有物理RTS / CTS线。)

正如您已提到的那样,在这种情况下需要禁用睡眠。我已经通过设置了睡眠状态

const static sleep_state_t app_default_sleep_mode = arch_sleep_off;

在user_config.h和

#undef cfg_mem_map_ext_sleep.
#undef cfg_mem_map_deep_sleep.

在da1458x_config_basic.h标题中。

所以我认为睡眠不是这里的问题,除非我错过了其他东西。任何其他想法?

谢谢!

MSUN
离线
最后一次露面:10个月1周前
加入:2015-11-30 22:40
嗯....可能必须得到

嗯....可能不得不下降和脏污来了解问题的位置。

应用程序将调用user_ble_pull以通过ble发送数据(通过user_send_ble_data)
然后将有一个通知/指示回调指示它是否成功或不(假设它处于连接状态)
如果不成功,它将重新发送user_ble_pull中的数据(init = false,成功= false)

所以你可以试着看看它是否正在进行重传。

查看的另一个区域是由user_ble_pull使用的tx_wait_rounds&tx_wait_level定义
在发起BLE传输之前,它将等待从UART到UART到达UART的某个字符到达UART之前。
毫无疑问,这将对从时间到达uart的时间来对响应的影响,这是它被送完的时间。

可能不得不要出一个逻辑分析仪并切换一个GPIO以获得更好的意义,当事情发生时。

祝你好运 !