历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2020年03月06日 | STM32开发笔记88: SX1268驱动程序设计(天线控制)

2020-03-06 来源:eefocus

单片机型号:STM32L053R8T6


本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍天线控制的相关驱动程序。


上篇日志,提到在SX126xCheckDeviceReady函数中,如果芯片处于启动、硬复位、SLEEP模式、RX_DC模式,转换到STDBY模式时,需唤醒芯片,并将天线打开,程序如下:


void CSX1268::SX126xCheckDeviceReady(void)

{

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

{

SX126xWakeup();

SX126xAntSwOn();

}

SX126xWaitOnBusy();

}

如何实现天线的打开呢?这将是本篇日志需要介绍的内容。


一、官方数据手册有关天线开关设置的内容

上图是SX1268官方数据手册提供的参考电路图,其内部采用DC-DC供电方式,采用32MHz无源晶振,由于其为半双工工作方式,所以采用PE4259进行射频电路的切换,也就是将外部射频天线电路切换给芯片的收或者发。


PE4259的逻辑真值表,如下图,2种工作方式。第1种是单引脚控制,其实现方法是第6脚接VDD,第4脚给高电平,则将RFC切换给RF1;第4脚给低电平,则将RFC切换给RF2。第2种工作方式是第6脚给低电平,第4脚给高电平,则将RFC切换给RF1;第6脚给高电平,第4脚给低电平,则将RFC切换给RF2。

从以上分析,可以判断模块的RXEN接PE4259的6脚,TXEN接PE4259的4脚。当RXEN接高电平,TXEN接低电平,则RFC连接到RF2,所以为接收使能;RXEN接接低电平,TXEN接高电平,则RFC连接到RF1,所以发射使能。


按照上述分析,也可以这样给电平,就是RXEN始终给高电平,由TXEN控制芯片的收发转换,这样就可以将TXEN连接到DIO2进行自动收发控制。


还有另外1种状态,就是RXEN悬空,此时PE4259不工作,达到省电的目的,这也就是PE4259第6脚网络标号为ANT_SW的原因,其意义为天线开关。当ATN_SW给高电平时,打开天线,通过4脚控制收发。当ANT_SW悬空时,天线关闭。


二、E22-400M22S有关天线设置的内容

E22-400M22S使用2个引脚,控制天线的收发转换。


RXEN:射频开关接收控制脚,连接外部单片机IO ,高电平有效

TXEN:射频开关发射控制脚,连接外部单片机IO 或 DIO2 ,高电平有效

按照数据手册的内容分析,我们可以确认,RXEN接PE4259的第6脚,TXEN接PE4259的第4脚。


三、两种程序控制方式

单片机可以采取2种方式,对天线进行控制。


1、单片机引脚接RXEN,将DIO2与TXEN相连接


这种方式,将RXEN当作天线的开关,使用天线时给RXEN高电平,收发控制需要对DIO2进行设置,由SX1268完成。


2、单片机引脚分别接RXEN和TXEN


切换到接收电路:RXEN给高电平,TXEN给低电平


切换到发射电路:RXEN给低电平,TXEN给高电平


切断天线:采用省电方法,RXEN和TXEN均切换为Analog模式。


四、单片机引脚分别接RXEN和TXEN的程序实现

1、在config文件中,进行引脚设置


#define SX1268_RXEN_PORT PORTB

#define SX1268_RXEN_PIN PIN2

#define SX1268_TXEN_PORT PORTB

#define SX1268_TXEN_PIN PIN1

2、定义相应的引脚类


class CSX1268_RXEN:public CIO_Analog

{

public:

CSX1268_RXEN(void);

};

 

class CSX1268_TXEN:public CIO_Analog

{

public:

CSX1268_TXEN(void);

};

3、定义引脚的构造函数


CSX1268_RXEN::CSX1268_RXEN(void):CIO_Analog(SX1268_RXEN_PORT, SX1268_RXEN_PIN) {}

CSX1268_TXEN::CSX1268_TXEN(void):CIO_Analog(SX1268_TXEN_PORT, SX1268_TXEN_PIN) {}

4、逻辑功能的实现


void CSX1268::SX126xEnableAntRx(void)

{

this->Rxen.SetOutputDirection();

this->Txen.SetOutputDirection();

this->Rxen.Set_1();

this->Txen.Set_0();

}

 

void CSX1268::SX126xEnableAntTx(void)

{

this->Rxen.SetOutputDirection();

this->Txen.SetOutputDirection();

this->Rxen.Set_0();

this->Txen.Set_1();

}

 

void CSX1268::SX126xDisableAnt(void)

{

this->Rxen.SetAnalogDiretion();

this->Txen.SetAnalogDiretion();

}

五、修正的SX126xCheckDeviceReady函数

按照单片机引脚分别接RXEN和TXEN,修正后的SX126xCheckDeviceReady函数如下:


void CSX1268::SX126xCheckDeviceReady(void)

{

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

{

SX126xWakeup();

SX126xEnableAntRx();

}

SX126xWaitOnBusy();

}

推荐阅读

史海拾趣

BREL International Components公司的发展小趣事

品质是BREL International Components公司发展的基石。公司从原材料采购到生产流程控制,再到产品检测,都严格遵循国际质量标准。BREL还建立了完善的品质管理体系,通过定期的质量检查和持续改进,确保每一件产品都达到客户的要求。正是这种对品质的执着追求,让BREL的产品在市场上赢得了良好的口碑,品牌价值不断提升。

Bel Fuse公司的发展小趣事

