DPSP在睡眠模式下丢失数据

12个员额/0个新员额
最后一篇文章
元航武
离线
最后一次见到:4年11个月前
专家
加入:2015-03-25 08:19
DPSP在睡眠模式下丢失数据

嗨,所有。

在DSPS项目中,我有两种工作模式。
一是:
sps模式:
可以用手机收发数据。
另一个是:
配置模式:
设置连接参数、打开广告、关闭广告等配置参数。

现在,在DSP项目“DA14580_dsps_3.150.2”中,是一个外围设备。
可将pc与uart连接起来。

我的设置如下:
#定义CFG_LP_CLK 0xAA//no 32.768k crystal,因此设置0xAA
#定义CFG\u UART\u HW\u FLOW\u CTRL
#定义CFG\u EXT\u睡眠

void set\u pad\u函数(void)//设置gpio端口函数模式
{
GPIO_配置引脚(UART1_-TX_端口,UART1_-TX_引脚,输出,PID_-UART1_-TX,错误);
GPIO_配置引脚(UART1_RX_端口、UART1_RX_引脚、输入_上拉、PID_UART1_RX、假);
#如果(UART硬件流量已启用)
GPIO_ConfigurePin(UART1_RTS_PORT, UART1_RTS_PIN, OUTPUT, PID_UART1_RTSN, false); / /输出
GPIO\U配置引脚(UART1\U CTS\U端口、UART1\U CTS\U引脚、输入上拉、PID\U UART1\U CTSN、false);
#endif/*UART\u硬件\u流量\u已启用*/
/ / GPIO_ConfigurePin (GPIO_BUTTON_PORT GPIO_BUTTON_PIN、INPUT_PULLDOWN PID_GPIO,假);
}

PC UART <——Flow1 > BLE UART <——Flow2 >电话。
我想做的是:
第一步:
法官1是否正确。
在BLE UART中,我从pc机获取数据,然后判断流量数据是否正确,然后通过UART将提示发送回pc机。

如果正确,发送
uart_写入(“\r\nOK\r\n”,6,空);
如果不正确,请发送
uart\U写入(“\r\nEER\r\n”,7,空);

所以,在配置模式下,我使用pc每秒只向BLE发送一个配置命令,但提示并非每秒返回pc。

我想原因是睡眠和心流控制,因为当我
发送
关闭睡眠和关闭流量控制,数据立即响应。
而这些提示每秒钟都会以同样的方式返回到pc
我想要即时响应,开放睡眠和开放流量控制。
如何解决这个问题?

请给我帮助。
谢谢

关键词:
设备:
MT_对话框
离线
最后一次见到:2个月1周前
工作人员
加入:2015-06-08 11:34
嗨,袁杭武,

嗨,袁杭武,

请添加下面的代码段并重试。将其放入DSPS项目中的app_sleep_check函数中:

其他的

