我如何配置custom_config_qspii .h给我的电路没有16khz晶体?
在切换到内部晶体之前,系统似乎试图使用16khz晶体。几秒钟后,应用程序关闭与一个“未处理的异常。”因为这个板没有16khz水晶和开发子板做,我假设这是问题。
代码在开发子板上完美工作,但在没有16khz晶体的我的板上失败了。
我已经将这个设置从LP_CLK_32000更改为:
#定义dg_configUSE_LP_CLK LP_CLK_RCX
但问题依然存在。
设备:
嗨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)时钟。
请问你是16KHz还是16MHz?如果你的意思是16KHz,这是不可能实现的,因为LP我们使用32.768KHz的时钟。当系统进入睡眠模式时,LP时钟一直在使用。除了LP之外,您应该有一个系统时钟,该时钟将在设备处于活动模式时运行。系统时钟应该在system_init()函数中定义。
如果您正在使用外部XTAL16:
请检查SDK的pxp_reporter示例中的system_init()函数。如果您不想有一个外部晶体振荡器,您应该用syscclk_rc16替换syscclk_xtal16m。
我强烈建议您看一看图21:DA14682 datasheet的唤醒/通电计时和PMU操作。
谢谢,PM_Dialog
你好,
是的,我用的是16Mhz的主晶体,但没有睡眠晶体。因此,我在配置中指定了这个设置,以使用内部晶体进行睡眠:define dg_configUSE_LP_CLK LP_CLK_RCX。
我使用ble_peripheral示例代码并在我的子开发板和我自己的板上运行它,费力地删除代码片段并将其放回原处,直到我发现在我的板上而不是子板上的特定行中断。我把这句话从永远改成了不等待。
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搞砸吗?
嗨ddustin,
让我检查一下您的问题,我会尽快给您回复。
谢谢,PM_Dialog
嗨ddustin,
OS_TASK_NOTIFY_FOREVER属性将强制底层任务进入BLOCKED状态,只要没有挂起的通知。如果在active模式下没有其他任务,则执行IDLE特殊任务,设备将进入休眠模式。此外,一旦BLE管理器或代码本身发出通知,任务就会立即执行。所以,你的陈述是错误的。
pm_set_sleep_mode(pm_mode_idle)将M0+ Core设置为IDLE状态,仅当没有任何功能需要CPU干扰时。
当芯片处于睡眠模式时,DC-DC将被取消激活,只有ldo上电。请查看DA14682 datasheet中的图11:电源管理单元方框图。只有红块在睡眠模式下才会被激活。绿色方块是根据用户的需求激活/取消激活的。
谢谢,PM_Dialog
好的,很好。
为什么你们提供的例子ble_peripheral, *NOT*有效?我之前描述过这个问题,但我将再描述一次。
当设备执行OS_TASK_NOTIFY_FOREVER操作时,大约3秒后程序会停止。
这可以通过将睡眠模式更改为pm_mode_idle来解决。
其他睡眠模式不起作用。为什么它们不起作用?我们如何调查为什么它们不起作用?
请帮助。告诉我我的陈述是错误的是没有用的!!请告诉我如何调查这个问题!
嗨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中。所以,我的建议是审查一下你自己的董事会。
你可以阅读应用说明:DA1468x应用硬件设计指南从我们的支持门户,以找到硬件设计指南,将帮助您审查您的原理图和PCB。如果你能分享你的原理图和pcb,我很乐意给你看看。
谢谢,PM_Dialog