STM32开发笔记87: SX1268驱动程序设计(设置为STDBY模式)

发布者:hylh2008最新更新时间:2020-03-06 来源: eefocus关键字:STM32  SX1268  驱动程序  STDBY模式 手机看文章 扫描二维码
随时随地手机看文章

单片机型号:STM32L053R8T6


本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍将芯片设置为STDBY模式的相关驱动程序。


一、STDBY模式

芯片上电、复位和从睡眠模式唤醒,都会从Startup模式自动进入到STDBY模式。STDBY模式又称为待机模式或者旁路模式。


在待机模式下,主机应在进入RX或TX模式之前配置芯片。默认情况下,系统选择13MHZ的RC振荡器,以降低功耗。除睡眠模式外,其它模式XTAL时钟处于打开状态。然而,只有在应用程序对时钟要求严格,我们才需要打开XOSX模块,并让它始终处于打开状态。


待机模式下的XOSC或RC13M选择由命令SetStandby(…)中的模式参数决定。只使用RC13M的模式称为STDBY_RC,打开XOSC的模式称为STDBY_XOSC。


如果要使用DC-DC,则应在电路处于STDBY_RC模式时使用SetRegulatorMode(…)命令进行选择,当进入STDBY_XOSC模式时,DCDC会自动打开。DCDC使用RC13M时钟,当目标电压比DC-DC低50 mV时,LDO将保持活跃状态。


二、SetStandby函数

The command SetStandby(...) is used to set the device in a configuration mode which is at an intermediate level of consumption. In this mode, the chip is placed in halt mode waiting for instructions via SPI. This mode is dedicated to chip configuration using high level commands such as SetPacketType(...).(SetStandby函数使得芯片进入一个配置模式,这个模式消耗中等水平的能量。在这个模式下,芯片处于停滞状态,以等待SPI指令。这个模式专门用于使用高级命令对芯片进行配置,例如SetPacketType)


By default, after battery insertion or reset operation (pin NRESET goes low), the chip will enter in STDBY_RC mode running with a 13 MHz RC clock.(在缺省方式下,上电或硬复位后,芯片处于STDBY_RC模式,使用内部13M RC时钟)

相关驱动程序如下:


typedef enum

{

    STDBY_RC                                = 0x00,

    STDBY_XOSC                              = 0x01,

}RadioStandbyModes_t;

void CSX1268::SX126xSetStandby(RadioStandbyModes_t standbyConfig)

{

SX126xWriteCommand(RADIO_SET_STANDBY, (uint8_t*)&standbyConfig, 1);

if(standbyConfig == STDBY_RC)

{

OperatingMode = MODE_STDBY_RC;

}

else

{

OperatingMode = MODE_STDBY_XOSC;

}

}


程序调用SX126xWriteCommand函数写入相关命令,然后根据相关参数,设置相应的模式。改进后的SX126xWriteCommand函数程序如下:


void CSX1268::SX126xWriteCommand(RadioCommands_t command, uint8_t *buffer, uint16_t size)

{

SX126xCheckDeviceReady( );

 

Target.DisableInterrupt();

this->Select();

this->WriteByte((uint8_t)command);

for(uint16_t i = 0; i < size; i++)

{

this->WriteByte(buffer[i]);

}

this->Deselect();

Target.EnableInterrupt();

if( command != RADIO_SET_SLEEP )

{

SX126xWaitOnBusy( );

}

}

程序首先调用SX126xCheckDeviceReady函数,判断芯片的当前状态,然后关闭全局中断(进入临界区),通过SPI总线向芯片发送命令,命令发送完毕后打开全局中断(离开临界区)。最后判断,如果不是进入SLEEP模式,就等待芯片的BUSY引脚为低。


接下来,我们再看SX126xCheckDeviceReady函数,程序如下:


void CSX1268::SX126xCheckDeviceReady(void)

{

if((this->OperatingMode == MODE_SLEEP) || (this->OperatingMode == MODE_RX_DC))

{

SX126xWakeup();

SX126xAntSwOn();

}

SX126xWaitOnBusy();

}


程序判断当前工作模式是否是SLEEP或RX_DC,如果是则调用唤醒函数,并打开天线开关。对于上电或应复位,我们只需在程序起始时,设置模式为SLEEP,就可以使该函数生效。程序最后,判断BUSY引脚是否为低,以确认芯片是否可以接收SPI指令。

关键字:STM32  SX1268  驱动程序  STDBY模式 引用地址:STM32开发笔记87: SX1268驱动程序设计(设置为STDBY模式)

上一篇:STM32开发笔记88: SX1268驱动程序设计(天线控制)
下一篇:STM32开发笔记86:使用printf向串口输出数据

推荐阅读最新更新时间:2024-11-04 17:57

