目录
1 前言
SX126x芯片共有6种工作模式,了解各种工作模式下具体细节,有助于更好的使用该芯片。下表格概括了不同模式下的哪些模块还在工作
2 各模式切换图
3 Startup
Startup这个并非工作模式,只是一种状态,完成启动后会自动切换至STDBY模式
- 上电,复位,从Sleep模式唤醒时,会先进入Startup状态。
- Startup状态下,BUSY引脚会一直持续高电平,无法接收外部命令
- 当数字电压和RC时钟稳定可用时,芯片完成启动,内部CPU接管控制,此时BUSY引脚拉低,并进入STDBY模式
4 Sleep Mode
在该模式下主要用于低功耗的场景,依据配置可以选择关闭所有模块,最低功耗只有160nA。当然也可以配置保留部分功能,比如64Khz的RC和原先的配置数据,此情况下功耗是1.2uA。
4.1 如何进入Sleep
有2种方式进入Sleep模式:
- 通过命令SetSleep进入
- 在RxDutyCycle场景下自动进入
1)SetSleep命令
- 该命令只能在STDBY_RC或者STDBY_XOSC模式下使用
- 通过sleepConfig参数,可以选择进入Sleep模式保留哪些模块正常工作
- warm start/cold start - 是否保留原先的寄存器配置。硬件上是通过保留backup regular和data RAM来实现的
- RTC timeout - 硬件上是否保留64Khz RC工作。该RC用于内部定时器,比如RxTimeout或者TxTimeout等等事件
2)RxDutyCycle
这是一个特殊的Rx模式,通过命令SetRxDutyCycle来启动。在该模式下,硬件会自动完成Rx-Sleep的循环操作。
- 在该模式下,是默认使能warm start和RTC timeout,无需单独再使用SetSleep命令。
4.2 如何退出Sleep
两种方式会使Sleep模式退出到startup状态,完成启动唤醒工作,最后自动切换到STDBY_RC模式
- 内部RTC timeout(前提是进入Sleep时,有配置使wake-up on RTC timeout)
- SPI接口的NSS下降沿
5 STDBY Mode
处于一种可配置模式,在该模式下,用户可以对芯片进行配置操作,包括寄存器的读写,命令的控制,为进入Tx或者Rx设置。该模式分为两种:STDBY_RC和STDBY_XOSC
5.1 如何进入STDBY
1)SetStandby命令
可以通过该命令进入STDBY_RC或者STDBY_XOSC模式
- StdbyConfig:
0 - STDBY_RC
1 - STDBY_XOSC
2)Starup自动进入
Starup完成内部状态后会自动进入STDBY_RC模式
3)部分中断
- RxDone中断
启动接收后,如果在接收窗口收到数据,会产生RxDone中断,并且自动切换至STDBY_RC模式
需注意的是,如果是Rx Continuous接收模式下,产生RxDone中断后会依旧处于Rx模式下
- RxTimeout中断
启动接收后,如果在接收窗口未收到数据,会产生RxTimeout中断,并且自动切换至STDBY_RC模式
- TxDone中断
- TxTimeout中断
启动发送后,如果发送完毕或者发送超时,都会自动切换至STDBY_RC模式
5.2 STDBY_RC
除了Sleep模式下的模块工作以外,其他的模块也被打开:
- LDO工作:这里需要说的是,如果LDO供电模式下,打开LDO模块;如果DC-DC供电模式下,也只打开LDO模块。(在SX126x-电源模块文章中已介绍,DC-DC模式下LDO也是使能的,DC-DC主要用于射频供电)
- RC13M工作:用于SPI接口
5.3 STDBY_XOSC
在SX126x-时钟模块文章中已介绍过,特别是使用TCXO方案时,使用命令SetDIO3AsTCXOCtrl()配置后并不是立即使TCXO工作,而是在TCXO需要时即Tx或者Rx时,DIO3才会供电并等待TCXO起振并稳定。那是否可以在STDBY模式下,就让TCXO工作起来,STDBY_XOSC就能做到这点。
除了STDBY_RC模式下的模块工作以外,其他的模块也被打开:
- 晶振工作
- DC-DC工作:如果是DC-DC供电模式下,STDBY_RC时只开启LDO,如果进入STDBY_XOSC模式后,DC-DC会被开启,为启动射频做好准备。
6 FS Mode
- 通过命令SetFs()进入,使锁相环和外部时钟源同步
- 一般用于硬件调试,PLL锁定或者超时后,BUSY引脚会拉低
7 Rx Mode
在Rx模式下,除了STDBY_XOSC工作的模块以外,还有RF前端,Rx ADC,调制模块都会打开工作
可以配置成下面几种子模式:
- 连续接收:设备一直保持接收模式,直至主机通过命令切换模式
- 单次接收:接收到数据后,自动切换至STDBY_RC模式
- 单次超时接收:当接收到数据或者接收窗口超时时,自动切换至STDBY_RC模式
- 监听接收:使用命令SetRxDutyCycle(...)来实现,设备在睡眠和Rx模式之间交替,直到一个IRQ被触发
8 Tx Mode
在Tx模式下,可以配置成如下子模式:
- 单次发送:完成一包数据的发送后自动切换至STDBY_RC
- 单次超时发送:在单次发送的模式下,增加一个超时机制,如果设置时间来未发送完毕会产生TxTimeout中断,并自动切换至STDBY_RC。该超时可以被用作一个安全措施,以确保如果由于任何原因,Tx被中止或不成功。
9 各模式切换时间
- 切换时间是从命令发送完毕NSS上拉开始,直至芯片内部完成模式切换,BUSY引脚下拉结束的总时间