和硬件相关的问题

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 );//切换到高频接收电路
}
}

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

最新文章

  1. JAVA NIO系列(二) Channel解读
  2. 【Java每日一题】20161117
  3. UML类图归纳
  4. VTK初学一,c_Line_CellArray线段的CellArray绘制
  5. RT-Thread 线程的让出
  6. Android --资料集合
  7. iPhone —— 如何自制铃声(图文)
  8. matlab 直方图均衡化
  9. PCB打样镀层问题
  10. python每天一个小练习-强壮的密码
  11. C++获取基类指针所指子类对象的类名
  12. [国嵌攻略][143][LCD驱动程序分析]
  13. DAY24、面向对象
  14. [CF1039D]You Are Given a Tree
  15. Mysql order by与limit混用陷阱
  16. python 全栈开发,Day96(Django REST framework 视图,django logging配置,django-debug-toolbar使用指南)
  17. db2笔记
  18. oc中类的实例化及方法调用
  19. drawCall_01
  20. ios学习之旅--oc对象的关系

热门文章

  1. rabbitmq-message(C#)
  2. 【转】几点 iOS 开发技巧
  3. knockoutJS 快速上手
  4. 【Apache ZooKeeper】命令行zkCli.sh使用指南
  5. Google 域名的秘密
  6. xhEditor入门基础
  7. java文件上传--基于ajaxFileUpload+struts2
  8. 搜索广告与广告网络Demand技术-流式计算平台
  9. C语言的变量的内存分配
  10. 创建简单的响应式HTML5模版