和硬件相关的问题

TCXO 的使用

根据SX1276数据手册,

  • 如果使用TCXO,则需要配置RegTcxo寄存器为0x19,代码如下
void SX1276SetTcxoConfig(void)//此函数为自定义的
{
SX1276Write( REG_TCXO, 0x19 ); //设置TCXO
} //在初始化中调用
void SX1276Init( RadioEvents_t *events )
{
...
SX1276SetTcxoConfig();
...
}
  • 否则配置为0x09,因为芯片上电默认不使用TCXO,即上电寄存器值即为0x09,所以无需配置

PA_BOOST 引脚的使用

根据sx1276 数据手册

  • 如果使用PA_BOOST作为RF输出,则需要配置PaSelect脚为1
void SX1276SetTxConfig(......)
{
...
paConfig = ( paConfig & RF_PACONFIG_PASELECT_MASK ) | SX1276GetPaSelect( SX1276.Settings.Channel );//选择是否使用PA_BOOST引脚
... } //根据具体的电路图不一样,此函数也会币一样,比如低频使用PA_BOOST,高频使用RFO_HF,则函数体如下
uint8_t SX1276GetPaSelect( uint32_t channel )
{
//如果是低频的,使用PA_BOOST,高频使用RFO_HF
if( channel < RF_MID_BAND_THRESH )
{
return RF_PACONFIG_PASELECT_PABOOST;
}
else
{
return RF_PACONFIG_PASELECT_RFO;
}
}
//如果高低频都使用PA_BOOST,则函数体如下
uint8_t SX1276GetPaSelect( uint32_t channel )
{
return RF_PACONFIG_PASELECT_PABOOST;
}
//如果高频使用PA_BOOST,低频使用RFO_LF,则函数体如下
uint8_t SX1276GetPaSelect( uint32_t channel )
{
//如果是高频的,使用PA_BOOST,低频使用RFO_LF
if( channel > RF_MID_BAND_THRESH )
{
return RF_PACONFIG_PASELECT_PABOOST;
}
else
{
return RF_PACONFIG_PASELECT_RFO;
}
} /*!
* RegPaConfig
*/
#define RF_PACONFIG_PASELECT_MASK 0x7F
#define RF_PACONFIG_PASELECT_PABOOST 0x80
#define RF_PACONFIG_PASELECT_RFO 0x00 // Default
  • 否则为0

RXTX switch(接收和发送的天线电路的切换)



在图中可以看到,射频输入和射频输出是不一样的电路,但是用的是一个天线,所以用到了一个射频电路切换的芯片。

在程序中,需要做的就是控制FEM_CPS脚,在RX和TX时进行RF1(RFI)和RF2(RFO)的切换。

由于在设计中兼容高低频,并且使用两个引脚分别控制高频和低频部分的射频部分输入输出的切换,所以在实际使用中需要控制两个引脚。

void SX1276SetAntSw( uint8_t rxTx )
{
if( rxTx != 0 ) // 1: TX, 0: RX
{
GpioWrite( &AntSwitchLf, 0 );//切换到低频发射电路
GpioWrite( &AntSwitchHf, 1 );//切换到高频发射电路
}
else
{
GpioWrite( &AntSwitchLf, 1 );//切换到低频接收电路
GpioWrite( &AntSwitchHf, 0 );//切换到高频接收电路
}
}

如果只有高频或者低频一个部分,上面的代码只要保留相应的部分即可

LoRaWAN_stack移植笔记(一)--RF硬件相关的更多相关文章

  1. LoRaWAN_stack移植笔记(三)__SPI

    stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱 ...

  2. LoRaWAN_stack移植笔记(四)__RTC

    stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱 ...

  3. LoRaWAN_stack移植笔记 (二)_GPIO

    stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱 ...

  4. LoRaWAN_stack移植笔记(七)_数据包的接收发送

    以下的代码适用于LoRa sx1276点对点的通讯,纯粹的考虑在非发射模式下即为接收模式 配置sx1276的射频参数,并且切换到接收模式 //bandwidth [0:125 1:250 2:500] ...

  5. android BSP与硬件相关子系统读书笔记(1)android BSP移植综述

    从linux驱动转行至Android驱动开发大半年了,一开始就产生了一个很纠结目标和问题,就是不停的google如何porting android!这个问题得到的结果对于初出茅庐的我,感到迷惘.随着工 ...

  6. STemWin5.22移植笔记【转】

    来自:http://www.openedv.com/posts/list/27697.htm STemWin5.22移植笔记 网上关于emwin的资料很少,我在移植的时候查了很多资料,对我一个感觉是好 ...

  7. Nvidia显卡怎样查看显存大小及硬件相关信息

    在电脑上安装Nvidia显卡驱动,平时也会通过Nvidia控制面板来查看显示显存位宽及宽带.显示显存容量和显示显存芯片信息等等,那么该如何查看Nvidia显存大小以及Nvidia硬件相关信息呢? 1. ...

  8. tslib移植笔记(1)【转】

    本文转载自:https://blog.csdn.net/zijie_xiao/article/details/50740950 tslib移植笔记(1)2016-04-25 tslib背景[摘自百度] ...

  9. amazeui学习笔记--css(布局相关1)--网格Grid

    amazeui学习笔记--css(布局相关1)--网格Grid 一.总结 基本使用 1.div+class布局:amaze里面采取的就是div+class的布局方式  <div class=&q ...

随机推荐

  1. 【IOS开发】基础

    1.Objective-C 为 ANSI C 添加了下述语法和功能: 定义新的类 类和实例方法 方法调用(称为发消息) 属性声明(以及通过它们自动合成存取方法) 静态和动态类型化 块 (block), ...

  2. logstash+elasticsearch+kibana快速搭建日志平台

    使用logstash+elasticsearch+kibana快速搭建日志平台   日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...

  3. ios学习笔记第三天之UI控件

  4. WCF客户端与服务端通信简单入门教程

    服务端 1.新建空白解决方案,然后再空白解决方案中新建:WCF服务应用程序.建完后如图: 2.删掉自动生成的IService1.cs和Service.svc并添加WCF服务文件StudentServi ...

  5. SSH的整合

    SSH的整合 struts2和hibernate的配置我这里就不多说了,先把两个有关的东西说下.一个是所有的包.struts2+hibernate3+spring2.5我包准备放上去给大家下载. ht ...

  6. Arduino 3g shield using GSM bought from ITead

    This is an old arduino 3G module bought half years ago. Its wiki: http://wiki.iteadstudio.com/ITEAD_ ...

  7. 漫画研发之十二:该听谁的? 部门经理 or 项目经理

                       

  8. (Python学习9)Python虚拟机中的一般表达式

    1.准备工作 执行.py程序时,Python解释器对PyCodeObject的co_code存储的字节码进行解释执行,同时co_consts存储了常量,co_names存储了变量名称.用compile ...

  9. MJRefresh框架使用及说明

    一. MJRefresh的类解释. 1.MJRefreshComponent              所有刷新控件的基类别.(component: 成分,组件) 2.MJRefreshNormalH ...

  10. [jQuery]on和bind事件绑定的区别

    on和bind事件绑定的区别 一个demo展示 <!DOCTYPE html> <html lang="zh"> <head> <titl ...