{

//检查UART。如果发送或接收过程正在进行,请禁用睡眠

如果(uart\U sps\U fifo\U check())

应用程序_禁用_睡眠();

其他的

{

应用程序睡眠准备(睡眠模式和睡眠模式);

如果(睡眠模式==睡眠模式)

应用程序设置扩展睡眠();

其他的

应用程序_禁用_睡眠();

谢谢你的对话

夏季20100514
离线
最后一次见到:4年5个月前
大师
加入:2014-12-30 05:01
您好,我放置了代码片段

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

MT_对话框
离线
最后一次见到:2个月1周前
工作人员
加入:2015-06-08 11:34
你好,summer20100514,

你好,summer20100514,

请查看SDK 5上的DSP,并检查是否也丢失了数据。新版本已经过测试,所以我认为你不会有任何问题。

谢谢你的对话

夏季20100514
离线
最后一次见到:4年5个月前
大师
加入:2014-12-30 05:01
我已经测试了DSP

我已经测试了dsps项目sdk3和sdk5。但是,结果总是一样的。当我启用扩展睡眠模式时,会出现数据丢失和垃圾数据。

MT_对话框
离线
最后一次见到:2个月1周前
工作人员
加入:2015-06-08 11:34
你好,summer20100514,

你好,summer20100514,

我假设您正在使用一个外部单片机和不是一个电脑(你能试一试电脑和android和iOS应用程序或pc2pc连接,并检查结果是否相同),流控制设置,您使用的是在您的系统,也可以请您给我一些信息关于你的设置吗?此外,如果您正在使用SW流控制,在使用扩展睡眠时也有限制。

谢谢你的对话

夏季20100514
离线
最后一次见到:4年5个月前
大师
加入:2014-12-30 05:01
当然,我用电脑发送

当然,我用PC发送数据,用一个android应用程序接收数据。我启用了硬件流量控制,而不是软件流量控制。当我禁用睡眠模式时,一切正常,但当我启用扩展睡眠模式时,数据丢失和垃圾数据出现。
我在下面附上了日志文件。我发送00-64,即每15毫秒发送101字节,origin_modified.txt中的数据是垃圾数据。非常感谢。

附件:
夏季20100514
离线
最后一次见到:4年5个月前
大师
加入:2014-12-30 05:01
你看过我最后的评论了吗

你看过我最后的评论了吗?很想听到你的消息,谢谢。

MT_对话框
离线
最后一次见到:2个月1周前
工作人员
加入:2015-06-08 11:34
你好,summer20100514,

你好,summer20100514,

因此,您得到的结果来自pc到pc的连接或pc到android iOS应用程序的连接(不幸的是,我无法复制在安卓应用程序上测试的结果,也无法使用hercules终端在pc到pc上连续发送一个值为00-64的文件)。由于您使用的是硬件流量控制,您是否正确设置了开发工具包上的接线(您使用的是开发工具包basic/pro还是自定义板?)。当使用HW流量控制时,为了在启用睡眠时丢失数据或获取垃圾,我能想到的唯一原因是RTS/CTS信号有问题。如果您使用的是基本套件,请使用单独的FTDI芯片,而不是jlink中的UART。此外,请检查uart终端上的配置是否正确设置为固件的配置。

谢谢你的对话

夏季20100514
离线
最后一次见到:4年5个月前
大师
加入:2014-12-30 05:01
我终于发现了问题所在。

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

元航武
离线
最后一次见到:4年11个月前
专家
加入:2015-03-25 08:19
你好,谢谢你的对话,

你好,谢谢你的对话,

其他的
{
//检查UART。如果发送或接收过程正在进行,请禁用睡眠
如果(uart\U sps\U fifo\U check())
应用程序_禁用_睡眠();
其他的
{

应用程序睡眠准备(睡眠模式和睡眠模式);

如果(睡眠模式==睡眠模式)
应用程序设置扩展睡眠();

其他//添加
应用程序_禁用_睡眠()//添加

}
}

我试试看。

谢谢

元航武
离线
最后一次见到:4年11个月前
专家
加入:2015-03-25 08:19
你好,谢谢你的对话,

你好,谢谢你的对话,
我尝试过:
其他的
{
//检查UART。如果发送或接收过程正在进行,请禁用睡眠
如果(uart\U sps\U fifo\U check())
应用程序_禁用_睡眠();
其他的
{

应用程序睡眠准备(睡眠模式和睡眠模式);

如果(睡眠模式==睡眠模式)
应用程序设置扩展睡眠();

其他//添加
应用程序_禁用_睡眠()//添加

}
}

问题还没有解决。

结果是:
与uart的PC连接。
配置模式:
PC仅发送一个命令(关闭广告)重复周期。返回PC的提示不是按照每个命令进行的;但是给电脑的每一个提示都是00,
有时回到PC是\r\nOK\r\n(这是正确的提示)

我想把提示返回给电脑,就是按照每一个命令去做。
请给我帮助。

谢谢