SX126x-时钟模块介绍

目录

1 前言

2 内部RC振荡器

3 外部时钟源

3.1 Crystal方案

1)电路图设计

2)内部可编程电容

3.2 TCXO方案

1)电路图设计

2)内部可编程电容

3)DIO3作为TCXO电源

4 Crystal和TCXO方案比较


1 前言

        选择合适的晶振对于射频芯片是十分重要的,本文主要介绍了SX126x芯片的时钟模块,主要包括2个内部的RC和一个外部的晶振,详细介绍了各自的作用,以及不同晶振方案的对比。

2 内部RC振荡器

        内部包含2个RC振荡器,直接由VBAT供电:64Khz RC 和13Mhz RC:

  • RC64K 用于内部定时器功能,比如在RxDuty模式下,周期执行Rx-Sleep,或者用于发送/接收超时判定
  • RC13M 用于SPI接口

3 外部时钟源

        射频收发器通常需要一个外部时钟参考,以便为射频和数字操作产生高频时钟。除了自身的RC,外部还需要一个晶振,它被用作锁相环频率合成的参考,并作为所有数字处理的时钟信号。

  • 在设计上兼容Crystal和TCXO两种方案

3.1 Crystal方案

1)电路图设计

        外部采用32Mhz晶振,两端连接到引脚XTA和XTB上

2)内部可编程电容

        SX126x不需要用户在32 MHz时钟的XTAL上设置外部脚电容,该设备配备了内部可编程电容。可通过寄存器来调整匹配电容大小

  • 每个电容大小可单独设置,步进值为0.47pF
  • 上电,复位,或者从sleep cold star模式唤醒,这3种场景时,寄存器会被初始化为0x05即13.6pF
  • 当设备被设置为STDBY_XOSC模式时,寄存器值会被值0x12覆盖,即19.7pF

3.2 TCXO方案

        TCXO是一种将温度补偿电路与晶体结合在一起的器件,具有更大的频率稳定性在广泛的温度范围,下图可以看出温度补偿对晶振漂移的影响。

1)电路图设计

  • 内部配置DIO3作为TCXO的电源,电压可配置1.6V~3.3V,正常电流负载为1.5mA,最大可支持4mA
  • TCXO通过220Ω电阻和10pF的电容连接到XTA引脚上,XTB引脚悬空。

2)内部可编程电容

        使用TCXO时,需要使用命令SetDIO3AsTCXOCtrl()配置DIO3作为电源。该命令还会使XTA内部电容配置为0x2F即33.4pF

3)DIO3作为TCXO电源

        命令SetDIO3AsTCXOCtrl()用于配置芯片的外部TCXO参考电压,由DIO3控制。

  • tcxoVoltage

        设置输出电压1.6V~3.3V,需注意的是,受限于芯片的供电电压,实际可配置最大电压不能超过芯片电源电压-200mv

  • delay

        TCXO供电后,需要一定时间起振,最终稳定到所需的频率。这个时间会依据不同TCXO厂家而不同,这个参数就是设置内部状态机等待TCXO稳定的时间。如果超时,会标记XOSC_START_ERR。

        PS:该命令发送后,并不是立即执行。而是在TCXO需要的时候(STDBY_XOSC,FS,TX,RX模式下),芯片才控制DIO3输出电压值,并且设定delay超时时间来等待TCXO起振。选择TCXO方案时,启动发射和接收需注意这里的时间开销。

4 Crystal和TCXO方案比较

  • TCXO提高了频率稳定性,但成本较高,并且启动时间慢,功耗高。
  • Crystal成本低,但容易受温度影响,需要在PCB上开槽进行热隔离

类型

Crystal

TCXO

型号

NX2016SA-32MHz-EXS00A-CS06465

NT2016SA-32MHz-END4263A

标称频率

32MHz

32MHz

供电电压

不需要

1.65V~3.65V

供电电流

不需要

2mA

输出类型

-

正弦波

输出电压

-

0.8Vpp

温漂

+/- 10 ppm for -20 to +70°C +/- 30 ppm for -40 to +85°C

+/- 2.5 ppm for -30 to 85°C

老化

+/- 3 ppm for 1st year +/- 5 ppm for 5 years +/- 10 ppm for 10 year +/- 15 ppm for 15 year

+/- 1 ppm 1 year +/- 3 ppm for 5 year +/- 5 ppm per 10 year

相噪

-

-86dBc/Hz @ 10Hz offset -114dBc/Hz @ 100Hz offset -137dBc/Hz @ 1kHz offset -149dBc/Hz @ 10kHz offset

负责阻抗

10kΩ||10pF

10kΩ||10pF

启振时间

150us

2ms

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用Semtech公司sx126x芯片驱动库中的sx126x-cad驱动函数代码示例,用于执行CAD操作并检测信道是否可用: ``` #include "sx126x.h" // 初始化sx126x芯片 sx126x_init(&sx1268); // 设置CAD参数 sx126x_set_cad_params(&sx1268, 0, SX126X_CAD_ON_BOTH_EDGES, SX126X_CAD_SYMBOL_DURATION_8); // 执行CAD操作 int cad_result = sx126x_cad(&sx1268); // 检查CAD结果 if (cad_result == SX126X_CAD_OK) { // 信道空闲,可以发送数据 send_data(); } else if (cad_result == SX126X_CAD_DETECTED) { // 信道有信号干扰,等待一段时间后重试 delay(1000); sx126x_cad(&sx1268); } else { // CAD操作失败,检查硬件或者软件配置 handle_error(); } ``` 在这个示例中,我们首先使用sx126x_init()函数初始化了sx126x芯片,并将其指针传递给sx126x-cad驱动函数。然后,我们使用sx126x_set_cad_params()函数设置CAD参数,比如CAD检测模式和检测时长。接着,我们使用sx126x_cad()函数执行CAD操作,并检查返回结果。如果返回结果是SX126X_CAD_OK,则说明信道空闲,可以发送数据。如果返回结果是SX126X_CAD_DETECTED,则说明信道有信号干扰,我们等待一段时间后重新执行CAD操作。如果返回结果是其他值,则说明CAD操作失败,需要检查硬件或者软件配置。需要注意的是,在使用sx126x-cad驱动函数之前,需要包含sx126x.h头文件,并在应用程序中实现sx126x_init()和sx126x_set_cad_params()函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值