DPSP在睡眠模式下丢失数据

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

Hi,all.

在DSPS项目中,我有两种工作模式。
一是:
sps模式:
ble to send and receive data with phone.
另一个是:
配置模式:
设置连接参数、打开广告、关闭广告等配置参数。

现在,在dsps项目“DA14580\U dsps\U 3.150.2”中,是一个外围设备。
带uart的BLE连接pc。

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

void set\u pad\u functions(void)//设置gpio端口函数模式
{
GPIO\ U配置引脚(UART1\ U TX\ U端口、UART1\ U TX\ U引脚、输出、PID\ U UART1\ U TX、false);
GPIO\u ConfigurePin(UART1\u RX\u端口、UART1\u RX\u PIN、INPUT\u PULLUP、PID\u UART1\u RX、false);
#如果(UART\U HW\U FLOW\U ENABLED)
GPIO_ConfigurePin( UART1_RTS_PORT, UART1_RTS_PIN, OUTPUT, PID_UART1_RTSN, false );
GPIO\u ConfigurePin(UART1\u CTS\u端口、UART1\u CTS\u PIN、INPUT\u PULLUP、PID\u UART1\u CTSN、false);
#endif/*UART\U HW\U FLOW\U启用*/
//GPIO_ConfigurePin(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN,INPUT_PULLDOWN, PID_GPIO, false);
}

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

如果正确,发送
uart\u write(“\r\nOK\r\n”,6,NULL);
如果不正确,发送
uart\u write(“\r\nEER\r\n”,7,NULL);

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

I think the reason is the sleep and flow control,because when i
发送
关闭睡眠和关闭流量控制,数据立即响应。
提示是每秒钟回到电脑与相同的
我要立即反应,开放睡眠和开放流量控制。
如何解决这个问题?

请给我帮助。
谢谢。

关键词:
设备:
MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
你好,袁杭武,

你好,袁杭武,

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

其他的

{

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

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

app_disable_sleep();

其他的

{

app\u sleep\u prepare(睡眠模式)(&sleep\u);

if(睡眠模式==睡眠模式)

app_set_extended_sleep();

其他的

app_disable_sleep();

谢谢你的对话

夏季20100514
离线
最后一次见到:4 years 5 months ago
Guru
已加入:2014-12-30 05:01
嗨,我把代码片段

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

MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
你好,20100514,

你好,20100514,

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

谢谢你的对话

夏季20100514
离线
最后一次见到:4 years 5 months ago
Guru
已加入:2014-12-30 05:01
我已经测试了DSP

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

MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
你好,20100514,

你好,20100514,

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.

谢谢你的对话

夏季20100514
离线
最后一次见到:4 years 5 months ago
Guru
已加入:2014-12-30 05:01
我当然用电脑来发送

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

附件:
夏季20100514
离线
最后一次见到:4 years 5 months ago
Guru
已加入:2014-12-30 05:01
你看过我最后的评论了吗

你看过我最后的评论了吗?很想收到你的来信,谢谢。

MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
你好,20100514,

你好,20100514,

因此,你得到的结果是从pc到pc的连接或pc到android iOS应用程序的连接(不幸的是,我无法复制在android应用程序和使用hercules终端的pc到pc上测试的结果,并连续发送一个值为00-64的文件)。既然您使用的是硬件流控制,那么您是否正确地设置了dev kits上的布线(您使用的是dev kits basic/pro还是自定义板?)。在使用硬件流控制时,为了在启用睡眠时丢失数据或获取垃圾,我能想到的唯一原因是RTS/CTS信号有问题。如果您使用的是基本套件,请使用单独的FTDI芯片,而不是jlink的UART。此外,请检查您的uart终端上的配置是否正确设置为您公司的配置。

谢谢你的对话

夏季20100514
离线
最后一次见到: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年12个月前
专家
已加入:2015-03-25 08:19
嗨,谢谢你的对话,

嗨,谢谢你的对话,

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

app\u sleep\u prepare(睡眠模式)(&sleep\u);

if(睡眠模式==睡眠模式)
app_set_extended_sleep();

else//添加
app_disable_sleep()//添加

}
}

我试试看。

谢谢。

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

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

app\u sleep\u prepare(睡眠模式)(&sleep\u);

if(睡眠模式==睡眠模式)
app_set_extended_sleep();

else//添加
app_disable_sleep()//添加

}
}

the problem is not solved.

The result is :
与uart的PC连接。
配置模式:
PC只发送一个命令(关闭广告)重复周期。返回PC的提示不是每个命令都遵循;但是每一个给PC的提示都是00,
sometime back to PC is \r\nOK\r\n (this is right tip)

我想让电脑知道的是,按照每一个命令去做。
Please give me help.

谢谢。