亲爱的对话框,
调整我的最新板批次的结晶后,我发现我是接收lld_sleep_compensate_func ASSERT_WARNING()
//如果此断言命中,则LP ISR持续时间长于时间
//通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留。
If (sleep_lp_cycles && (sleep_lp_cycles < slp_period))
ASSERT_WARNING (0);
我的晶体内件设置为0xFF,最大值/最低频率。该警告消失,当我的值返回到默认0x80的,但我的BLE频率误差较大,在这一点上。我的调谐处理是用频谱分析仪和调整相应地检查BLE频率偏移误差的晶体以最小化误差。
你有什么建议吗?这是硬件设计问题,我应该调查额外的负载电容等采购晶体?我使用的是32MHz的,晶体为6.0pF +/-用10ppm的公差和老化(部件号XRCGB32M000F1H00R0)。
谢谢,
迈克
设备:
嗨mbwjr12,
感谢您在线问题,并欣赏您对我们的BLE解决方案的兴趣。
我建议先检查一下AN-B-075:DA14531硬件指南应用说明,为基于DA14531 SoC的BLE应用提供了最小参考原理图、电路说明和设计指南。雷竞技安卓下载
晶体振荡器的规格请参考3.2.2节及表10。
水晶修剪准则在3.2.2.1节描述。
谢谢,PM_Dialog
你好,对话框,
是的,我在设计时参考了水晶规格和硬件设计指南。我使用了与开发工具包相同的水晶。我遵循了布局指南,移除了水晶垫下面的平面。总的来说,我的设计和预期的一样。
我有几个问题:
谢谢,
迈克
嗨mbwjr12,
很抱歉耽搁了。让我查一下,然后给你答复。
谢谢,PM_Dialog
嗨mbwjr12,
关于具体的警告,这意味着系统花费了太多的睡眠时间,无法按时醒来,所以SDK会警告你。可能和水晶装饰没有关系,所以我想查一下。
如果DA14531是活动的(没有BLE核心活动),也可能发生这种断言,其中中断禁用了中断并唤醒了BLE核心的时间。为此,请在某些时候当LP_Handler禁止中断时,禁用ISR延迟执行(在某些时候启用中断但是处理程序未按时间执行)。其他单词意味着设备睡眠时间长于定义的时间并发生断言。
为了更好地理解这个问题,我在下面提出一些问题:
谢谢,PM_Dialog
你好,
1.我使用的是RCX,没有使用外部LP晶体。
我没有。我对SDK进行了两个修改:
1.检索BLE地址容易我extern'd结构BD_ADDR app_random_addr
2.我修改了arch_system来从配置标志检索默认的水晶修剪值,而不是OTP,如果它不存在,像这样:
CFG_DEFAULT_XTAL32M_TRIM_VALUE是0x80的在默认情况下QFN芯片,它不会导致警告,但在0xFF的它。
3.我不相信我曾经禁止中断。我已经审查我的代码,并没有发现任何直接的,或通过对话API调用的方式在我禁用它们间接的。
4.我已签periph_init。唯一称之为品牌是GPIO_ConfigurePin(lights_init()也只是调用GPIO_ConfigurePin())
5.我使用自定义代码。固件是在一个后期测试版或发布候选阶段,它只是在最近的一批板,这个警告经历了晶体调优。我还没有尝试运行样本代码,如果我有时间,我会研究这个。
如果我不能很容易地解决这个问题,它似乎只要我的最终调谐值保持初始频率偏移误差在75KHz左右,没有修剪太多的晶体导致这个警告,我应该是好的生产。最大BLE误差按照规格是150KHz,这应该给我足够的裕度与+/-10ppm的初始,+/-10ppm的温度,和晶体上的一些老化公差。如果这大约是30ppm的最坏情况,这是~75KHz的额外误差可能在产品的预期寿命。
谢谢,
迈克
嗨迈克,
请从用户指南见第24.1.4 - 链接提供如下:
http://lpccs-docs.dialog-semiconductor.com/UM-B-083/tools/RfMaster.html
然后请使用频谱分析仪,以便您可以决定哪一个是最好的微调值。
之后,您可以更改ARCH_SYSTEM.C文件中的默认值。请检查default_xtal32m_trim_value_qfn和default_xxt32m_trim_value_wlcsp宏,该宏默认为默认修剪值。
在此期间,我会再检查一遍 - 正如我在以前的评论中提到,可能的原因警告是因为系统花费太多时间睡觉,不能够准时醒来。
谢谢,PM_Dialog
我张贴其他人遇到同样问题的最新情况。我把它诊断为坏的结晶:最新的生产试验批次实际上没有使用XRCGB32M000F1H00R0像早期的批次,以及一些可选的结晶用未知特性取代。
使用校准的频率计数器,我能表明它是关闭的52ppm 25℃,并有可能更糟在其他温度。这完全匹配当时我和频谱分析仪(2.402GHz * 52ppm〜125KHz的=误差)看到的错误。它也可能有错误的电容等,当我焊在其位置正确的部分我的问题得到解决。
到目前为止,我还不能在默认修剪0x80的正确晶体上重现这个问题。如果有变化,我将更新这个线程,否则我认为这个问题已经结束了。
嗨mbwjr12,
非常感谢您的意见和指示。这对社区很有帮助。
谢谢,PM_Dialog