水晶装饰和lld睡眠补偿功能警告

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
9个帖子/ 0新
最后一篇
mbwjr12
离线
最后一次露面:7个月2个星期前
加入:2015年11月5日18:33
水晶装饰和lld睡眠补偿功能警告

亲爱的对话,

调整我的最新板批次的结晶后,我发现我是接收lld_sleep_compensate_func ASSERT_WARNING()

//如果此断言命中,则LP ISR的持续时间将长于此时间
//已通过LP_ISR_TIME_XTAL32_CYCLES和LP_ISR_TIME_USEC保留。
if(sleep_lp_cycles &&(sleep_lp_cycles assert_warning(0);

我的晶体内件设置为0xFF,最大值/最低频率。该警告消失,当我的值返回到默认0x80的,但我的BLE频率误差较大,在这一点上。我的调谐处理是用频谱分析仪和调整相应地检查BLE频率偏移误差的晶体以最小化误差。

你有什么建议吗?这是硬件设计问题,我应该调查额外的负载电容等采购晶体?我使用的是32MHz的,晶体为6.0pF +/-用10ppm的公差和老化(部件号XRCGB32M000F1H00R0)。

谢谢

麦克风

设备:
PM_DIALOG.
离线
最后一次露面:2天7小时前
职员
加入:2018-02-08 11:03
嗨mbwjr12,

嗨mbwjr12,

感谢您的在线的问题,对我们的解决方案BLE你的兴趣。

我建议首先检查AN-B-075:DA14531硬件指南应用笔记,提供了基于DA14531 SOC的最小参考原理图,电路解释和设计指南。雷竞技安卓下载

关于晶体振荡器规格,请参阅第3.2.2节和表10。

水晶修剪准则在3.2.2.1节描述。

谢谢,PM_DIALOG.

mbwjr12
离线
最后一次露面:7个月2个星期前
加入:2015年11月5日18:33
你好对话框,

你好对话框,

是的,我在设计中提到了Crystal Specs和硬件设计指南。我用完全相同的水晶作为devkit。我遵循了布局指南,并从水晶垫下方移除了平面。一般来说,我的设计正如预期的那样。

我有几个问题:

  • 造成这个问题的机制是什么,是不是因为32MHz的晶振需要更长的时间比预期开始从设置调整寄存器为0xFF增加电容?
  • 这是什么条件导致警告的影响?例如,如果我是使用PLT和它校准我的一些晶体,使得这些板经历了这一点,它会产生什么影响?我需要防止这种在生产中发生了什么?
  • 如果遵循硬件设计指南,对话框半是否有关于解决此问题的建议?例如,我应该尝试7PF水晶吗?
  • 是BLE频率误差的源极,仅通过晶体的准确性决定?如果我在32MHz的理论上有一个理论上完美的水晶,我的频率误差是否为0,或者系统中有其他错误源吗?

谢谢

麦克风

PM_DIALOG.
离线
最后一次露面:2天7小时前
职员
加入:2018-02-08 11:03
嗨mbwjr12,

嗨mbwjr12,

为延迟道歉。让我检查一下,我会回复你。

谢谢,PM_DIALOG.

PM_DIALOG.
离线
最后一次露面:2天7小时前
职员
加入:2018-02-08 11:03
嗨mbwjr12,

嗨mbwjr12,

关于具体警告,这意味着系统花费太多时间睡眠,无法按时醒来,因此SDK警告您。可能它可能与水晶修剪有关,所以我想退房。

如果DA14531处于活动状态(没有BLE核心处于活动状态),且中断被禁用,并且BLE核心唤醒的时间已到,则也会发生此断言。为此,当LP_处理程序由于中断被禁用而需要执行时,ISR会延迟执行(在某些时候,中断被启用,但处理程序没有按时执行)。换句话说,这意味着设备的睡眠时间超过了定义的时间,断言将发生。

我在一些问题下面才能理解更好的问题:

  1. 您是否使用RCX或外部晶体振荡器作为低功耗时钟?
  2. 你已经修改了BLE_WAKEUP_LP_Handler或任何SDK文件?
  3. 能否请检查您是否手动禁用在你的代码的任何部分中断?
  4. 此外,您可以请检查您是否在延迟系统periph_init()有一个代码段?该periph_init()将在每个醒来执行,因此,如果你有一些代码延迟系统,这也将延迟唤醒。
  5. 您是否使用了自定义代码或任何SDK例子吗?可这种行为与任何SDK中的例子被复制?

谢谢,PM_DIALOG.

mbwjr12
离线
最后一次露面:7个月2个星期前
加入:2015年11月5日18:33
你好,

你好,

1.我使用RCX,没有使用外部LP晶体。

2.我没有。我对SDK做了两个修改:

1.检索BLE地址容易我extern'd结构BD_ADDR app_random_addr

2.如果不存在,我修改了Arch_System以从Config标志而不是OTP检索默认的Cryst Carrim值,如下所示:

#if定义(__da14531__)+#ifdef cfg_default_xtal32m_trim_value ^ m +#define default_xtal32m_trim_value_qfn(cfg_default_xtal32m_trim_value)+#define default_xtal32m_trim_value_wlcsp(cfg_default_xtal32m_trim_value)+#else

CFG_DEFAULT_XTAL32M_TRIM_VALUE是0x80的在默认情况下QFN芯片,它不会导致警告,但在0xFF的它。

3.我不相信我曾经禁止中断。我已经审查我的代码,并没有发现任何直接的,或通过对话API调用的方式在我禁用它们间接的。

4.我已签periph_init。唯一称之为品牌是GPIO_ConfigurePin(lights_init()也只是调用GPIO_ConfigurePin())

空隙set_pad_functions(无效)//组GPIO端口功能模式{GPIO_ConfigurePin(CLIP_SWITCH_PORT,CLIP_SWITCH_PIN,INPUT,PID_GPIO,FALSE);GPIO_ConfigurePin(CLIP_TEMP_SENSOR_EN_PORT,CLIP_TEMP_SENSOR_EN_PIN,OUTPUT PID_GPIO,FALSE);GPIO_ConfigurePin(CLIP_TEMP_SENSOR_PORT,CLIP_TEMP_SENSOR_PIN,INPUT,PID_ADC,FALSE);}空隙periph_init(无效)//集I2C,SPI,UART,UART2串行CLKS {#如果定义(__DA14531__)//禁用HW复位P0_0 GPIO_Disable_HW_Reset()的功能;//在升压模式下使DCDC变换器供给VBAT_HIGH为使用的GPIO syscntl_dcdc_turn_on_in_boost(SYSCNTL_DCDC_LEVEL_3V0);的#else //上电外设功率域SetBits16(PMU_CTRL_REG,PERIPH_SLEEP,0);而((GetWord16(SYS_STAT_REG)PER_IS_UP)!);SetBits16(CLK_16M_REG,XTAL16_BIAS_SH_ENABLE,1);#ENDIF // ROM补丁patch_func();//设置垫功能set_pad_functions(); lights_init(); // Enable the pads GPIO_set_pad_latch_en(true); }

我正在使用自定义代码。固件处于延迟测试版或发布候选阶段,只有最近的批次批次,即晶体调整经历了此警告。如果我有时间,我还没有尝试运行示例代码我会调查这个问题。

如果我不能轻易解决这个问题,似乎只要我的最终调谐值保持在大约75kHz内的初始频率偏移误差,而无需修剪晶体即可导致此警告即可,我应该良好的生产。MAX BLE错误按照规格为150kHz,这应该给我充足的余量,+/- 10ppm初始,+/- 10ppm温度,以及晶体上的一些老化容差。如果这是大约30ppm的总数最坏情况,则可以在产品的预期寿命中获得〜75khz的额外误差。

谢谢

麦克风

PM_DIALOG.
离线
最后一次露面:2天7小时前
职员
加入:2018-02-08 11:03
嗨麦克,

嗨麦克,

  1. 您可以使用下载SDK内的生产测试固件(6.0.14.1114 \ Projects \ target_apps \ prod_test \ prod_test),并使用RF主机进行水晶修剪。

请从用户指南见第24.1.4 - 链接提供如下:

http://lpccs-docs.dialog-semiconductor.com/UM-B-083/tools/RfMaster.html

然后请使用Spectrum Analyzer,以便您可以决定哪个是最佳修剪值。

在此之后,您可以更改arch_system.c文件中的默认值。请检查其持有的默认值微调和DEFAULT_XTAL32M_TRIM_VALUE_QFN宏观DEFAULT_XTAL32M_TRIM_VALUE_WLCSP。

  1. 如果您可以运行任何SDK示例,则会很好,以检查是否可以复制此项。请默认情况下,您拥有修剪值。

在此期间,我会再检查一遍 - 正如我在以前的评论中提到,可能的原因警告是因为系统花费太多时间睡觉,不能够准时醒来。

谢谢,PM_DIALOG.

mbwjr12
离线
最后一次露面:7个月2个星期前
加入:2015年11月5日18:33
我正在为您发布更新

我张贴其他人遇到同样问题的最新情况。我把它诊断为坏的结晶:最新的生产试验批次实际上没有使用XRCGB32M000F1H00R0像早期的批次,以及一些可选的结晶用未知特性取代。

使用校准的频率计数器,我能表明它是关闭的52ppm 25℃,并有可能更糟在其他温度。这完全匹配当时我和频谱分析仪(2.402GHz * 52ppm〜125KHz的=误差)看到的错误。它也可能有错误的电容等,当我焊在其位置正确的部分我的问题得到解决。

到目前为止,我无法在0x80的默认修剪中使用正确的水晶来重现此问题。如果该更改,我会更新此线程,但否则我认为此问题已关闭。

PM_DIALOG.
离线
最后一次露面:2天7小时前
职员
加入:2018-02-08 11:03
嗨mbwjr12,

嗨mbwjr12,

非常感谢您的评论和指示。对社区非常有帮助。

谢谢,PM_DIALOG.