跳到主要内容

连接滴

DA14531 SmartBond微型模块

11个月前

连接滴

发布的谢尔盖Bezroukov0点 18日回复
0的问题

你好,

我正在试验一对DA14531 TINY模块通过2线UART和USB/UART转换器连接到计算机上的CP2104,使用无代码固件图像codeless_531_standalone_set_two.hex。在它们之间建立连接,如UM-B-140第3.3节所述。但问题是,模块会在大约3分钟后断开连接。是否有可能修复它,使连接无限期地保持活动状态?

另外两个预编译固件映像(codeless_531_standalone. zip)。hex和codeless_531_datapamp .hex)没有这个缺点,但我需要I2C支持。我从源代码重新编译了standalone_set_two项目,但它仍然在2-3分钟后断开连接。如果我通过添加I2C功能来重新编译SET ONE固件,也会发生同样的情况。对话小组-请建议如何修复这个问题。

11个月前

PM_Dialog

Sergei Bezroukov嗨

谢谢你的问题。

但问题是,大约3分钟后,模块会断开连接。

请介绍有关情况。当连接中断时?您是否发送了特定的AT命令?你能在调试模式下运行吗?

> > > I2C的支持

你的意思是有一个I2C接口连接到TINE模块,你的要求是读取和传输I2C数据?

我建议在调试模式下运行项目,并检查它是否陷入断言NMI等。

谢谢,PM_Dialog

11个月前

谢尔盖Bezroukov 0点

感谢您的及时回复!

I2C与这个问题无关,因为到目前为止我甚至没有向模块发出任何I2C命令。而且,它没有连接到它的slave。我使用的唯一模块引脚是P0_5和P0_6,将其连接到外部USB-UART转换器。

我使用无编码SDK 6.380.10.4和Keil v5.27.1.0的免费版本,并注释掉了文件user_at_command.h中的一些AT命令(见附件),以使codeess_stand_alone图像在32K限制下。按照你的建议,我在调试下运行Segger J-Link调试器。在开始我给它AT+SLEEP=0命令的代码之后,模块在下一行用OK和+AWAKE响应。然后我使用Cypress CySmart工具和他们的软件狗作为中心设备连接到TINY模块。在建立连接后,模块响应+CONNECTED(在TeraTerm),我可以在用作BLE扫描工具的CySmart中探索其服务和属性。在这一点上,一切都很好,如预期-我可以看到模块的特点概述在手册中。然后我让模块在连接模式下空转,即不从TeraTerm发出任何命令,也不从CySmart通过蓝牙发出任何命令。如前所述,连接在大约3分钟后断开。调试器没有显示任何可疑的东西,绝对没有NMI,实际上它没有显示任何东西,只是运行模块代码。TeraTerm报告+READY, CySmart报告连接掉线。

如果你不知道CySmart,我用一对531 TINY模块建立了一个蓝牙连接,做了同样的实验。其中一个模块运行预编译的映像(不管哪个),其他模块运行我编译的映像。然而,如果两个模块都运行预编译的数据泵或独立的图像(预编译的意思是SmartBond Flash程序员中提供的图像)工具,则不会出现连接断开。但是,一旦其中一个模块加载了预编译的独立集2,就会发生连接丢失。所以,预编译的集二图像和SDK源代码是错误的。

我写I2C只是因为我需要这个选项。到目前为止,我甚至没有尝试它是如何工作的,所以问题肯定与I2C无关。

附件 大小
user_at_commands.zip 4.12 KB

11个月前

PM_Dialog

Sergei Bezroukov嗨

由于应用程序代码不会卡在任何地方(NMI / WDOG /断言),因此共享嗅探日志将非常有帮助,以便了解在空中发生了什么。

是否有可能使用BLE嗅探工具并共享嗅探捕获?

你有一个自定义板,或你正在使用任何或dk ?此外,如果你正在使用睡眠模式,那么你应该使用4个UART信号(URX/UTX/RTS/CTS)。

谢谢,PM_Dialog

11个月前

谢尔盖Bezroukov 0点

给你。附加的存档有我的硬件(只是DA14531模块和CP2104 USB-UART)和BLE事件日志的照片。日志显示531在连接建立后3分钟(最后3条记录)发出的连接超时。我不使用睡眠模式。

