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

嗨对话框,

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

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

系统这样工作:
微控制器唤醒BLE模块,并对BLE模块进行初始化。当微控制器准备发送数据时,它向BLE模块发送唤醒信号,BLE模块启动他的配置。微控制器通过SPI flash将数据发送到BLE模块。BLE模块通过信标模式发送数据,完成后进入休眠状态。

那么我想知道的是调试模式和自主模式之间的区别是什么?
有任何解决的办法告诉我。

最好的问候,
弗洛伦特·

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

嗨佛罗伦特,

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

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

  1. 你使用的是哪种睡眠模式(深度睡眠还是长时间睡眠)?
  2. 当你说“调试模式”......你的意思是与J-Link附加?
  3. 你的唤醒机制——它是否使用了唤醒计时器?(一个“正常的”gpio中断将不会在睡眠期间工作)
  4. 你在描述中用了"SPI flash"这个词。我能假设你想说的是SPI接口,而不是flash吗?

/ MHv

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

嗨对话框,

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

我使用延长睡眠。
2.是,调试模式是当我使用IAR使用J-Link模块运行代码时。
3.我的唤醒机制是外部唤醒,我使用的微控制器在我想要发送一个数据包时发送一个信号(SYS_WAKEUP), BLE模块在接收到来自微控制器的信号时发生中断。但是有了这个设备,它在“调试”模式下工作得很完美,而且似乎在没有“调试”模式的情况下至少可以工作一次。
4.是的,我想说SPI接口,抱歉。

问候,
弗洛伦特·

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

嗨佛罗伦特,

当您使用调试器时,您实际上永远不会进入睡眠状态(真正的睡眠模式会关闭DA14580中的控制器,因此在启用睡眠时不可能进行调试)。当你自动运行代码时,就像你说的,设备会在代码开始执行后保持清醒2秒,这就是为什么你会在设备进入睡眠前看到一两个广告。

你的实现需要两件事来处理扩展睡眠模式:

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

如果有什么有用的就告诉我。

/ MHv

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

嗨对话框,

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

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

此外,你告诉我使用唤醒定时器,这意味着我可以真正控制当我发送数据与我的u处理器,因为震动将不会有效,因为gpio信号?

谢谢你的帮助,
最好的问候,
弗洛伦特·

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

嗨佛罗伦特,

让我们退一步说:-)

请详细解释调试模式的含义。您是否正在使用DA14580 (J-Link)上的串行调试器,如果是,是否附加了调试器?

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

为了在没有附加调试器的情况下使用睡眠模式,您需要像上面描述的那样配置睡眠时钟以匹配您的硬件。否则设备将无法从睡眠中醒来。

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

/ MHv

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

嗨对话框,

通过调试模式,我的意思是:我在我的微处理器(ADUCM3029)上使用一个SWD,这个微处理器只是通过SPI链接将一些数据发送到BLE模块。这个微处理器也有一个二进制文件作为输入,这是BLE模块的配置,并发送这个配置在最开始的代码。所以没有,DA14580没有附在J-link模块上,我只是用微处理器上的SWD把包一步一步地发送到BLE模块。

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

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

所以外部唤醒起作用了,但只有一次。
谢谢,
弗洛伦特·

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

嗨佛罗伦特,

谢谢你的详细解释。

这是要调查的东西列表:

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

/ MHv