OM6220_IRQ脚控制RFPA的应用

zhongke · 186次点击 · 11个月前

本帖介绍OM6220的IRQ脚如何控制RF PA的操作,图片不贴上来,但是可以下载附件去看,里面有代码,有时序图,还有详细的文字说明。


1.概述

OM6220是北京昂瑞微电子技术有限公司(以下简称“昂瑞微”)2020年最新推出的一款2.4G收发芯片。是在原来HS6200的基础上的升级版本,加入了一些新的功能。本使用手册是针对OM6220如何通过IRQ脚来控制外部PA进行收发的操作,使ESOP8封装或者是单端晶体的SOP8封装(都要封IRQ脚出来)。下面会详细介绍如何使用这个IRQ脚来控制PA


 

2. OM6220PA的原理图介绍

   本次使用的PA是芯百特的CB2401,这个芯片是由TXENRXEN脚来控制PA的收发模式,RXEN脚固定接4.7K上拉到3.3V电源,TXEN脚为高电平时PA就切换到发送模式,TXEN脚为低电平时PA就切换到接收模式。不考虑其他模式,在接收模式下PA10mA的电流消耗。

做为发射端的模块,RXEN脚始终上拉到电源,TXEN脚是接到OM6220IRQ脚,因为OM6220在清状态寄存器之后IRQ脚就是变成高电平的,而写TX FIFO之前的动作就是必须要清TX FIFO。并且PATXENRXEN同时为高的时候就是发送模式。

做为接收端的模块,RXEN脚始终上拉到电源,TXEN脚要经过一个三极管把IRQ脚的信号反向一下。由于进入接收模式之前是要先清掉状态寄存器,清掉RX FIFO的,而此时IRQ脚是为高电平的,进过三极管反向之后到PA TXEN的信号就变成低电平,RXEN是高电平,所以PA处于接收模式。当接收到数据并且校验完成之后就会将IRQ脚拉低,此时经过三极管反向之后TXEN的信号就为高电平,PA就处于发送模式。接收端出现IRQ信号之后OM6220内部就会切换到发送模式等待130us左右回ACK信号(没有配置ACK的时候就不会切)。而此时IRQ变成低电平了,所以经过三极管反向之后TXEN脚就为高电平,PA处于发送模式回ACK信号。

除了要进行数据收发,其余时间我们都将PA置于接收模式。

当然也有其他的PA,控制时序是不一样的,可也根据他的控制真值表看看如何切换收发模式,原理上也是可以控制的。

图表 1 OM6220 IRQ控制PA---发送端电路接法

图表 2 OM6220 IRQ控制PA---接收端电路接法

3.OM6220的软件设计介绍

3.1 OM6220 32K定时器的函数接口

关于OM6220的基本的收发程序我们这里就不介绍了。这里主要是介绍如果配置IRQ脚去控制PA的收发模式。从上面的原理图中可以看出,接收端的IRQ脚是OM6220自行控制的,我们不需要去干预他。我们只需要去干预发送端的IRQ脚即可。

OM6220内部有一个32k的定时器,这个定时器设置好时间之后,时间节点到他就会将IRQ脚拉低。基于这个功能,我们可以实现IRQ脚来控制PA的收发模式切换。但是前题是我们要先抓出我们要先知道RF启动发送开始到接收端收到信号这个时间是多长(这个时间跟RF的硬件有关,也跟用户发的数据长度有关)。还需要注意的是SPI的速率是多快,SPI操作寄存器读写所浪费的时间我们也要考虑进来,下面会详细介绍。

         首先是设置32k定时器的几个函数,hal_tim_tick_lock()这个函数是锁定32k定时器的当前计数值。hal_rf_read_tim_tick()这个函数是读取32k定时器的当前计数值。hal_rf_set_tim_tick()这个函数是设置32k定时器在多少个tick之后产生信号(一个tick31.25us)前题是要先读取32k当前计数值,然后再加上要设置的tick值在写回去,这样才可以得到正确的定时中断千万千万要注意,这里的SPI读写速度很关键

图表 3 OM6220 32K定时器的函数接口

3.2 OM6220 32K定时器的使用

初始化完RF之后,使用下面两句来使能和启动32k定时器。

图表 4 使能和启动32k定时器

启动完成之后,下面就是如何使用这个32k定时器。由于锁定32k定时器的操作是一个不确定的时间,所以我们清fifo清状态寄存器,写TX FIFO之后,并不是马上拉CE激活发送,而是先锁定并设置好32k定时器,才拉CE激活发送。这样的话定时器定时的时间才准确,设置的时间只跟SPI的速率有关系。

图表 5 OM6220 32K定时器的使用

这里需要注意的是设定32k定时器的时间,在锁定32k定时器的操作的时候,由于SPI速率的快慢不同,这个时间会有波动,其他的时间基本都是固定的,只跟SPI的速率有关系。为什么说锁定32k定时器的时候时间会波动呢,比如第一次读取的时候,没有锁定,在接着读的时候,可能在你刚开始读的时候就锁定了,可能在你读到一半的时候才锁定,所以这个时间不确定,SPI速度越快越准确,SPI速度越慢误差越大。

图表 6 OM6220 32K定时器设定时间的操作讲解

所以最终设置的值就是上图中的T1T4的时间总和。也要注意发送端IRQ变化要滞后接收端IRQ变化,由于接收端接收到数据之后IRQ立马变化,到他回ACK的时间是130us,所以发送端的IRQ变化可以设置在之后接收端IRQ变化的65us的位置,这样T1的误差基本上可以不用考虑了。

图表 7 通信数据包长度SPI速率IRQ滞后时间

4.OM6220接收端的操作

接收端需要注意,因为是收到发送端的完整数据之后就会立马产生IRQ中断还有状态寄存器,但是此时还要等130us之后才会回ACK的数据。所有进入接收IRQ中断或者是查询到状态位之后,要等待一下等接收端回完ACK在去操作读FIFO,清FIFO,清状态寄存器的操作。至于这个时间多长,也是跟数据包长度有关系的,如果可以的话,尽量留长一点,比如500us

图表 8 接收端等待回完ACK的操作

 


OM6220_IRQ脚控制PA的应用-202306077209.rar
被收藏 0  ∙  0 赞  
加入收藏
点赞
0 回复  
善言善语 (您需要 登录 后才能回复 没有账号 ?)

请先登录网站