亲爱的对话框,
在我最新批次的电路板上调整水晶后,我发现我在lld_sleep_compensate_func()中收到了assert_warning
// If this Assertion hits then the LP ISR lasts longer than the time
//已通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留。
if(sleep_lp_cycles &&(sleep_lp_cycles
我的水晶饰边设置为0xFF,最大值/最低频率。当我将值返回到默认值0x80时,警告会消失,但是在该点处的BLE频率误差更大。我的调整过程是用频谱分析仪检查BLE频率偏移误差,并相应地调整晶体以最小化误差。
你有什么建议吗?这是一个硬件设计问题,我应该调查用额外的负载电容等购买晶体吗?我使用32MHz,6PF晶体,具有+/- 10ppm公差和老化(XRCGB32M000F1H00R0)。
Thanks,
麦克风
设备:
嗨mbwjr12,
感谢您在线问题,并欣赏您对我们的BLE解决方案的兴趣。
我建议首先检查AN-B-075:DA14531硬件指南应用笔记,提供了基于DA14531 SOC的最小参考原理图,电路解释和设计指南。亚博国际官网平台网址
关于晶体振荡器规格,请参阅第3.2.2节和表10。
Crystal Trimming指南在第3.2.2.1节中描述。
谢谢,PM_DIALOG.
你好对话框,
是的,我在设计中提到了Crystal Specs和硬件设计指南。我用完全相同的水晶作为devkit。我遵循了布局指南,并从水晶垫下方移除了平面。一般来说,我的设计正如预期的那样。
我有几个问题:
Thanks,
麦克风
嗨mbwjr12,
为延迟道歉。让我检查一下,我会回复你。
谢谢,PM_DIALOG.
嗨mbwjr12,
关于具体警告,这意味着系统花费太多时间睡眠,无法按时醒来,因此SDK警告您。可能它可能与水晶修剪有关,所以我想退房。
This assertion can also occur if the DA14531 is active (no BLE core active) with the interrupts disabled and its time for BLE core to wake up. To do so, at some point when it’s time for the LP_Handler to execute since the interrupts are disabled the ISR delays execution (at some point the interrupts are enabled but the Handler isn't executed on time). With other words that means that the device was sleeping longer than the time defined and the ASSERTION will occur.
我在一些问题下面才能理解更好的问题:
谢谢,PM_DIALOG.
你好,
1.我使用RCX,没有使用外部LP晶体。
2。I have not. I have made two modifications to the SDK:
1.轻松检索BLE地址I Extern'D STRUCT BD_ADDR APP_RANDOM_ADDR
2.如果不存在,我修改了Arch_System以从Config标志而不是OTP检索默认的Cryst Carrim值,如下所示:
CFG_Default_XtAl32M_Trim_Value为默认情况下为QFN芯片为0x80,不会导致警告,但它在0xFF时。
我不相信我禁止中断。我已审核了我的代码,并且通过对话框API调用没有发现或间接地发现,我禁用它们的方式。
我已经检查过periph_init。它的唯一调用是gpio_configurepin(lights_init()也只打电话给gpio_configurepin())
我正在使用自定义代码。固件处于延迟测试版或发布候选阶段,只有最近的批次批次,即晶体调整经历了此警告。如果我有时间,我还没有尝试运行示例代码我会调查这个问题。
如果我不能轻易解决这个问题,似乎只要我的最终调谐值保持在大约75kHz内的初始频率偏移误差,而无需修剪晶体即可导致此警告即可,我应该良好的生产。MAX BLE错误按照规格为150kHz,这应该给我充足的余量,+/- 10ppm初始,+/- 10ppm温度,以及晶体上的一些老化容差。如果这是大约30ppm的总数最坏情况,则可以在产品的预期寿命中获得〜75khz的额外误差。
Thanks,
麦克风
嗨迈克,
请参阅“用户指南”中的24.1.4节 - 链接提供如下:
http://lpccs-docs.dialog-seminiondiond.com/um-b-083/tools/rfmaster.html.
然后请使用Spectrum Analyzer,以便您可以决定哪个是最佳修剪值。
之后,您可以更改ARCH_SYSTEM.C文件中的默认值。请检查default_xtal32m_trim_value_qfn和default_xxt32m_trim_value_wlcsp宏,该宏默认为默认修剪值。
与此同时,我会再次检查它 - 如我之前的评论中所提到的那样,这个警告的可能原因是因为系统花了太多时间睡觉,并且无法按时醒来。
谢谢,PM_DIALOG.
我正在发布遇到同样问题的其他人的更新。我将其诊断为一个糟糕的晶体:最新的生产测试批次实际上没有使用XRCGB32M000F1H00R0,如较早的批次,并且一些替代的晶体被替换为未知的特性。
使用校准的频率计数器,我能够在25℃下达到52ppm,并且在其他温度下可能更糟。这与我使用Spectrum Analyzer(2.402GHz * 52ppm〜= 125khz错误)完全相匹配。它也可能存在错误的电容等。当我在其位置焊接正确的部分时,我的问题得到了解决。
到目前为止,我无法在0x80的默认修剪中使用正确的水晶来重现此问题。如果该更改,我会更新此线程,但否则我认为此问题已关闭。
嗨mbwjr12,
非常感谢您的评论和指示。对社区非常有帮助。
谢谢,PM_DIALOG.