TCXO和DCXO自适应兼容方案SprdFAE_T1、概念:所谓tcxo和dcxo都是提供给系统时钟的晶振源,二者的主要差异在于tcxo对于AFC(自动频率控制)校准可以较好的抑制温漂,但是dcxo在这方面有欠缺,只是价格便宜,需要3500内部对其配合才能较好抑制。2、机制:该方案使用的机制是通过nv值来完成自适应识别TCXO和DCXO工作。3、加入该功能的版本:MOCOR_10A_880XG_W12.25、MOCOR_10A_880XG_MODEM_W12.24和MOCOR_10A_880XG_W11.45_P12,注:MOCOR_10A_880XG_W12.23、MOCOR_10A_880XG_W12.24和MOCOR_10A_880XG_MODEM_W12.23也已经加入,只是不够完善。4、硬件原理图参考图:图1硬件参考图如上图所示,当GPIO40NF时表明接的是DCXO,当GPIO40贴下拉电阻(参考样机是10k大小)时,表明接的是TCXO,再次说明一下,GPIO40可以根据客户具体需要更改为其它GPIO引脚。5、如果可行推荐使用没有其它用处的gpio脚,目前sprd的参考方案是使用gpio40引脚,gpio40之前是作为内部AudioPA供电方式的选择,高为不使用内部LDO给内部AudioPA供电,低为使用内部LDO给内部AudioPA供电,由于sprd的参考样机都是使用内部LDO给内部AudioPA供电的方式,为了保证不需要对参考样机重新改板,因此使用gpio40来作为该功能的识别脚,在此建议客户,规划阶段使用无其它用处的gpio脚按照上面的参考原理图进行设计;6、软件版本注意事项:使用该功能,请注意查看工程mk文件中定义了RFCHIP=3500,硬件使用了sr3500的射频芯片,以及识别的gpio脚也已经定义好;7、软件的配置方法:在nv_type_4band.nvm中使用了一个nv值-NV_TCXO_DCXO_IDENTIFY,通过设置该值来配置TCXO和DXCO的识别方式以及识别流程,该值主要有如下的配置格式:A、直接设定为0x0000,指定只使用TCXO方案,而不会自动识别;B、直接设定为0xffff,指定只使用DCXO方案,而不会自动识别;C、设定为0x0001—0xfffe中的某个值,表明要通过判断gpio引脚的输入值的高低电平来自适应TCXO和DCXO,而NV_TCXO_DCXO_IDENTIFY对应的值即为gpionum,该gpio引脚硬件连接方法以及选配方法请参考上面的“45”;D、该参考方案所使用的函数是在init.c中的SCI_is_TCXO_DCXO,依据上面所述来代码实现,当开机出现dspassert350c的报错时,说明在软件方面TCXO和DCXO识别有误,需要查看软件和硬件的配置是否正确;E、Nv的修改方法,主要有两种,一种是直接通过nveditor工具来修改NV_TCXO_DCXO_IDENTIFY为需要的值,位置请见图2;另一种是直接在config_info.nv修改nv_type\NV_TCXO_DCXO_IDENTIFY=所需要的值,该值如果没有可以手工添加,如果已经存在可以手工修改,如果有类似于TCXO_DCXO_AUTO_ADAPTATION_SUPPORT宏控制,该宏无论是否未定义,都可以根据需要删除或添加,该宏只是在SPRD的参考方案中控制是否需要自适应的方法,只在config_info.nv中使用,不会影响其它模块,请见图3;F、该兼容方案各模块间的执行流程图如图4所示。图2nveditor工具修改NV_TCXO_DCXO_IDENTIFY截图图3config_info.nv文件修改举例(如果没有该项可以手动添加配置)开机L1CSCI_is_TCXO_DCXOL1C确认是TCXOFALSETRUEL1C确认是DCXODSP走对应的控制流程L1C通过ShareMemory告知DSP后续工作注意:目前,6820里面DSP已经写死了为DCXO,所以无论上面如何判断,都会走到DCXO的控制流程该函数判断nv值:“NV_TCXO_DCXO_IDENTIFY”0x0000:硬性指定为TCXO;0xffff:硬性指定为DCXO;0x1—0xfffe:使用对应值的GPIO来判断,GPIO为高则为DCXO,低为TCXO图4兼容方案的执行流程图