时间:20100506
现象:我司准备在MTK6253上换蓝牙芯片为RDA5870.
调试过程:
1、首先将RDA5870给的相关代码放到我们自己的工程中,编译通过。但是在添加的时候要注意用相关的宏名控制。
首先在工程文件中添加:
RDA_BLUETOOTH_TYPE = RDA5870 #RDA5868, RDA5868+, RDA5870
然后在option.mak中添加:
ifdef RDA_BLUETOOTH_TYPE
ifeq ($(strip $(RDA_BLUETOOTH_TYPE)),RDA5870)
COM_DEFS += __BT_FM_RDA5870__
COM_DEFS += FM_RADIO_ENABLE
endif
endif
添加 COM_DEFS += FM_RADIO_ENABLE这个的目的主要是开启FM的功能。
2、然后就看原理图把的power、rest、urx、utx、32k、iic配置下。
3、经过上面两步之后,就可以先看看蓝牙与FM是否可以正常工作。但是很遗憾蓝牙不能正常工作,然后自己跟程序发现蓝牙在读ID的时候读取ID失败。因为蓝牙基本上不用IIC。故自己强制初始化发现再读取ID时,ID能读取正常。后来从RDA那里确认说这个IC就是要先初始化再读ID.至此蓝牙已经能正常工作。
4、测试的时候发现添加这个芯片之后蓝牙、FM都能正常的工作。但是待机电流太大。于是又查到时FM在开机的时候已经工作导致电流过大。通过跟程序发现FM中设置了一个RDAFMChipID来读取FM的ID.程序在运行的过程中RDAFMChipID这个全局变量在不停的改变。后来一直跟程序发现就是使用kal_sleep_task()导致程序出了问题,但是是什么原因暂时还不明,故自己改成for循环。问题得到解决。