版权声明:本文为博主原创文章,未经博主允许不得转载。
一、天线配置参数的修改配置:
[此部分转自: http://wenku.baidu.com/view/5b75e7144431b90d6c85c770.html]
在做P1验证的时候修改相应的射频参数,在这里对方法和原理做个简单的说明
首先要看code\make\RATECHXX_XXX_GPRS.mak文件中RF_MODULE的定义值,这个值会决定选择哪个目录下面的l1d_custom_rf.h文件参与编译。例如RF_MODULE = MTKSOC1_CUSTOM,那么参与编译的文件就是code\custom\l1_rf\ MTKSOC1_CUSTOM\l1d_custom_rf.h
打开对应的l1d_custom_rf.h,找到如下宏定义
PDATA_GSM850_PR1
PDATA_GSM850_PR2
PDATA_GSM850_PR3
PDATA_GSM850_PT1
PDATA_GSM850_PT2
PDATA_GSM850_PT2B
PDATA_GSM850_PT3
PDATA_GSM_PR1
PDATA_GSM_PR2
PDATA_GSM_PR3
PDATA_GSM_PT1
PDATA_GSM_PT2
PDATA_GSM_PT2B
PDATA_GSM_PT3
PDATA_DCS_PR1
PDATA_DCS_PR2
PDATA_DCS_PR3
PDATA_DCS_PT1
PDATA_DCS_PT2
PDATA_DCS_PT2B
PDATA_DCS_PT3
PDATA_PCS_PR1
PDATA_PCS_PR2
PDATA_PCS_PR3
PDATA_PCS_PT1
PDATA_PCS_PT2
PDATA_PCS_PT2B
PDATA_PCS_PT3
我们软件要修改的就是这些宏对应的值。
宏名称可以看成由4个部分组成,开头的PDATA是个公共标识,没有具体的意义。
第2部分指示网络频率,即 GSM850,GSM,DCS,PCS。现在我们大部分项目都是4频,即值手机网络频段850/900/1800/1900MHz,其对应关系如下表:
宏标识
网络频段
GSM850----850
GSM---------900
DCS---------1800
PCS---------1900
第3部分指示工作方式,即PR,PT。PR表示接收阶段,PT表示发射阶段。
第4部分指示工作阶段,即1,2,3。1表示准备阶段,2表示工作阶段,3表示结束阶段。(注:有些l1d_custom_rf.h里还有2B阶段,后面再详加阐述)
综合上述,每个宏其实都对应了手机射频某个具体的工作状态,例如PDATA_DCS_PR2
就可以看成是DCS1800频率接收工作状态。
了解宏的具体含义,下面就是定义对应的值,这个值可以看成由1个10bit二进制数表示,每一位具体的定义由硬件电路决定,其中真正起作用的是 BPI_BUS0~BPI_BUS9这10个接口中,与RF_PA_EN,HB_TX,LB_TX,PCS_RX这四个引脚相连的4个接口。下图中相连的是BPI_BUS4~BPI_BUS7,那么二进制数中我们需要修改的就是第4bit位到第7bit位,其余位可以默认为0
图1
RF_PA_EN,PCS_RX,HB_TX,LB_TX的值则需要去看如何与RF芯片相连,并要查看RF芯片的datasheet
图2
现在例子中的芯片是RF7161,打开这颗芯片的datasheet(一般可以问射频工程师要),找到对应的逻辑真值表%3/p>
这逻辑真值表表示了通过TX_ENABLE,GpCtrl2,GpCtrl1,GpCtrl0这4个输入端输入不同状态来达到切换RF芯片工作状态(即Tx Module Mode里的值)的规则,GSM850/900 TX Mode表示GSM850或GSM900发射工作状态,DCS1800/PCS1900 TX Mode表示DCS1800或PCS1900发射工作状态,RX1~RX4表示不同频段的接收工作状态,但具体是哪个频段,则要看对应的硬件原理图
图3
上图示例中RX1连接到了GSM850,RX2连接到了GSM900,RX3连接到了DCS1800,RX4连接到了PCS1900。
做好了准备工作,下面就是计算值,任何频段的准备和结束阶段,对应的值都为0,即
PDATA_GSM850_PR1
PDATA_GSM850_PR3
PDATA_GSM850_PT1
PDATA_GSM850_PT3
PDATA_GSM_PR1
PDATA_GSM_PR3
PDATA_GSM_PT1
PDATA_GSM_PT3
PDATA_DCS_PR1
PDATA_DCS_PR3
PDATA_DCS_PT1
PDATA_DCS_PT3
PDATA_PCS_PR1
PDATA_PCS_PR3
PDATA_PCS_PT1
PDATA_PCS_PT3
这些宏都定义为0
而我们每次需要修改的只有
PDATA_GSM850_PR2
PDATA_GSM850_PT2
PDATA_GSM850_PT2B
PDATA_GSM_PR2
PDATA_GSM_PT2
PDATA_GSM_PT2B
PDATA_DCS_PR2
PDATA_DCS_PT2
PDATA_DCS_PT2B
PDATA_PCS_PR2
PDATA_PCS_PT2
PDATA_PCS_PT2B
为了方便,可以在用excel里先根据当前项目硬件的连接关系填写好对应关系,如下图:
然后根据RF芯片的逻辑真值表来填写值就可以,例如计算GSM850_RX,根据真值表可填为
没有使用到的BPI_BUSX位则填为0,那么GSM850_RX对应的值就是0010000000B,转换为十六进制表示就是0x80,对应软件里的宏PDATA_GSM850_PR2定义为0x80
其余的值是一样的方法来计算。
重要:前面还留了关于PDATA_XXX_PT2和PDTA_XXX_PT2B没有说明
在53平台上,l1d_custom_rf.h文件里就有PDTA_XXX_PT2B的定义。首先根据前面方法计算出来的值作为PDTA_XXX_PT2B的值,然后以该值为基准,将RF_PA_EN对应位置为0,重新计算得到的值就是PDATA_XXX_PT2的值。
以上面的例子来说,计算DCS1800_TX值为0001110000B,十六进制值为0x70,将该值作为PDATA_DCS_PT2B值,然后将该值对应位PF_PA_EN置为0,即第4位改为0,得到新值0001100000B,十六进制值为0x60,将该值作为PDATA_DCS_PT2的值
当RF_MODULE定义为AD6548_CUSTOM时,l1d_custom_rf.h没有PDTA_XXX_PT2B的定义,因此只需要根据上述的方法计算得到值后,直接作为PDATA_XXX_PT2的值即可,如上面的例子计算DCS1800_TX得到0x70后,直接作为PDATA_DCS_PT2的值即可
一般修改如下几个文件:l1d_custom_rf.h,m12193.c,m12193.h
1.修改文件m12193.h中:
#define PSI_EE (6405) // (4100) /* DAC initial value */ //modified 20120416
#define C_PSI_STA (418) //(1170) /* C_PSI_STA= sta^(-1) * (2^12), sta=8.3252 */ /*MT6252RF*/
2.修改文件m12193.c中:
AGC_PATHLOSS_GSM850
AGC_PATHLOSS_GSM900
AGC_PATHLOSS_GSM1800
AGC_PATHLOSS_GSM1900
#define APC_DC_OFFSET 245 /// Vito
GSM850_RampData //850
GSM_RampData //900
DCS_RampData //1800
PCS_RampData //1900
3.修改文件l1d_custom_rf.h中
Custom_RF_XO_CapID 36//0 // 0318 Vito RF SOPPDATA_GSM850_PR1//此部分具体配置方法见上文一所述
PDATA_GSM850_PT2
PDATA_GSM850_PT3
PDATA_GSM_PR1
PDATA_GSM_PT2
PDATA_GSM_PT3
PDATA_DCS_PR1
PDATA_DCS_PR2
PDATA_DCS_PT3
PDATA_PCS_PR1
PDATA_PCS_PR2
PDATA_PCS_PT3