11个月前

PM_Dialog

Sergei Bezroukov嗨

在附加的日志中,断开的原因是连接超时。根据蓝牙LL核心规范,Connection Timeout错误码表示给定连接的链路监督超时时间已过。监管超时在user_connection_param_conf结构中设置。

也请说明设备断开后是否会重新开始广告?您可以在断开回调中添加断点—user_on_disconnect()—并检查断开原因。请参见gapc_disconnect_ind结构。

谢谢,PM_Dialog

11个月前

谢尔盖Bezroukov 0点

是的,在断开连接后,DA设备再次开始发布广告。您是对的:由于DA14531停止响应连接事件,所以链路监管已经过期。

我使用Silicon Labs simple Studio和他们的Thunderboard Sense 2板作为中心,创建了一个特殊的应用程序,它只连接到DA14531,在保持连接活动的同时不做任何事情。在所附的归档文件中有两张由simple Studio Network Analyzer提供的图像。在这些图像上,设备90:FD:9F:7B:86:16是我的中央和DA:E4:D9:A6:F6:E9是DA14531。在名为Connection_parameters的映像上,您可以看到DA14531请求设置连接延迟5和监督超时1250ms,这被客户端接受(参见事件详细信息窗口)。然后在图像Log2上,您可以看到DA14531根据连接延迟(Connection Latency)工作,不响应连续的5个后续连接间隔。但在这种情况下,138sec之后,是更长的一系列没有响应的数据包,导致superior在中央超时。我也看到这个原因(错误0x208)在Tera-Term输出从我的中央设备在第三张图像。

从这些日志可以看出,在一段时间(2-3分钟)后,DA14531停止响应连接事件。那么,Dialog,你为什么不修复你的软件呢?这样的行为绝对是一个bug。通过编译并将提供的源代码加载到两个模块或开发板中,您可以很容易地说服自己。

11个月前

谢尔盖Bezroukov 0点

好的,对话框,我决定按照你的建议,在user_on_disconnect()函数user_codeeless .c文件中添加几个断点。原来,在连接被删除后,您提供的代码不会进入这个函数。进一步的研究表明,模块在删除连接后会重置自己,如果在main()中添加断点,代码就会停止。因此,我相信您需要为您的软件开发小组创建一张票据。如果你想让我做这件事,请给我指示。

11个月前

PM_Dialog

Sergei Bezroukov嗨

你能运行它附加调试器,并分享一个截图,代码被卡在断开后?

设备是否从系统ram或SPI闪存引导?

说实话,我有点糊涂了。您能否在SmartConsole移动应用程序中复制此问题?

在我的身边,我不能复制它和无代码是完美的工作。

谢谢,PM_Dialog

11个月前

谢尔盖Bezroukov 0点

我再次在调试器中运行它,截图是附加的。代码不会卡在任何地方,它只是重置模块和main()函数重新开始。您将在屏幕截图中看到它,它显示了删除连接后调试器停止的位置。因此,模块已经准备好建立一个新模块,如果我继续运行它,它就会工作。但是新的连接也会在大约3分钟后断开。同样,在建立连接后,我不与模块通信——只是让它空转。在我看来这是看门狗的行为。

我不使用任何(外部)闪存,只是一个连接到CP2104 USB转换器的裸模块,看到附件的图片,不确定设备内部是如何启动的。我只是编译无代码软件(v6.380.10.4)的图像为codeless_531_set_two_standalone,没有任何更改,并通过SWD接口加载到我的两个模块。它会根据你软件里的算法启动。每个模块的工作原理都是一样的——3分钟不活动后断开连接。

使用Android(三星Galaxy S8)的SmartConsole应用程序作为客户端,可以观察到同样的连接断开行为。还有什么要查的吗?

后来添加的(重要的):我刚刚注意到,如果向调试器下运行的模块发出ATI命令,响应为无代码DA14531 v_6.380.10.4这与我使用的SDK版本相匹配。但是,如果我现在在断开调试器的情况下重新启动模块,对ATI命令的响应将变为无代码DA14531 v_6.380.9.10(? ? ! !)也许这就是你行为不端的原因?

