⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8个帖子/ 0新
最后一篇
佛罗伦特
离线
最后一次露面:3年6个月前
加入:2017-08-08 11:42
da 14580调试模式到自主

嗨对话框,

我目前正在研究一个使用DA 14580的项目。我的系统的目标简单:我通过SPI链接发送数据(20个八位字节的数据包)到DA14580。然后我使用信标模式发送此数据(将数据从广告字符串中的SPI放置),我可以通过移动电话的蓝牙扫描仪接收所有数据。我在IAR上为全局代码(从传感器收集数据并将其发送到SPI Flash链接),我通过SPI在代码的开头加载了蓝牙配置的二进制文件。当我在UVION上构建我的蓝牙程序时,将创建二进制文件(我使用对对象模式的对话框半导体提供基本程序)。yabo国际娱乐

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

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

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

此致,
佛罗伦特

关键词:
设备:
mhv_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2013-12-06 15:10
嗨佛罗伦特,

嗨佛罗伦特,

这似乎是睡眠模式问题。作为一个实验,要么确认或统治它,请在您的DA14580固件中禁用睡眠,让我知道这是否有效。

另外,请告诉我以下内容:

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

/ mhv.

佛罗伦特
离线
最后一次露面:3年6个月前
加入:2017-08-08 11:42
嗨对话框,

嗨对话框,

在一些测试之后,我看到这个问题有点不同。实际上,我只是只发送一个数据(每次发送一个+我只通过BLE扫描仪收到第一个数据),然后将BLE模块似乎卡住了一个数据。

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

问候,
佛罗伦特

mhv_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2013-12-06 15:10
嗨佛罗伦特,

嗨佛罗伦特,

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

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

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

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

/ mhv.

佛罗伦特
离线
最后一次露面:3年6个月前
加入:2017-08-08 11:42
嗨对话框,

嗨对话框,

因此,如果我理解嗯,可以在调试中转到睡眠模式。看起来很奇怪,因为我在调试时,我在U-Processor上运行代码,在输入链接器中有一个二进制文件(在IAR上)。所以我没有真正运行/调试BLE模块,我只是加载这个二进制文件,只在我的程序开始时只使用一次,以通过SPI初始化BLE模块。

因此,如果睡眠模式在调试中不起作用,当我摇动电路板时,我如何在智能手机BLE扫描仪上接收值(我有一个加速度计,它在检测到振动时发送信号,并且然后我发送一些数据,这个GPIO信号在调试模式下用中断唤醒BLE模块?

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

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

mhv_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2013-12-06 15:10
嗨佛罗伦特,

嗨佛罗伦特,

让我们退一步一点:-)

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

您可以在睡眠模式下使用调试器,但设备实际上不会睡眠状态(因为这会将调试器除以控制器电源关闭)。

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

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

/ mhv.

佛罗伦特
离线
最后一次露面:3年6个月前
加入:2017-08-08 11:42
嗨对话框,

嗨对话框,

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

因此,每次我都想测试我的一个BLE代码,我在U-Vision上编译了BLE代码,它创建了一个二进制文件,然后我通过ADUCM3029的代码链接了这一点,然后我调试ADUCM3029用SWD。

所以问题是,当我没有将J-Link模块连接到微处理器的其余部分时,DA14580只发送一个数据,然后再睡觉一次(我用LED调试它)。

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

mhv_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2013-12-06 15:10
嗨佛罗伦特,

嗨佛罗伦特,

谢谢你的详细解释。

这是要调查的东西列表:

  1. 您的唤醒方案必须利用唤醒定时器硬件块,以便从睡眠中唤醒设备。标准的GPIO中断将不起作用,除非它发生在DA14580唤醒时(启动后2秒钟仍然令人醒着,并将唤醒任何蓝牙事件,这可能解释了它为什么运转一次)。有关详细信息,请参阅UM-B-051第10.7节。
  2. 从睡眠中醒来需要一些时间,你应该实现某种握手或固定延迟,以确保在开始发送数据之前完全初始化DA14580上的SPI接口。
  3. 当主处理器附加到调试器时,我无法解释为什么您的观察结果不同,但这可以指示上面的子弹2的时间问题和潜在的空位

/ mhv.