vscode搭建STM32开发环
需要安装的软件 vscode 必装插件: C/C++:用于提供高亮显示和代码补全 Cortex-Debug:用于提供调试配置 make make工具可以直接下载xPack项目提供的windows-build-tools工具里面带了make工具。 Release xPack Windows Build Tools v4.2.1-2 · xpack-dev-tools/windows-build-tools-xpack (github.com) openocd arm-none-eabi stm32CubeMX 上述软件具体的安装教程网上有很多详细的介绍资料,这里就不详细介绍了。需要注意的是记得将make,openocd,
[单片机]
STM32 ADC 多通道16路电压采集
下面介绍一种利用STM32单片机制作的16路多通道ADC采集电路图和源程序。采用USB接口与电脑连接,实则USB转串口方式,所以上位机可以用串口作为接口。电路图中利用LM324作为电压跟随器,起到保护单片机引脚的作用。直接在电脑USB取点,省去外接电源麻烦,实测耗电电流不到20ma. 1.主控电路图: 2. USB转串口电路图 3.LM324电压跟随器电路图 4.滤波电路图 5.16路接口电路图 6.电源电路图 7.16路ADC初始化程序: void Adc_Init(void) { //先初始化IO口 RCC- APB2ENR|=0X7 2; //使能PORTA\PORAB\PORTC口
[单片机]
<font color='red'>STM32</font> ADC 多通道16路电压采集
stm32学习笔记(一) GPIO
战舰开发板的程序 main函数 int main(void) { delay_init(); //延时函数初始化 LED_Init(); //初始化与led连接的硬件配置 while(1) { LED0=1; LED1=1; delay_ms(300); LED0=0; LED1=0; delay_ms(300); } } delay_init();函数 void delay_init() { #ifdef OS_CRITICAL_METHOD //如果OS_CRITICAL_METHOD定义了,说明使用ucosII了. u32 reload; #e
[单片机]
STM32和CC2520的TinyOS移植与驱动分析
引言 无线传感器网络(Wireless Sensor Network,WSN)是一种应用相关的网络。需要对某些操作系统进行移植。本文采用TinyOS作为软件平台,成功移植了Radio、Timer、USART、SPI和General I/O等5个底层模块。测试结果表明,移植的5个底层模块能够正常工作。 1 MCU和无线模块介绍 STM32系列按性能分成两个系列:STM32F103“增强型”系列和STM32F101“基本型”系列,时钟频率达到72 MHz,是同类产品中性能最高的产品。本项目采用芯片STM32F103RBT6。CC2520选用第二代ZigBee/IEEE 802.15.4无线电频率(RF)收发器。 2 Tin
[单片机]
<font color='red'>STM32</font>和CC2520的TinyOS移植与驱动分析
Windows下stm32串口下载程序(DOS版本)
每次更新程序都需要用到stlink调试工具,感觉非常不方便,笔记本搬来搬去,帮客户更新程序也不方便使用别人的下载工具。 那么只能自己写一个下载工具了。 刚开始我是想研究一下stm32 BootLoader的官方协议,然后通过协议来写这个程序。 后面找到官方质料AN3155_USART protocol used in the STM32 bootloader_en.pdf(自行百度)。 全是英文,看了一天挺累的,进展也慢。 后面又了解到原来st公司自己写了一个BootLoader的库。根据网上找到的很多质料模仿大神们写了一个。 因为时间原因先完成一个DOS版本的,后面将继续完成MFC版本,方便使用。源码都会
[单片机]
Windows下<font color='red'>stm32</font>串口下载程序(DOS版本)
stm32 编程的收获,有关C语言(在stm32 公交报站中的收获)
1. char * msg = { //以下内容请自行修改 { 乘客您好,欢迎乘坐 }, { 2 路 }, //车次,采用单个数字变读(1读作幺)模式,读后恢复正常模式 { 公交车,本路车由 }, { 开往 }, { ,前门上车,后门下车,本车无人售票,请自备零钱 }, { 车辆起动,请站稳扶好 }, { 车辆转弯,请注意安全 }, { 前方到站 }, { 下车的乘客后门请 }, { 车站到了,请您带好随身物品,从后门下车,谢谢您的乘坐,再见 }, { 始发站 }, { 终点站 }, { soundk }, { 到了 } }; 指针数组:指针的数组。 在字符串定义的时候使用指针; 调用的时候 v
[单片机]
stm32快速学习2——点亮LED
点亮LED 首先使能时钟RCC 然后再设置IO口 下面是用到的函数可在 UM0427 用户手册 固件函数库 中查到,有详尽解释 。 #include stm32f10x.h void RCC_Configuration(void); void GPIO_Configuration(void); int main(void) { RCC_Configuration(); GPIO_Configuration(); GPIO_SetBits(GPIOA, GPIO_Pin_0); GPIO_SetBits(GPIOA, GPIO_Pin_1); while(1); } void RCC_Configuration(v
[单片机]
STM32——C语言知识点:指针、结构体
1 /* 2 ============================================================================ 3 Name : Cyuyanfuxi.c 4 Author : 5 Version : 6 Copyright : Your copyright notice 7 Description : Hello World in C, Ansi-style 8 ============================================================================ 9 */ 10 11
[单片机]
<font color='red'>STM32</font>——C语言知识点:指针、结构体
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved