你好,对话!
我们试图实现一个基于dsp的项目。我们已经用DSPS主机示例(版本v_5.150.2)闪过(Da14580 DK基本板),我们想通过UART (TX/RX)获得扫描设备的名称。
我们已经实现了一个自定义板与Da 14580,这是从Spi闪存和使用HW流量控制低电池消耗
它有DSPS Device的例子,运行良好。广告上写着他的设备名称。
1)如何查看扫描设备?
是否有可能使用tera术语来查看是否实际上从DSPS HOST示例中扫描附近的广告设备?
2) DSPS HOST的例子也在宣传他的设备名称吗?因为我用的是对话DSPS安卓App,按下扫描键我什么都检测不到。
提前谢谢你。
腻过
设备:
嗨腻过,
非常感谢你在网上的提问。sps_host项目将DA14580配置为Central,因此该设备不会发布。请检查user_callback_config.h,您将在sps_host项目中看到.default_operation_adv = NULL。在sps_device项目中,在同一个头文件中,您将看到.default_operation_adv = default_advertise_operation。
为此,如果你想连接Dialog DSPS android应用程序,你应该使用DA14580中的sps_device项目。请记住,移动应用程序将是Central,而运行sps_device的DA14580将是Peripheral。
关于第一个问题,你能否澄清一下?中心设备(sps_host)上的应用程序自动开始扫描并连接到第一个发现的支持串口服务的外围设备(sps_device)。中央设备还通过停止数据流并自动尝试重新建立连接来处理连接丢失的情况。
谢谢,PM_Dialog
你好,PM_Dialog !
感谢您的快速回复!!
我已经检查了dsps主机和dsps设备项目上的user_callback_config.h,您是正确的。
我们需要设置中央扫描继续永久扫描外围设备,但我们不想与他们中的任何一个连接。
只扫描广告设备。
我们能继续扫描UART设备列表吗?
如果我使用tera术语,我可以在终端上看到扫描吗?
提前谢谢你,
腻过
嗨腻过,
扫描过程有一个大约8到10秒的超时,因此为了继续扫描,您必须在调用scan_complete回调时发送一个新的扫描命令。每次你得到一个指示,你有一个广告信息,你可以打印数据。只要在da1458x_config_basic.h中定义了CFG_PRINTF定义,DSPS应用程序就会在user_on_adv_report_ind()中实现arch_prinf()函数
谢谢,PM_Dialog
你好,PM_Dialogue !
谢谢你的快速回复!
我们有一个移动电话和两个da 14580设备。
手机连接到第一个Da14580发送数据,然后在第二个Da14580上传输数据,并在外部处理器中进行处理。
必须使用哪个程序来实现这一点?
第二个设备已经在运行DSPS (SPS_device)项目。
在第一个设备上必须使用哪个程序?
提前谢谢你,
腻过
嗨腻过,
BLE连接总是由中央设备(在您的情况下是移动电话)发起。第一个设备也可以运行DSPS应用程序。因此,移动电话将连接到运行DSPS (GAP外围设备)的第一个设备,并通过SPS配置文件发送数据。然后,您应该断开第一个连接,并连接到第二个。请记住,由于两者都在运行DSPS,您可以更改BD地址和设备名称。
谢谢,PM_Dialog
你好PM_Dialogue
我们需要的数据已经通过手机传输到第一个设备。第一个设备必须连接到第二个设备并传输数据。
两台设备运行的(sps设备)具有不同的蓝牙地址和名称
如何实现它?
提前谢谢你,
腻过
嗨腻过,
由于Device_1连接到移动设备(GAP Central),因此它应该运行sps_device固件,因此它被配置为GAP外围设备。
因此,在Device_1完成数据转换后,需要断开Device_1与手机的连接。你也可以用手机断开连接。
现在,需求是Device_1和Device_2。为此,应该将Device_2配置为GAP Central。DSPS包括一个名为sps_host的项目,该项目将DSPS配置为GAP Central。
根据用户手册,中心设备上的应用程序自动开始扫描,并连接到第一个发现的支持串口服务的外围设备。中央设备还通过停止数据流并自动尝试重新建立连接来处理连接丢失的情况
谢谢,PM_Dialog
你好PM_Dialog !
感谢您的快速回复!
我刚刚用(sps_device)和(sps_host)闪光了Device_1和Device_2。
现象描述从手机向Device_1成功传输数据,传输完成后移动设备断开连接,但Device_2似乎无法连接Device_1获取数据。
我把Device_1和Device_2的配置设置都发给你,以便更好地理解。
我等待你的回复
提前感谢,
腻过
你好mario,你能检查一下Device_1在断开连接后是否开始发布广告吗?Device_2开始扫描?你可以使用SS Tollbox的功率分析器来验证它。
请快速测试:在Device_1中运行sps_device,在Device_2中运行Dialog提供的sps_host。这能起作用吗?Device_2是否可以连接到Device_1?谢谢,PM_Dialog
你好PM_Dialog !
感谢您的快速回复!
是Device_1断开连接后重新开始发布。
你有sps_Host的广告波形吗?
与我们的波形进行比较。
sps_Host似乎开始扫描,但我怎么能弄清楚
如果连接到Device_1 ?
非常感谢你的帮助
提前谢谢你,
腻过
嗨腻过,
sps_host将设备配置为GAP Central角色,因此它将开始扫描。
很抱歉,我无法复制这一点。
我使用的是DSPS,没有任何修改,由Dialog提供。
运行sps_device的Device_1开始发布—参见sps_device_adv.PNG。
运行sps_host的Device_2开始扫描—参见sps_host_scan.PNG。
正如我在前面的回复中提到的,中心设备(sps_host)上的应用程序自动开始扫描并连接到第一个发现的支持串口服务的外围设备(sps_device)。因此,Device_2会自动连接到Device_2。请参见sps_device_connected.PNG和sps_host_connected.PNG。
我建议不做任何修改就使用sps_host和sps_device,这样您就可以验证相同的功能。
谢谢,PM_Dialog
你好PM_Dialog !
是的,我在Device_2 (Sps_Host)上有与您相同的波形,但似乎它无法与我拥有的任何sps设备连接。
我将Device_2 (sps_host)设置为具有硬件流控制的扩展睡眠模式,因为我希望它使用电池运行。
采用外接单片机控制CTS和RTS,与uart通信。
设备1 (sps_design)是SW流量控制和正常电池配置文件,也是微控制器和UART通信。
提前谢谢你,
腻过
嗨腻过,
你是否使用Dialog提供的DSPS项目?您是否对sps_host或sps_device应用程序代码进行了任何修改?是否可以提供一份嗅探日志,以便我能了解空中发生了什么?
你能检查一下你是否在sps_hose端得到广告报告- user_on_adv_report_ind()吗?
谢谢,PM_Dialog
PM_Dialog !
感谢您的快速回复!
在移动设备完成数据传输后
Device_1微控制器处理其缓冲区中的数据,然后将Da14580上的数据通过UART发送给Device_2
我们阅读了以下使用说明书的过程:
一个- b - 026 - _da14580_external_wake up_mechanisms_v1_0
1) Device_1如何与特定Device_2连接,DA14580两个设备都运行DSPS项目
提前谢谢你,
腻过
你好PM_Dialog !
我们已经设置了Device_1来运行(DSPS_HOST),我们的外部微控制器通过UART将数据发送到DA14580
设备1 (SPS_Host)与设备2 (SPS设备)连接成功,但没有向对方传输任何数据。
主机端需要设置哪种模式来传输数据?
汽车吗?
直连?
请给我们一些如何成功做这件事的指导
请帮助我们,我们已经花费了数千欧元开发Dialog DA14580平台。
我们是希腊最大的制造商,拥有全自动生产线。
提前谢谢你,
腻过
嗨腻过,
运行sps_host的Device_1向运行sps_device的Device_2发起连接请求,连接成功,连接不存在问题。
你能探测一下UART信号吗?
如果DA14580配置在任何休眠模式下,那么您应该使用硬件流控制。一旦数据在UART上,那么sps_host应该将它们传输到对端设备。
因此,还请检查user_peri_setup .c / .h文件中的UART信号和UART配置。
在应用程序代码和自定义板中使用的UART信号是什么?
谢谢,PM_Dialog
你好,PM_Dialog !
感谢您的快速回复!
我们在另一边成功传送了数据!
1)我们想(Sps_Host)启动连接模式只有当我们有数据流控制?
需要做哪些设置才能实现这一点?
2)我们还希望(sps_Host)在接收到数据后可以发布和连接(Sps_Device)并传输数据。
提前谢谢你,
腻过
嗨腻过,
你能澄清一下你的问题吗?
正如我在前面的评论中提到的,sps_host将DA14580配置为GAP角色中心。中央设备可以发布广告-它只能开始扫描。
谢谢,PM_Dialof
你好,PM_Dialog !
感谢您的快速回复!
1)我们希望(sp_Host)只在它的UART端口上从我们的外部微控制器接收数据时才开始扫描。数据结束后必须从sps_device断开连接。
2) sps_Host只需要扫描并与预定义的Sps_Device配对,而不需要与第一个发现的设备配对,因为我们有成千上万的da14580在同一时间和地点发布广告。
提前谢谢你,
腻过
嗨腻过,
DSPS应用程序不支持这两个需求。DSPS由Dialog提供。因此,在您的情况下,您将不得不修改DSPS应用程序代码-没有任何特定的配置。
谢谢,PM_Dialog
你好PM_Dialog !
感谢您的快速回复!
我刚刚在user_conf .h上看到了
///扫描响应数据
#定义user_adverse_scan_response_data "
我还没有在这个定义上设置任何东西
如果我设置了sps_device广告名,sps_Host将只连接到特定的设备?
如果我做错了什么,请纠正我。
1)在user_conf .h上
///在广告或扫描响应数据中放置的设备名称
//这里我们设置了sps_Host的发布名称。
静态构造gapm_configuration user_gapm_conf = {
///设备角色:中心、外围设备、观察者或广播者
.role = GAP_CENTRAL_MST,
/**************************************************************************************
*对端设备信息,仅适用于:
*
* - gapm_connection_auto
* - gapm_connection_selective
*
*白名单与对等体地址和各自的对等体地址类型
**************************************************************************************
* /
/// BD设备地址
.peer_addr_0 = {0x00, 0x00, 0x00, 0xCA, 0xEA, 0x23}, //这里我们设置了Sps_Device的蓝牙地址,我们希望SPS_Host与它连接。
///设备地址类型0=public/1=private random
.peer_addr_0_type = 0,
Config_advanced.h
#define CFG_NVDS_TAG_BD_ADDRESS {0x00, 0x00, 0x00, 0xCA, 0xEA, 0x80} //SPS_Host蓝牙地址
user_sps_host.h
/**
****************************************************************************************
处理广告报告
* @param[in] param断开连接消息的参数
* @返回void
****************************************************************************************
* /
struct gapm_adv_report_ind const * param
{
/ /如果(! memcmp (param - >报告。数据[3],USER_ADVERTISE_DATA, USER_ADVERTISE_DATA_LEN))
{
arch_printf(“连接%02x %02x %02x %02x %02x %02x”,
param - > report.adv_addr.addr [5],
param - > report.adv_addr.addr [4],
param - > report.adv_addr.addr [3],
param - > report.adv_addr.addr [2],
param - > report.adv_addr.addr [1],
param - > report.adv_addr.addr [0]);
app_easy_gap_start_connection_to_set (param - >报告。Adv_addr_type, (uint8_t *)¶m->report.adv_addr。addr, MS_TO_DOUBLESLOTS (USER_CON_INTV));
user_gapm_cancel ();
}
}
提前谢谢你,
腻过