9 posts / 0 new
Last post
dragonzhangcl
Offline
Last seen:2 years 7 months ago
加入:2016-08-24 02:03
DA14580 DSPS5 的一些问题,请帮助看一下

Hi dialog:

目前用DA14580 DSPS5 开发了一款产品, 遇到以下的问题, 还请Dialog看一下:

我们的设计架构是 HOST Cpu + DA14580

Host Cpu负责数据采集,处理,然后把数据通过uart 送给DA14580( 有流控 RTS/CTS),

DA14580收到uart数据,通过BLE 传输给手机. 速率 4.8KB/s

1: DSPS工程开启app_default_sleep_mode = ARCH_EXT_SLEEP_ON 后, 手机端收到的数据大概率丢包. 设置 ARCH_SLEEP_OFF后,
数据可以稳定, 但是连续传输30~40分钟后, 手机收不到数据. DA14580的RTS off, 不再接收Host的数据,连接还在, 这时手机断开重新连接后,又可以传输数据,
请问这是哪里出现的问题?

2: DSPS 能不能控制固定几个ms 连接一次, 一次连接中固定发送几个包? 在哪部分的code中可以修改?

3: DA14580 有概率出现,上电后,程序不能运行, 10次中有1~2次的样子, 问题可能出在哪里?

4: DSPS 工程中,哪里可以判断出,数据已经成功发送了,想加入一些log, 现在手机经常提示BLE没有数据返回,无法定位问题!

谢谢!

Keywords:
Device:
Qinjiny_Dialog
Offline
Last seen:3 weeks 6 days ago
Staff
加入:2016-11-01 05:47
1. DSPS工程的应用场景就是传输相对大量的数据

1. DSPS工程的应用场景就是传输相对大量的数据,而且默认是开启extended sleep的。在有BLE传输活动的时候是不会睡眠的,如果没有大规模修改工程逻辑的话照理说睡眠是不会影响到数据传输的,不然release的版本应该就不会默认开启睡眠。我这边暂时想不到什么原因,会查询一下看看有没有类似的问题再回复你。

2. 可以修改connection interval, 相对来说越短传输越快。user_config.h中可以调整,

