DPSP在睡眠模式下丢失数据

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

Hi,all.

在DSP项目中,我有两个工作模式。
一个是:
SPS模式:
ble to send and receive data with phone.
其他是:
配置模式:
设置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------> Phone.
我想做的就是:
第一步:
法官流量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。

I think the reason is the sleep and flow control,because when i
发送
关闭睡眠和关闭流量控制,数据是响应立即的。
并且尖端每秒都返回PC
我想立即响应,打开睡眠和打开流量控制。
如何做解决这个问题?

请给我帮助。
谢谢。

关键词:
设备:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入: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 years 5 months ago
Guru
加入:2014-12-30 05:01
嗨,我放了代码片段

嗨,我放了代码片段in app_sleep_check function, but the data is lost as well.但是当我禁用扩展睡眠模式时,所有数据都被正确接收。你能帮我找到原因吗?谢谢你。

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

嗨Summer20100514,

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

谢谢mt_dialog.

SUMMER20100514.
离线
最后一次露面:4 years 5 months ago
Guru
加入:2014-12-30 05:01
我已经测试过DSP

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

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

嗨Summer20100514,

I suppose that you are using an external MCU and not a pc (can you please give it a try with a pc and the android or iOS application or a pc2pc connection, and check whether the results are the same), what is your flow control settings that you are using in your system, also can you please give me some info about your setup ? Additionally in case that you are using SW flow control there is a limitation when using extended sleep.

谢谢mt_dialog.

SUMMER20100514.
离线
最后一次露面:4 years 5 months ago
Guru
加入:2014-12-30 05:01
当然,我使用PC发送

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

附件:
SUMMER20100514.
离线
最后一次露面:4 years 5 months ago
Guru
加入:2014-12-30 05:01
你读过我的上一条评论吗?

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

mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入: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 years 5 months ago
Guru
加入:2014-12-30 05:01
我终于发现了这个问题。

我终于发现了这个问题。When I used HW flow control and sent data every 15 ms, there was conflict between the periodic send timer and HW flow control. Then I choose one terminal to send the entire file with HW flow control enabled, and everything is OK now. Thank you MT_dialog.

袁汉武
离线
最后一次露面:4年11个月前
专家
加入: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();//添加

}
}

我会尝试使用它。

谢谢。

袁汉武
离线
最后一次露面:4年11个月前
专家
加入: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();//添加

}
}

the problem is not solved.

The result is :
带有UART的PC链路BLE。
配置模式:
PC仅发送一个命令(关闭广告)重复循环。返回PC的尖端不按照每个命令;但每个尖端都返回PC为00,
sometime back to PC is \r\nOK\r\n (this is right tip)

我希望尖端返回PC按照每个命令进行遵循。
Please give me help.

谢谢。