DPSP在睡眠模式下丢失数据

12个帖子/ 0新
最后一篇
袁汉武
离线
最后一次露面:5年1周前
专家
加入:2015-03-25 08:19
DPSP在睡眠模式下丢失数据

大家好。

在DSP项目中,我有两个工作模式。
一个是:
SPS模式:
用手机发送和接收数据。
其他是:
配置模式:
设置Configure参数,如Connect参数,开放广告,关闭广告等。

现在,在DSPS项目“DA14580_DSPS_3.150.2”中,终点设备。
带有UART的BLE链接PC。

我的设置是如下:
#define cfg_lp_clk 0xaa // no 32.768k水晶,所以设置0xaa
#define cfg_uart_hw_flow_ctrl.
#define cfg_ext_sleep.

void set_pad_functions(void)//设置GPIO端口功能模式
{
GPIO_CONFIGUREPIN(UART1_TX_PORT,UART1_TX_PIN,OUTPUT,PID_UART1_TX,FALSE);
gpio_configurepin(Uart1_rx_port,uart1_rx_pin,input_pullup,pid_uart1_rx,false);
#if(uart_hw_flow_enabled)
GPIO_CONFIGUREPIN(UART1_RTS_PORT,UART1_RTS_PIN,OUTPUT,PID_UART1_RTSN,FALSE);
GPIO_CONFIGUREPIN(UART1_CTS_PORT,UART1_CTS_PIN,INPUT_PULLUP,PID_UART1_CTSN,FALSE);
#endif / * uart_hw_flow_enabled * /
// gpio_configurepin(gpio_button_port,gpio_button_pin,input_pulldown,pid_gpio,false);
}

PC UART <----- FLOW1 ----> BLE UART <----- FLOW2 ------>手机。
我想做的就是:
第一步:
法官流量1是正确的。
在BLE UART中,我从PC获取数据,然后我判断流数据是对的,然后通过UART向PC发送提示。

如果是,请发送
UART_WRITE(“\ r \ nok \ r \ n”,6,null);
如果不对,请发送
UART_WRITE(“\ r \ neer \ r \ n”,7,null);

因此,在配置模式下,我使用PC只将一个配置命令发送到每秒BLE,但提示不是每秒回到PC。

我认为原因是睡眠和流量控制,因为当我的时候
发送
关闭睡眠和关闭流量控制,数据是响应立即的。
并且尖端每秒都返回PC
我想立即响应,打开睡眠和打开流量控制。
如何做解决这个问题?

请给我帮助。
谢谢。

关键词:
设备:
mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨袁汉武,

嗨袁汉武,

请您添加以下代码片段,然后重试。将其放在DSPS项目中的App_sleep_check函数中:

别的

{

//检查UART。如果TX或RX Proceess正在进行中禁用睡眠状态

if(uart_sps_fifo_check()))

app_disable_sleep();

别的

