da 14580调试模式到自主

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
8个帖子/ 0新
最后发表
弗洛伦特·
离线
最后看到:3年7个月前
加入:2017-08-08 11:42
da 14580调试模式到自主

嗨,对话框中,

我目前正在做一个项目,使用DA 14580。我的系统的目标很简单:我通过一个到DA14580的SPI链接发送数据(20个字节的数据包)。然后,我使用信标模式发送此数据(将来自SPI的数据读取到广告字符串中),我能够通过我的移动电话的蓝牙扫描仪接收所有这些数据。我为全局代码(从传感器收集数据并将它们发送到SPI flash链接)工作在IAR上,我通过SPI在代码的开始加载蓝牙配置的二进制文件。二进制文件是当我在U vision上构建我的蓝牙程序时创建的(我使用Dialog Semiconductor为信标模式提供的基本程序)。yabo国际娱乐

我的问题是系统在调试模式下正常工作。因此,当我使用IAR启动系统时,BLE模块正确启动并正确发送数据。但是当我尝试在没有调试模式的情况下进行时,它不起作用。我重置系统,因此代码开始从开头运行,但BLE模块不会发送任何数据。

这个系统是这样工作的:
微控制器唤醒,并初始化BLE模块。当微控制器已准备好发送数据时,它将唤醒信号发送到BLE模块,启动其配置。然后微控制器通过SPI闪光灯将数据发送到BLE模块。然后BLE模块通过信标模式发送数据,并在完成时睡眠。

我想知道的是调试模式和自治模式之间的区别是什么?
解决这个问题的任何想法让我知道。

此致,
佛罗伦特

关键词:
设备:
MHv_Dialog
离线
最后看到:3个月2周前
工作人员
加入:2013-12-06 15:10
嗨,小马,

嗨,小马,

这似乎是睡眠模式的问题。作为一个实验,要确认或排除这一点,请禁用DA14580固件中的睡眠,并让我知道这是否有效。

也请告诉我以下信息:

  1. 您使用哪种类型的睡眠模式(深睡眠或延长睡眠)?
  2. 当你说“调试模式”…你是说附加J-Link吗?
  3. 你的唤醒机制 -​​ 它是使用唤醒定时器吗?(“正常”GPIO中断在睡眠期间不会工作)
  4. 您在描述中使用短语“SPI Flash”。我可以假设你的意思是说SPI接口,没有涉及的闪存?

/ mhv.

弗洛伦特·
离线
最后看到:3年7个月前
加入:2017-08-08 11:42
嗨,对话框中,

嗨,对话框中,

经过一些测试,我发现问题有点不同。实际上,我只发送一个数据(确保我把一个LED每次我发送一个+我只接收第一个数据通过BLE扫描仪),然后BLE模块似乎卡住了。

1.我使用延长睡眠时间。
2.是的,调试模式是当我用IAR运行J-Link模块的代码时。
3.我的唤醒机制是一个外部唤醒,微控制器我使用时发送信号(sys_wakeup),当我想发送数据包时,在从微控制器接收信号时,BLE模块存在中断.但是在使用此设备时,它在“调试”中完美地工作,似乎至少有一次没有“调试”模式。
是的,我想说SPI接口抱歉。

问候,
佛罗伦特

MHv_Dialog
离线
最后看到:3个月2周前
工作人员
加入:2013-12-06 15:10
嗨,小马,

嗨,小马,

当您使用调试器时,您真的永远不会睡眠状态(真实的睡眠模式在DA14580中关闭控制器,因此在启用睡眠时不可能调试)。正如您所说,当您自动运行代码时,代码开始执行后,设备将保持令人醒着,这就是为什么在设备睡眠之前看到一个或两个广告的原因。

使用扩展睡眠模式工作需要两件事:

  1. 您必须定义一个睡眠时钟来匹配您的硬件。如果你有一个外部32k768Hz的晶体,那么这应该马上工作。如果没有外部晶体,必须在da1458x_config_advanced.h(第28行)文件中将CFG_LP_CLK定义为LP_CLK_RCX20。
  2. 在睡眠期间,普通的GPIO中断不会触发唤醒。您将不得不使用唤醒定时器(有关详细信息,请参阅“UM-B-051第10.7节”)

