⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
7个职位/ 0个新职位
最后发表
ddustin
离线
最后看到:1年4个月前
加入:2016-04-20二二12
没有16Khz晶体配置

我如何配置custom_config_qspi.h给定我的电路没有16khz晶体?

该系统似乎试图使用16khz晶体之前切换到内部晶体。几秒钟后,应用程序以一个“未处理的异常”关闭。自从这个板没有16khz水晶和发展的女儿板做,我假设这是问题。

代码在开发的女儿板上完美地工作,但失败在我的板上没有16khz水晶。

我将这个设置从LP_CLK_32000更改为:

#定义dg_configUSE_LP_CLK LP_CLK_RCX

但问题依然存在。

设备:
PM_Dialog
离线
最后看到:5天6小时前
工作人员
加入:2018-02-08 11:03
嗨ddustin,

嗨ddustin,

我认为你已经创建了一个类似的论坛帖子如下:

https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-hardware-device-reference-designs/chip-seemingly

在custom_config_qspi.h中,您可以定义系统的低功耗(LP)时钟。

  • define dg_configUSE_LP_CLK LP_CLK_32768: Using an externa XTAL32K crystal振荡器,这是SDK示例的默认选项
  • define dg_configUSE_LP_CLK LP_CLK_RCX:使用内部RCX
  • 定义dg_configUSE_LP_CLK LP_CLK_32000: Using an external digital wave generator

你能说清楚你是16KHz还是16MHz吗?如果你指的是16KHz,这是不可能实现的,因为对于LP,我们使用的时钟在32.768KHz。当系统进入睡眠模式时,LP时钟一直在使用。除了LP之外,您应该有一个系统时钟,该时钟将在设备处于活动模式时运行。系统时钟应该在system_init()函数中定义。

如果您正在使用外部XTAL16:

  • cm_sys_clk_init (sysclk_XTAL16M);
  • cm_sys_clk_set (sysclk_XTAL16M);

请检查SDK中pxp_reporter示例中的system_init()函数。如果您不想有一个外部晶体振荡器,您应该用syclk_rc16替换syclk_xtal16m。

我强烈建议您查看图21:DA14682 datasheet的Wake/Power-Up时序和PMU操作。

谢谢,PM_Dialog

ddustin
离线
最后看到:1年4个月前
加入:2016-04-20二二12
你好,

你好,

啊,是的,我用的是16Mhz的主晶体,但没有睡眠晶体。因此,我在配置中指定了这个设置,以使用内部晶体进行睡眠:定义dg_configUSE_LP_CLK LP_CLK_RCX。

我使用ble_peripheral示例代码,并在子开发板和我自己的板上运行它,煞费苦心地删除代码片段并将它们放回去,直到我发现在我的板上中断的特定行,而不是子板。我把“永远”改成了“NOWAIT”。

ret = OS_TASK_NOTIFY_WAIT(0, OS_TASK_NOTIFY_ALL_BITS, ¬if, OS_TASK_NOTIFY_NO_WAIT);

// ret = OS_TASK_NOTIFY_WAIT(0, OS_TASK_NOTIFY_ALL_BITS, ¬if, OS_TASK_NOTIFY_FOREVER);

这似乎纠正了问题(尽管浪费了大量的循环)。我相信这暗示了睡眠在我的董事会是失败的。同样,将睡眠模式改为空闲而不是延长睡眠可以解决这个问题。这会浪费多少能量?

pm_set_sleep_mode (pm_mode_idle);

/ / pm_set_sleep_mode (pm_mode_extended_sleep);

进一步诊断的最好方法是什么?是否可能这个特定的芯片有一个错误的内部晶体-如果是,我将如何检查?

谢谢你的帮助。

编辑:从视觉上比较子板和我的板——最大的区别是L1感应器的大小。我在电路板上使用了一个体积小得多的感应器。有没有可能在设备睡着的时候把DC-DC搞砸?

PM_Dialog
离线
最后看到:5天6小时前
工作人员
加入:2018-02-08 11:03
嗨ddustin,

嗨ddustin,

让我查一下您的问题,然后尽快给您答复。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:5天6小时前
工作人员
加入:2018-02-08 11:03
嗨ddustin,

嗨ddustin,

OS_TASK_NOTIFY_FOREVER属性,只要没有挂起的通知,就会强制底层任务进入BLOCKED状态。如果在active模式下没有其他任务,则会执行IDLE的特殊任务,设备进入休眠模式。此外,只要BLE管理器或代码本身发出通知,任务就会立即执行。所以,你的陈述是错误的。

pm_set_sleep_mode(pm_mode_idle)只在没有任何功能需要CPU干扰时才会将M0+ Core设置为IDLE状态。

当芯片处于休眠模式时,DC-DC将被停用,只有ldo上电。请查看DA14682 datasheet中的Power management unit框图11。只有红牛在睡眠模式下被激活。绿色块是根据用户需求激活/关闭的。

谢谢,PM_Dialog

ddustin
离线
最后看到:1年4个月前
加入:2016-04-20二二12
好的,很好。

好的,很好。

现在为什么你们提供的例子ble_peripheral, *NOT*工作?我之前描述过这个问题,但我将再描述一遍。

当设备输入OS_TASK_NOTIFY_FOREVER时,程序暂停约3秒。

这可以通过将睡眠模式更改为pm_mode_idle来解决。

其他的睡眠模式不起作用。为什么它们不起作用?我们如何调查它们为什么不起作用?

请帮助。告诉我我的陈述是错误的是没有帮助的!!请告诉我如何调查这个问题!

PM_Dialog
离线
最后看到:5天6小时前
工作人员
加入:2018-02-08 11:03
嗨ddustin,

嗨ddustin,

我在Pro-DK中运行了SDK1.0.14.1081的ble_peripheral示例,并启用了内部RCX,它工作得很完美。SDK的默认示例是完全功能的。你也可以在Pro-DK中澄清它,并在干净的SDK路径中使用ble_peripheral项目而无需任何修改。只需将dg_configUSE_LP_CLK宏从LP_CLK_32768修改为LP_CLK_RCX即可。此外,我建议您运行相同的项目,只有上述修改在您的自定义板。如果它在Pro-Dk中工作,而不是在您的自定义板中,这意味着这是您的自定义板上的硬件问题,而不是DA14682 SoC。所以,我的建议是审查你自己的董事会。

你可以读AN-B-061应用注:DA1468x应用硬件设计指南,以查找硬件设计指南,帮助您查看原理图和PCB。如果你能分享你的原理图和pcb,我将非常乐意审查他们。

谢谢,PM_Dialog