{

app_sleep_prepare(&sleep_mode);

if(sleep_mode == mode_sleeping)

app_set_extended_sleep();

别的

app_disable_sleep();

谢谢mt_dialog.

SUMMER20100514.
离线
最后一次露面:4年6个月前
格鲁鲁
加入:2014-12-30 05:01
嗨,我放了代码片段

嗨,我将代码段放在app_sleep_check函数中,但数据也丢失了。但是当我禁用扩展睡眠模式时,所有数据都被正确接收。你能帮我找到原因吗?谢谢你。

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨Summer20100514,

嗨Summer20100514,

请查看SDK 5上的DSP,并检查您是否在丢失数据。新版本得到了很多测试,所以我不认为你会有任何问题。

谢谢mt_dialog.

SUMMER20100514.
离线
最后一次露面:4年6个月前
格鲁鲁
加入:2014-12-30 05:01
我已经测试过DSP

我已经测试了DSPS项目SDK3和SDK5。但是,结果总是相同的。当我启用扩展睡眠模式时,将有数据丢失和垃圾数据。

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨Summer20100514,

嗨Summer20100514,

我想你正在使用外部MCU而不是PC(你能用PC和Android或IOS应用程序还是PC2PC连接,并检查结果是否相同),你的流量控制是什么?您在系统中使用的设置,您也可以给我一些关于您的设置的信息吗?此外,在使用SW流量控制时,使用延长睡眠时存在限制。

谢谢mt_dialog.

SUMMER20100514.
离线
最后一次露面:4年6个月前
格鲁鲁
加入:2014-12-30 05:01
当然,我使用PC发送

当然,我使用PC发送数据和一个Android应用程序以接收数据。我启用了HW流量控制,而不是SW流量控制。当我禁用睡眠模式时,一切正常,但是当我启用扩展睡眠模式时,会出现数据丢失和垃圾数据。
我附上了下面的日志文件。我发送00 - 64,它为每15毫秒101个字节,orign_modified.txt中的数据是垃圾数据。谢谢你。

附件:
SUMMER20100514.
离线
最后一次露面:4年6个月前
格鲁鲁
加入:2014-12-30 05:01
你读过我的上一条评论吗?

你有没有读过我的最后评论?渴望收到你的来信,谢谢。

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨Summer20100514,

嗨Summer20100514,

因此,您获得的结果来自PC到PC连接或PC到Android IOS应用程序连接(不幸的是,我无法在Android应用程序和PC上测试我的侧面上的结果,并使用Hercules终端发送给PC。返回值00 - 64的文件)。由于您使用的是HW Flow Control您可以正确设置Dev套件上的接线(您使用的是Dev Kits Basic / Pro或您使用的是定制板吗?)。我可以想到使用HW流量控制时唯一的原因,以便在启用睡眠时错过数据,或获取垃圾,是RTS / CTS信号的错误。如果您使用基本套件,请使用单独的FTDI芯片,而不是jlink的UART。此外,请检查UART终端上的配置是否正确地设置为您的Flimare的配置。

谢谢mt_dialog.

SUMMER20100514.
离线
最后一次露面:4年6个月前
格鲁鲁
加入:2014-12-30 05:01
我终于发现了这个问题。

我终于发现了这个问题。当我使用HW流量控制并每15毫秒发送数据时,周期性发送定时器和HW流量控制之间存在冲突。然后我选择一个终端将整个文件发送到启用HW Flow Control,现在一切正常。谢谢mt_dialog。

袁汉武
离线
最后一次露面:5年1周前
专家
加入:2015-03-25 08:19
嗨谢谢mt_dialog,

嗨谢谢mt_dialog,

别的
{
//检查UART。如果TX或RX Proceess正在进行中禁用睡眠状态
if(uart_sps_fifo_check()))
app_disable_sleep();
别的
{

app_sleep_prepare(&sleep_mode);

if(sleep_mode == mode_sleeping)
app_set_extended_sleep();

否则//添加
app_disable_sleep();//添加

}
}

我会尝试使用它。

谢谢。

袁汉武
离线
最后一次露面:5年1周前
专家
加入:2015-03-25 08:19
嗨谢谢mt_dialog,

嗨谢谢mt_dialog,
我试过:
别的
{
//检查UART。如果TX或RX Proceess正在进行中禁用睡眠状态
if(uart_sps_fifo_check()))
app_disable_sleep();
别的
{

app_sleep_prepare(&sleep_mode);

if(sleep_mode == mode_sleeping)
app_set_extended_sleep();

否则//添加
app_disable_sleep();//添加

}
}

问题没有解决。

结果是:
带有UART的PC链路BLE。
配置模式:
PC仅发送一个命令(关闭广告)重复循环。返回PC的尖端不按照每个命令;但每个尖端都返回PC为00,
有时回到pc是\ r \ nok \ r \ n(这是正确的提示)

我希望尖端返回PC按照每个命令进行遵循。
请给我帮助。

谢谢。