如果有这些帮助,请告诉我。

/ mhv.

弗洛伦特·
离线
最后看到:3年7个月前
加入:2017-08-08 11:42
嗨,对话框中,

嗨,对话框中,

所以如果我理解得很好,在调试中是不可能进入睡眠模式的。这似乎很奇怪,因为当我在调试,我运行在u-处理器上有一个二进制文件输入链接器(在IAR)的代码。所以我并没有真正运行/调试BLE模块,我只是在我的程序开始时加载这个二进制文件,它只使用了一次,通过SPI初始化BLE模块。

如果睡眠模式并不在调试工作,我怎么可能是管理我的智能手机上接收的值BLE扫描仪当我摇板(我有一个加速度计发出一个信号尽管GPIO当它检测到振动,然后我发送一些数据,这GPIO信号醒来BLE模块interuption)在调试模式?

而且,你告诉我使用唤醒定时器,所以这意味着我可以真正控制我用我的U-processor发送数据时,导致摇动不会有效,原因是GPIO信号?

谢谢你的帮助,
此致,
佛罗伦特

MHv_Dialog
离线
最后看到:3个月2周前
工作人员
加入:2013-12-06 15:10
嗨,小马,

嗨,小马,

让我们退一步一点:-)

请详细解释您的调试模式。您是否使用DA14580(J-Link)上的串行推控器,或者您不是,如果是的话,则是调试器附加的吗?

您可以在睡眠模式下使用调试器,但设备不会真正进入睡眠状态(因为这会在控制器关机时解除调试器的连接)。

为了在没有安装调试器的情况下使用睡眠模式,您需要将睡眠时钟配置为匹配您的硬件,如上所述。否则设备不会从睡眠中醒来。

唤醒定时器实际上是设备上的硬件块,允许您在输入GPIO更改状态时从睡眠模式唤醒控制器。有关详细信息,请参阅参考手册(UM-B-051)。一旦您的加速度计切换其中断输出引脚/引脚,这将允许您唤醒DA14580。

/ mhv.

弗洛伦特·
离线
最后看到:3年7个月前
加入:2017-08-08 11:42
嗨,对话框中,

嗨,对话框中,

通过调试模式我的意思是:我在Micro-Processor(ADUCM3029)上使用SWD,并且该微处理器通过SPI链路将一些数据发送到BLE模块。该微处理器还具有作为输入的二进制文件,该文件是BLE模块的配置,并在代码的开始时发送此配置。所以否,DA14580未附加到J-Link模块,我刚刚在微处理器上使用SWD来向BLE模块向数据包发送步骤。

所以每次我想测试我的一个BLE代码,我在u-vision上编译BLE代码,它创建一个二进制文件,然后我通过AIR链接这个ADUCM3029的代码,然后我用SWD调试ADUCM3029。

所以问题是,当我不连接J-link模块到微处理器的其余部分时,DA14580只发送一个数据,并且休眠一次(我用LED调试它)。

所以外部唤醒正在工作,但只有一次。
谢谢,
佛罗伦特

MHv_Dialog
离线
最后看到:3个月2周前
工作人员
加入:2013-12-06 15:10
嗨,小马,

嗨,小马,

谢谢详细的解释。

以下是一些值得关注的事情:

  1. 唤醒方案必须利用唤醒计时器硬件块,以便将设备从睡眠中唤醒。一个标准的GPIO中断将不会工作,除非它发生在DA14580是清醒的(它保持清醒2秒后启动,将唤醒任何蓝牙事件,这可能解释了为什么它工作一次)。详见UM-B-051第10.7节。
  2. 从睡眠中醒来需要一些时间,您应该实现某种握手或固定的延迟,以确保在开始发送数据之前,DA14580上的SPI接口已完全初始化。
  3. 我无法解释为什么当主机处理器连接到调试器时,你的观察结果会不同,但这可能表明时间问题,并可能像上面的第2条那样

/ mhv.