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,假);
}

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,

我假设您正在使用一个外部单片机和不是一个电脑(你能试一试电脑和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流量控制,每15ms发送数据时,周期性发送定时器和HW流量控制之间存在冲突。然后我选择一个终端发送整个文件与HW流量控制启用,一切都是好的现在。谢谢你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按照每个命令进行遵循。
请帮帮我。

谢谢。