MTK平台modem配置先从modem配置表里了解一下每一个文件夹对应哪个频段的配置其他没有标记的,目前我们是用不到的,也不要去修改里面的参数。打开每一个需要修改的文件夹,可以看到三个子文件夹,类似下图:我们只需要修改上面框选里面的文件夹里面的选项即可。进入到文件夹里面,发现有好几个文件,我们只需要修改下面标红的两个就可以了,一般都是**_mipi.h和**_rf.h文件各个文件夹里面文件详细说明如下图:了解了上面文件说明后,下面开始讲具体参数配置。一、mmll_rfUSID配置以及修改由于我们目前使用到的SKY的PA和开关,所以他们两个的USID是一样的,出厂默认都是OxF,按照常理来讲,由于PA和开关挂在不同的MIPI通路上,是不会有地址冲突的问题,但是目前MT6735平台存在弱4G信号下,切不回2G通话,也就是有时候打不进来电话,所以需要将这两个设备的USID改成不一样,修改PA和开关都可以,下面示例修改PA的USID。首先打开SKY77643的规格书,找到这个位置稍后将会用到里面的ProductID和ManufacturerID然后在mmll_rf文件夹里面打开这两个文件夹在mml1_custom_mipi.c文件里面找到这个位置,按照上面的描述修改相应的值后面的newUSID可以修改为0x1~0xE之间的一个,在mml1_custom_mipi.h文件里面对应修改就可以了,由于我们修改的是PA,所以在portsel下面需要选取MIPI_PORT0,如果是开关的话,就需要对应修改为MIPI_PORT1。至于在这里选取修改的USID是PA0还是PA1,ASM0还是ASM1,可以从后面的文件里面看出来。比如在4G里面的lte_custom_mipi.c文件里面,可以看到在TPC这里会有一个USID的调用。这里可以看到,在同一个文件里面对同一个PA可能会有两个USID的调用,主要因为这个modem沿用了phase-1设计的模板,很多东西没有和phase-2设计选用的PA对应上来,我们目前的设计中,FDD和TDD已经做到一个PA里面去了,所以USID应该是要一致的,所以我们后来把所有用到PA1的地方全部改为了PA0。如上为修改USID内容。二、l1_rf2G配置在配置寄存器之前,需要在l1d_custom_mipi.h里面确认mipi是否是打开的,在这个文件里面找到如下位置,这个值是1,就代表mipi是打开的,后面我们在配置的时候,只需要配置mipienable选项就可以了。由于2G部分的发射走的是开关的通路,所以配置2G的时候,都需要在开关端配置完成。在l1d_custom_mipi.c文件里面打开,先从大致的组织架构来讲,一般来说,在配寄存器之前,会有一个event事件让我们去定义,大致的意思是从第几行到第几行是什么功能,比如上图定义的是,从第0行到第1行是开关的预打开,这里的第0行就是我们实际的第1行,所以0~1,是需要占用两行去配置的。从上面的event配置可以看出来,实际开关的打开时间在QB_MIPI_RX_ON1这一步。上图是GSM接收的寄存器配置,在前面event事件定义的时候已经说过,第1,2行是开关的预打开,发射的时候也是一样的,所以,当我们看到0x1C这个寄存器的时候,我们都不用去修改,在上面的图中,一共有2次用到0x1C寄存器,第一次是初始化,最后一个是关闭作用,我们实际上用的到去配置的就是第三行,开关的00寄存器,这里拿SKY77916举例说明首先,可以从原理图上看出来,这里和3G的使用用的SKY77590类似,只不过是SKY77916外围可以提供14个TRX口让我们去做更多的频段上图是SKY77916的寄存器0的每一位说明,目前我们的modem里面都是用16进制的,所以转换成2进制,就一共有8位,特别注意的是第5位那里,0是正常增益,1是低增益,只针对高频,这里后面在B39的发射配置的时候会用到。在控制开关打开关闭的时候,我们可以近似的把下面4:0这一行里面的值作为开关打开时候的值,例如,在GSM850RX配置的时候,TRX口用的是TRX4,所以此时GSM850接收寄存器0这里就需要配置为0x02,以上为GSMRX配置。GSMTX配置和RX的event事件定义差不多在第1,2行还是开关的预打开,后面在开关PA打开的时候引入了寄存器1,寄存器用于设置PA的偏置电压GSM按照默认的去设置就好了,一般来说影响不大,在这里配置寄存器0的时候,和前面不一样,可以看到黄色箭头指向的位置,这里之前应该是一个数值,现在是GGE_MIPI_PA_G8这个宏,在紧跟着下面会有一个定义这里截取的是GSM850的配置,所以在GMSK调制发射的时候,值是0x0A,可以对比上面开关寄存器0的真值表,是LB_GMSK_TX,下面8PSK调制发射的时候,也就是我们平常说的EDGE,对应真值表是EDGE和线性发射,后面配置B34,B39的时候,它们的发射也需要选择此类发射。照此类推可以配完GSM其他频段。另外在配置的时候,可能会看到有如下字符NOTCH_SWITCH,set0,set1,这些看到直接跳过,不需要配置。接下来是配置l1d_custom_rf.h文件前面也有提到,我们在这里需要配置mipienable的情况,这里的配置是BPI的配置,和我们之前的3G平台一样,我们只需要配置PR2和PT2后面的值就可以的,其他的可以不用管从35平台的原理图可以看出,BPI控制从0~27总共28个,所以转成16进制,一共就有7位,BPI0~3第最低位,4~7是倒数第2位,以此类推。比如在B2,B3的接收位置,有一个开关去切换接收,它用的BPI口是10,又从开关特性知道,当BPI10=1的时候,主接收与B3的接收相通,所以在B3也就是DCS的PR2的地方,我们就需要配置成0x00000400,如果发射里面有开关,类似。最后,就需要配置GSM的发射接收口了,在l1d_custom_rf.h文件下面可以找到这样两个位置上面是RX,下面是TX,还是和之前一样,这里只需要配置mipienable的选项,由于目前我们的项目接收都是和3G,4G(主集)双工器共用通路了,所以,这里接收我们只需要看Band,不用去分2,3,4G了,比如B2,在2,3,4G里面的接收口都会是IORX_MB1。发射端口配置,根据原理图去匹配,一般来说,发射端口不会更改。如上为整个2G配置方法。三、3G配置(1)、WCDMA控制逻辑配置在ul1d_custom_mipi.h文件里面确认mipienable是否打开,默认都是打开的,可以确定下,不做修改。打开ul1d_custom_mipi.c文件,先可以看到RX的event事件,这里比较简单,只有2行,第一行初始化,第二行打开开关对应下面的data控制和2G不一样,3G和4G是分段处理的,所以,所有的寄存器0都需要配成一样。在WCDMA的TX配置的时候,首先看到event事件定义定义打开的其实也只有第一行也就是说,只有0x1C这里起了作用,后面的都是在关闭PA,在这里如果配置了PA的寄存器0和寄存器2也是没有关系的,通过实际测试发现,电流没有影响,但是为了安全起见,还是在TX里面把寄存器0,1,2,3的值都配置为0x00,发射的寄存器0,1,2,3的值,可以在后面TPC里面配置,同时,可以看到第6,7行是打开开关的,这里和前面一样,TRX口用的哪个开关就配置为其对应的值。接下来是TPC里面的参数配置可以看到,最右边是有注释的,L7~L0,这是功率等级,L7是最大功率,从上往下依次减小。这里PA是用的SKY77643,用B1举例说明一下每一个寄存器的配置。先来了解一下SKY77643的内部架构图以及MT6169transceiver每个端口支持的频段,这里可以同理共用到SKY77643HB,MB,LB每组可以做到的频段。从上面原理图对应的来看,B1使用的是MB1口,然后对应到SKY77643的真值表来配B1的TX,首先寄存器0直观给我们显示到的是用二进制的,所以,这个值是01001100,由于寄存器0的作用是打开PA,所以在选好端口发射后,需要让PAenable打开,对应到十六进制就是0x4C,接下来的寄存器1和寄存器3都是配置PA的偏置电压的,按照SKY提供的文档配置即可,这个可以参考文档:SkyworksMIPISettingforMTK。如果存在ACLR比较差的情况,可以按照真值表将值改大,对应的电流也会变大,这个在4G上面可能需要改动,WCDMA的时候一般按照默认的去写就好了。对于寄存器2,它的作用是打开PA内部的开关,所以从上面的真值表对应下来就是10100000,即是0xA0。对于寄存器0和2,7个等级都是一样的值。接下来是ul1d_custom_rf.h文件我们进来也是可以看到BPI控制的,和之前一样还是配置PR2和PT2,这里多了一个RXD的选项,一般来说WCDMA的灵敏度比较高,可以不配置分集,如果遇到WCDMA灵敏度差的时候,可以尝试把这边的分集打开,如果有开关,就需要配置一下这里的BPI。这里也是选取相应的端口即可。在这个文件的最下面,可以看到如下的图这也就是定义我们打开哪几个WCDMA的频段,需要特别注意的是,前面3个是定义高频的,后面2个是定义低频的,要对应上频段去打开,以免出现一些不可预知的问题。以上为WCDMA的整个配置。(2)、TD-SCDMA控制逻辑配置在使用SKY77643+SKY77916的组合的时候,PA和开关都可以做B34,B39,目前为止我们只在L1上面做了TD-SCDMA,PA开关搭配是SKY77824+SKY77910,这个组合TD只能做在SKY77910上面,下面大致介绍一下配置方法,TD和其他几个制式配置方法有点不太一样,但是配置的地方不会太多。打开tl1d_custom_mipi.h文件由于我们使用的是SKY77910的TD通路,所以在下面寄存器数目那里设置为3。首先是RX的配置,先是On再Off,按照注释去配置,通过注释我们也可以看到,一个完整的TDband分成了高低各16位,在高16位里面,0x0F5C的意思是,0x0F是开关的USID,5C代表寄存器0x1C,也就是和前面一样,初始化寄存器,对应前面低16位就是0x38,后面两个0是对齐格式用的,没有实际意义,所以下面的0x0F40即是,开关寄存器0的值为0x0D,B39也是类似,在RXOff的时候也是一样,先是让寄存器0standby,然后再关闭。在SKY给到的配置文档上面RXOff有一个特别说明,在配置的时候按照它的要求去改就行了。在TX配置的时候,可以看到module是PA,在这里还是SKY77910,本身它既是开关也是PA。在后面的band配置那里,我们看到了和2G发射类似的方式,紧跟TX配置下面就有一个配置表从后面的注释内容可以看出来,在这里一共分成了高中低三个模式,寄存器顺序是0x1C,0x01,0x00,寄存器1是配置bias的,所以可以从SKY提供的这个文档上找到配置的电流值(SkyworksMIPISettingforMTK)。打开tl1d_custom_rf.h文件,接下来是配置TRX端口,在该文件的中间靠下的位置找到T_RF_PORT_SEL我们项目是做了B34,B39,且这两个频段复用MT6169的发射和接收端口,只是在SKY77910那边的开关是分开的。上面2G01代表B34,1G90代表B39,这里是和它们各自的频点对应上的。以上为整个TD-SCDMA配置方法。四、el1_rfLTE配置4G的FDD部分和前面WCDMA的配置方法比较接近,而TDD由于其工作特性,所以会和FDD有一些不同,主要是在SKY77643内部有一个3P4T开关需要配置,所以会在流程上稍微多几步。(1)、FDD配置首先打开lte_custom_mipi.c文件,先从FDD的event事件定义来看RX:和之前WCDMA类似,第一行是初始化,第二行是配置开关,这两步是打开接收通路的,后面两行是关闭RX。TX:发射也