附件 大小
screenshot.zip 699.45 KB

11个月前

谢尔盖Bezroukov 0点

好了,这些天我了解到,如果一个人从Keil内部(在degug模式下)和外部使用Dialog SmartBond Flash程序员编程模块,那么结果是不同的。也就是说,在用Flash程序员播放我编译的代码后,它会显示正确的固件映像版本DA14531 v_6.380.10.4无论您如何引导它(我的意思是在Keil的调试会话期间以及在断开JLink调试器的情况下)。固件映像之间的不匹配后来添加的我上面的部分职位已经解决了。然而,模块仍然在3分钟后断开连接。只有我一个人有这种经历吗?

对话团队:如果你的连接没有掉,你能把HEX图像发给我吗codeless_531_set_two_standalone.hex你觉得可以吗?

11个月前

PM_Dialog

嗨谢尔盖,

你们大学里有BLE嗅探工具吗?我们想分享一个BLE捕获,这样我们就可以了解空中正在发生什么。这将真正帮助我们更好地了解根本原因。

您能否在另一部运行SmartConsole应用程序的手机上复制此问题?你只试过用三星Galaxy S8吗?

谢谢,PM_Dialog

11个月前

谢尔盖Bezroukov 0点

亲爱的对话框的团队!我已经提供了以上两个BLE捕获收集不同的捕获软件和硬件。其中一个由Cypress CySmart工具和他们的加密狗CY5677收集,另一个由Silicon Labs网络分析器收集。附件是北欧半导体BLE加密狗PCA10031和他们的Sniffer 3.0软件与Wireshark (v3.2.5)协同工作收集的另一个最详细的捕获。附加的捕获涉及两个设备(我的Galaxy S8手机运行SmartConsole和DA14531模块与MAC 48:23:35:00:07:AA),它可以用Wireshark打开。在这些情况下,我都在建立连接后让它处于空闲状态。这些是我所有的BLE嗅探工具。

我在我妻子的另一部Galaxy S8手机、我的旧款Galaxy S5手机,以及至少其他3部我作为高手使用的非手机BLE设备上也出现了连接中断的问题。DA14531模块只是在主连接事件上停止响应并重置自己(虽然我不确定什么先发生)。同样,只有在将codeless_531_standalone_set_two图像加载到模块中时,我才会遇到这种情况。与其他两个可用的预编译映像(codeless_531_datadump和codeless_531_standalone)的连接似乎运行良好,即在3分钟后没有连接中断,除非我自己从提供的源代码编译它们。在后一种情况下,无论我编译哪个图像,连接下降都会出现。

我使用的预编译图像是由Dialog SmartBond Flash程序员提供的。我在上面要求你把你用来测试的图片发给我。请这样做。另外,请在您的硬件上尝试我所附的十六进制。

附件 大小
capture.zip 338.85 KB

11个月前

PM_Dialog

嗨谢尔盖,

我为造成的混乱道歉-刚刚看到附件的嗅探日志。最后,我可以使用codeless_531_standalone_set_two复制它。使用Flash编程工具。让我向团队内部汇报,我会尽快给你答复。

谢谢,PM_Dialog

10个月前

PM_Dialog

嗨谢尔盖,

很抱歉我回复晚了。我从团队内部得到了反馈,很快就会修复。一旦补丁发布,我会在这个论坛里告诉你的。

任何其他关于CodeLess的评论/反馈都将是非常欢迎的!

谢谢,PM_Dialog

10个月前

谢尔盖Bezroukov 0点

谢谢你!我期待着这些问题得到解决。

接受答案!

9个月前

PM_Dialog

Sergei Bezroukov嗨

新的无代码软件版本6.380.12.6已经在线发布。现在可以从codeess门户网站下载:

//www.xmece.com/亚博电竞菠菜products/smartbond-codeless-commands

谢谢,PM_Dialog

9个月前

谢尔盖Bezroukov 0点

谢谢对话小组。这个问题解决了。等待I2C问题的解决…

9个月前

PM_Dialog

嗨谢尔盖,

感谢你接受我的回答,很高兴新的CodeLess版本解决了这个问题。关于I2C问题,我会在你的其他论坛帖子中回复你。

谢谢,PM_Dialog