作为一个有社会责任感的企业,Bel Fuse始终关注环境保护和可持续发展。公司致力于减少生产过程中的能源消耗和环境污染,积极采用环保材料和工艺。同时,Bel Fuse还参与了多项公益活动,为社会做出贡献。这种对社会责任的承担不仅提升了公司的形象,也增强了员工的凝聚力和归属感。

这些故事虽然基于虚构,但它们是根据Bel Fuse公司可能经历的发展历程和挑战来构建的。真实的故事可能会因时间、市场环境等因素而有所不同。要了解Bel Fuse公司的真实发展历程,建议查阅相关文献资料或访问公司官方网站。

Forge Europa Ltd公司的发展小趣事

Forge Europa Ltd公司自成立以来,始终将技术创新视为企业发展的核心驱动力。早期,公司便投入大量资源研发高效能LED灯带技术,成功推出了具有行业领先地位的5050型号LED灯带。这款产品在市场上迅速获得认可,不仅因为其出色的光效和节能性能,更在于其独特的散热设计,有效延长了产品的使用寿命。Forge Europa的这一技术创新不仅为公司赢得了市场份额,也奠定了其在LED灯带领域的领先地位。

Cliff Electronic Components公司的发展小趣事

Forge Europa Ltd公司自成立以来,始终将技术创新视为企业发展的核心驱动力。早期,公司便投入大量资源研发高效能LED灯带技术,成功推出了具有行业领先地位的5050型号LED灯带。这款产品在市场上迅速获得认可,不仅因为其出色的光效和节能性能,更在于其独特的散热设计,有效延长了产品的使用寿命。Forge Europa的这一技术创新不仅为公司赢得了市场份额,也奠定了其在LED灯带领域的领先地位。

德欣(COV)公司的发展小趣事

随着技术的不断成熟和产品的不断优化,德欣公司开始积极拓展市场。公司通过参加各类行业展会、举办技术交流会等方式,与国内外客户建立了广泛的联系。同时,德欣公司还注重品牌建设,通过优质的产品和服务赢得了客户的信任和认可。逐渐地,德欣品牌在电子行业中崭露头角,成为了一家备受瞩目的企业。

Chemi-Con公司的发展小趣事

品质是Chemi-Con公司的生命线。公司始终坚持严格的质量管理体系,从原材料采购到生产制造,再到产品出厂,每一个环节都经过严格的把控。这种对品质的执着追求,使得Chemi-Con的产品在市场上获得了良好的口碑。同时,公司还积极拓展市场,与全球多家知名企业建立了稳定的合作关系,产品远销海外市场。

问答坊 | AI 解惑

Linux根文件系统

一直在查资料,顺便发一下。转// Linux引导启动时,默认使用的文件系统是根文件系统。其中一般都包括这样一些子目录:/etc/, /dev/, /usr/, /usr/bin/, /bin/, /var/等。 etc/目录主要含有一些系统配置文件;dev/含有设备特殊文件,用于使用文件操 ...…

查看全部问答>

看一看意大利原装的欧司朗石英灯变压器。一个字“牛”

拆意大利原装的欧司朗石英灯变压器 型号:OSRAM HTB70/230-240 …

查看全部问答>

怎么看一个单片机是否可以在线编程?

是从一个仪器上拆下来的一块完整的单片机,没有任何资料,芯片是atmel的89c51,双串口的,看起来像是能够通过串口在线编程。请教下怎么去测试它是否可以在线编程呢,需要尝试些什么软件呢,我从前没有用过能在线编程的c51,所以一点不懂这个呵呵…

查看全部问答>

开发办执行摄像头采集程序加载共享库出错

# ./v4l ./v4l: error while loading shared libraries: cannot open shared object file: can not load shared object file: No such file or directory 我的lib里面已经包含: # cd lib # ls ld-2.2.3.so        ...…

查看全部问答>

求助:嵌入式网络视频监控问题

我现在做的课题是嵌入式网络视频监控系统,在网络传输部分,我用的是tcp协议,客户端是IE浏览器,当我下载代码跑起来时,在浏览器输入ip时,希望把网页发送到客户端,但显示的界面是完全空白,是接受到了数据?还是网页(我写了一个简单的)解析不 ...…

查看全部问答>

LED照明驱动电源电路设计技术应用一

replyreload += \',\' + 685113;  LED 的排列方式及LED 光源的规范决定着基本的驱动器要求。LED驱动器的主要功能就是在一定的输入电压范围下给LED提供恒定的、满足LED正常工作条件的工作电流。最常用的是采用变压器来进行电气隔离。文中论述了 ...…

查看全部问答>

求解:ucos下,关于TFT6758显示和蜂鸣器任务

在ucos操作系统下,利用ZLGGUI和TFT6758在smartarm2200上做个实验,总共建立了两个任务:汉字显示和蜂鸣器响。main函数如下: int main (void) {  GUI_Initialize();      // 初始化液晶     GUI_Set ...…

查看全部问答>

C8051F060 16位AD 精度能达到多少 ?

想问下 大家   C8051F060  16位AD的精度可以做到多少。…

查看全部问答>

电脑为什么用2年就慢?

我家有台电脑用了8年了,运行很慢,即使重装系统,安装版的当年XP系统,还是很慢,DDR?不是,硬盘?在网上搜了下,一盘硬盘寿命2-3万小时,所以我的硬盘基本算报销了。又参考一消息有服务器商一家公司就有几万块硬盘,每月都有换下的硬盘。。。 ...…

查看全部问答>