SX1268驱动程序设计

一、STDBY模式JN9

W:X.

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

N8GLX~'>GZB

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

Ab]`*h\USnMHk3(\

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

O23dtH^%^~:

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

|

二、SetStandby函数2#sJ`pdQ

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)Cf-R?gn]

6K/j,e>Ly4aW8J#

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时钟)vJX3fE}F

相关驱动程序如下:9-

HG(J+ocnail%#E8

typedef enumg~5$X{

{99'e)[\

STDBY_RC                                = 0x00,hpftVEB

STDBY_XOSC                              = 0x01,/V66P@[>

}RadioStandbyModes_t;a$f$CjQ

void CSX1268::SX126xSetStandby(RadioStandbyModes_t standbyConfig)

{P4{8pO]B

SX126xWriteCommand(RADIO_SET_STANDBY, (uint8_t*)&standbyConfig, 1);p[E}:kak_-

if(standbyConfig == STDBY_RC)f'hrS}e

{`QH-VR\_

OperatingMode = MODE_STDBY_RC;.OLm{

}icq!^5BzL

elsePZVh)6f"c

{oyI8}s:

OperatingMode = MODE_STDBY_XOSC;>t-9yO1XQq

}_7j-y 9V

}t'msgC6=>u

3I87|5V,ZMfJ;":]O!

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

;pK/t=$jf_xm=n

void CSX1268::SX126xWriteCommand(RadioCommands_t command, uint8_t *buffer, uint16_t size)![=C`O6K

{+!dWQ=W

SX126xCheckDeviceReady( );?:D#\4=US

ZT*RD2,

Target.DisableInterrupt();Eiqx1ZM

this->Select();K`|%-k+D

this->WriteByte((uint8_t)command);(*{Y#XD{

for(uint16_t i = 0; i < size; i++)#r\,oXTm

{[,A*nU$

this->WriteByte(buffer);"bI'XaSv

}11%

this->Deselect();OEz'&))J

Target.EnableInterrupt();pLB~{5u>;-

wc&%icF*cr

if( command != RADIO_SET_SLEEP ):~Kc"Pg

{}m!L2iK4qk

SX126xWaitOnBusy( );y|sU-O2}Dl

}~RlsgtX"

}`zQ2i}Uju

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

ZCdlTdYL9,;zkgo

接下来,我们再看SX126xCheckDeviceReady函数,程序如下:r_m*$r~f

@FC|1=+&NvvaqJ

void CSX1268::SX126xCheckDeviceReady(void)z[zURj-*]

{;+d2qbGd

if((this->OperatingMode == MODE_SLEEP) || (this->OperatingMode == MODE_RX_DC))in>Os@e#

{*z,] mi%

SX126xWakeup();P0R8

f

SX126xAntSwOn();/Y NV

}Dt)O60X3>

SX126xWaitOnBusy();Ancka

}SSoD}N

\^l273:Z(w,

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

sx1268 中文_SX1268驱动程序设计相关推荐

  1. sx1268 中文_SX1268原理图_SX1268芯片datasheet_SX1268数据手册_SX1268无线收发器模块_SX1268用户手册_一牛网...

    今天这个篇幅我们继续来探讨下LoRa领域的相关芯片,Semtech公司推出的SX1261/62/68系列的芯片,不知道各位朋友有没有了解过这系列芯片,一开始推出市场,就是打着特殊的LoRa调制方式.低 ...

  2. 简单说说驱动程序设计的入门

    简单说说驱动程序设计的入门,其实初级驱动设计中也能使用C++,也能使用类,但和用户程序中的用法有一些区别,一些特殊的地方需要特别注意.从笔者的经验来看,WDK给出的AVStream小端口驱动示例工程, ...

  3. JAVA中文注解驱动,解决api接口返回的json里面出现中文乱码的问题

    在src/main/resources/springmvc-servlet.xml中加入 <!-- 中文注解驱动 --> <mvc:annotation-driven>< ...

  4. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS-III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...

  5. 2018-2019-1 20165318 20165322 20165326 实验四 外设驱动程序设计

    实验四 外设驱动程序设计 实验内容 任务一 任务二 问题及解决方法 参考链接 实验内容 任务一 学习资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十 ...

  6. 信息安全系统设计基础 实验四:外社驱动程序设计 20135327郭皓 20135329 李海空...

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全设计基础                         班级:1353 姓名:郭皓 李海空 学号:20135327 ...

  7. 2017-2018-1 20155327 实验四 外设驱动程序设计

    2017-2018-1 20155327 实验四 外设驱动程序设计 题目一 学习资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章 提交康奈尔笔记 ...

  8. 信息安全系统设计基础实验四:外设驱动程序设计 20145222黄亚奇 20145213祁玮

    北京电子科技学院(BESTI) 实 验 报 告 封 面 课程:信息安全系统设计基础 班级:1452 姓名: 黄亚奇 祁玮 学号: 20145222 20145213 成绩: 指导教师:娄嘉鹏 实验日期 ...

  9. 2018-2019-1 20165211 实验四 外设驱动程序设计

    2018-2019-1 20165211 实验四 外设驱动程序设计 任务一 1.实验要求 学习资源中全课中的"hqyj.嵌入式Linux应用程序开发标准教程.pdf"中的第十一章 ...

  10. Linux USB驱动程序设计

    Linux USB驱动程序设计 1. USB发展史 USB(Universal Serial Bus ),通用串行总线,是一种外部总线标准,用于规范电脑与外部设备的连接和通讯. USB是在1994年底 ...

最新文章

  1. 【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
  2. CONVERT_DATE_INPUT
  3. 64 源码_【ClickHouse内核】源码阅读策略
  4. 你可能对position和z-index有一些误解
  5. 微信小程序服务器登入dome,小程序登录Demo
  6. py thon 多线程(转一篇好文章)
  7. 《『若水新闻』客户端开发教程》——04.设计新闻分类UI(2)
  8. 【COCOS2D-HTML5 开发之三】演示样例项目附源代码及执行的GIF效果图
  9. seay代码审计工具_渗透测试 网站代码审计等基础方法篇
  10. OAI搭建——eNB搭建
  11. 【图像识别】基于计算机视觉实现自动报靶系统(重弹孔)含Matlab源码
  12. 地图比例尺与空间分辨率之间的关系_百度、google、高德 地图比例尺功能实现(算法地图分辨率和zoomlevel之间的关系)...
  13. 教妹学 Java:晦涩难懂的泛型
  14. 数据分析师基本技能——SQL
  15. arduino红外遥控控制小灯
  16. vscode中好用的git相关的插件
  17. Linux 驱动简介
  18. 装载M1芯片的Mac安装“AE”时,出现错误代码“501”怎么办?
  19. 荣耀30s鸿蒙5g,荣耀赵明曝光荣耀30S包装盒 5G依旧是卖点
  20. sublime_text 3安装Emmet时出现PyV8警告

热门文章

  1. EditPlus中文版 安装教程
  2. 收藏:常见物联网通信技术概览
  3. 成形滤波器和匹配滤波器
  4. 大型网站技术架构演进与性能优化
  5. NUKE 10 mac破解版影视特效制作软件,你也可以制作大片一样的影视效果!
  6. Mac环境下小米手机Root教程
  7. linux系统的wps办公软件,linux上安装wps办公软件
  8. 21世纪将淘汰的八种人
  9. IsPostBack详解
  10. PHP+mysql共享自行车租赁管理系统