static const struct connection_param_configuration user_connection_param_conf = {
/// Connection interval minimum measured in ble double slots (1.25ms)
/// use the macro MS_TO_DOUBLESLOTS to convert from milliseconds (ms) to double slots
.intv_min = MS_TO_DOUBLESLOTS(12.5),

/// Connection interval maximum measured in ble double slots (1.25ms)
/// use the macro MS_TO_DOUBLESLOTS to convert from milliseconds (ms) to double slots
.intv_max = MS_TO_DOUBLESLOTS(12.5),

但是从设备的设置需要发送GAPC_PARAM_UPDATE_CMD来请求主设备接受这个interval的设置,是否接受要看主设备。例如IOS设备只接受最低的interval在30ms左右,安卓15ms。

一次connection event发送几个包也是根据connection interval 和对应设备决定的,无法由你这边调整。

3. 可以尝试在初始化RX pin脚时拉低电平

4. user_sps_server_data_tx_cfm_handler() and
user_sps_client_data_tx_cfm_handler()
These functions handle the SPS_SERVER_DATA_TX_CFM (peripheral role) or the
SPS_CLIENT_DATA_TX_CFM (central role) message which confirms whether data transmission is
successful or not. It calls user_ble_pull() (section 6.5.3) with proper arguments.

--摘自DSPS User manual

dragonzhangcl
Offline
Last seen:2 years 7 months ago
加入:2016-08-24 02:03
1: 数据不稳定的问题,我们又做了尝试, 开启ext

1: 数据不稳定的问题,我们又做了尝试, 开启ext sleep后, 连续传输中很容易丢包, 通过log观察,14580这边并没有开启/关闭
RTS的状态, 说明数据流没有中断。 原来我们尝试过7.2K/s的速度,偶尔丢包, 后面数据压缩后,下降到4.8k/s,反而容易丢包,
关闭ext sleep后,数据传输稳定。

我在user_on_connection 中加入user_sps_set_mode(ARCH_SLEEP_OFF); arch_disable_sleep();
在user_on_disconnect中加入 user_sps_set_mode(ARCH_EXT_SLEEP_ON);arch_set_extended_sleep();
也是会有丢包!

2:我们目前修改的参数如下
static const struct connection_param_configuration user_connection_param_conf = {
/// Connection interval minimum measured in ble double slots (1.25ms)
/// use the macro MS_TO_DOUBLESLOTS to convert from milliseconds (ms) to double slots
.intv_min = MS_TO_DOUBLESLOTS(7.5),//修改

.time_out = MS_TO_TIMERUNITS(1000), //修改

但是我不知道如何发送GAPC_PARAM_UPDATE_CMD, 你能给个样列吗?

我看到dsps的 user_on_connection 有 app_easy_gap_param_update_start(connection_idx) ,是不是已经发送了GAPC_PARAM_UPDATE_CMD?

3:我们尝试在rst pin上面接0.1uf的电容, 目前有改善, RX pin low的方式 ,我们可以尝试!

4:我的理解是,14580发送一包数据以后, 需要远端给出响应消息, 14580才会继续发送下一包,理解对吗?
如果远端在规定链接监管时间内,没有给响应,这时14580会怎么样? 链接断开吗?

谢谢你的答复!

cgh0817
Offline
Last seen:3 years 11 months ago
加入:2017-05-30 11:57
hi:请DIALOG同仁

hi:请DIALOG同仁 帮忙查看我的账号为什么申请不了受限资源,我每次申请受限资源,点击同意提交后,能收到正常反馈(说24小时内能放开资源),但是每天来看仍然还是受限的资源。
而且我账号还发不了单独的新帖,只能来这里回复发声。

lix723
Offline
Last seen:3 years 10 months ago
加入:2017-06-13 04:24
我也遇到了同样的问题,我使用的是DA14583,手机用的5

我也遇到了同样的问题,我使用的是DA14583,手机用的5.150.2的android app,模块使用3.150.1.5的程序时,手机和串口收发数据都正常,但使用5.150.2的程序时出现以下问题(下载到RAM中运行):
1. 工程未做任何修改时,手机发数据串口接收不到内容,手机接收数据不稳定,有时收不到有时乱码;
2. 修改为#undef CFG_UART_HW_FLOW_CTRL,串口接收数据正常了,手机接收数据问题依旧;
3. 修改为const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF,手机接收数据也正常也稳定了;

dragonzhangcl
Offline
Last seen:2 years 7 months ago
加入:2016-08-24 02:03
目前只能修改为const static sleep

目前只能修改为const static sleep_state_t app_default_sleep_mode = ARCH_SLEEP_OFF 来保证数据正确, 但是功耗成问题!

dialog 还没有给出解决思路

dragonzhangcl
Offline
Last seen:2 years 7 months ago
加入:2016-08-24 02:03
@dialog 这个问题, 有进展吗?

@dialog 这个问题, 有进展吗?

yanzy
Offline
Last seen:3 years 1 week ago
加入:2016-12-23 07:03
能分享一份DSPS5的代码么?实在找不到啊,thorory

能分享一份DSPS5的代码么?实在找不到啊,thorory@hotmail.com

CYibin
Offline
Last seen:6 months 3 weeks ago
Staff
加入:2017-12-14 02:48
@lix723 @dragonzhangcl

@lix723@dragonzhangcl

你们好,

从你们的描述中,可知问题大概率出现在流控上。

使能休眠模式之后,串口必须有流控。当串口是硬件流控时(#define CFG_UART_HW_FLOW_CTRL),需要你硬件连接上使用带有硬件流控的 usb 转串口线。或者使用我们的 dev-kit-pro 开发板(basic 开发板不支持流控)