CC2541程序向CC2540移植

最近项目需要使用BLE通讯,因为没有使用USB,于是选定使用CC2541,价格能便宜些,性能还好(功耗小)。按照TI的例程很辛苦地写完程序,反复调试通过,于是准备小批量。没想到,有句话果然不假,最容易发生问题的时候一定会发生问题。程序放进去连BLE设备都扫描不到。

按照经验,这应该可以确定就是硬件问题。可是,硬件都是买的市场成品模块,怎么可能是硬件问题呢。于是陷入了一个死循环。经过反复烧写程序进行新旧的对比,终于发现是采购把一部分模块买错了,上面焊的是CC2540!于是只好修改程序。

下面进入重点,TI提供了CC2541和CC2540两个工程目录,源码使用的是相同的文件。因为既要用CC2541又要用CC2540,不希望每次重新打开工程,所以要对两个工程进行合并。IAR非常好的提供了这个功能。

首先新建一个工程配置,如下图:


然后New一个配置,这里起名为CC2540:


注意新工程选择的是基于CC2541的,相当于把CC2541的配置先复制过来。


之后在Workspace中就可以切换到CC2540的工程了:


这个工程是复制的CC2541,现在没有任何区别。因此需要接下来进行修改,概括如下:

1. 修改调用的库文件;

2. 修改工程配置参数;

3. 修改工程配置文件。

这三缺一不可。程序有可能也要修改,例如用到了IIC或者USB之类的,这个要具体分析了。

第1项:修改调用的库文件

首先,修改调用的库文件,在LIB目录上点击右键,添加Files,添加CC2540_BLE_peri.lib文件。这个目录要仿照下面那个CC2541_BLE_peri.lib(可以事先右键看一下该文件的目录):


添加完成后,CC2541_BLE_peri.lib文件上点击右键,勾上排除编译选项,将该文件变灰色:


完成后如下图:


接下来还要到Workspace中选择CC2541工程,将CC2540_BLE_peri.lib文件排除编译,步骤同上,以将各自的工程源文件区分开:


第2项:修改工程配置参数

Workspace中选择CC2540工程,然后右键选择option:


修改以下地方:


参数就这些,修改好就可以了。

第3项:修改工程配置文件

这个非常重要,TI使用了两个工程配置文件,但是我们只需要修改buildConfig.cfg就可以:


到源目录复制一下,要重命名做个区分:


用记事本打开,将所有CC2541修改成CC2540即可:


然后要回到上一步的参数配置中,要修改以下参数:


同样的,CC2541的工程文件也要这样修改,因为源文件已经被复制了。并且在工程文件中也要分别排除编译,这个跟第一步是一样的,效果如下,不再详说。


至此,必需修改的地方都完成了。

但是实际程序中可能还需要修改一些地方,我遇到一个看门狗问题也被困扰了一天。经过反复排查才发现,因为我启动了看门狗,换用CC2540的库以后,它的执行时间比CC2541的长,所以偶尔来不及喂狗,就被重启了,导致在扫描设备时总是连接不上。后来把喂狗程序放在osal_start_system函数里就可以了,这个函数在OSAL.C文件中:


所以看起来CC2540果然要被TI淘汰掉的,它的库都不如CC2541精简,可能很久没维护了吧。



猜你喜欢

转载自blog.csdn.net/mmhh3000/article/details/52883863