一、背景介绍
根据TI的官方回复,cc2540只能调节四档发射功率,分别是(从大到小)4dBM、0dBM、-6dBM、-23dBM,而且不
能通过操作寄存器等方法对功率进行调整,如果需要更多级别的发射功率的话,请考虑更换芯片。其中最大的功率
4dBM在理论上的通讯范围达到100米,不过不少开发者反映实际应用的时候可靠的传输距离只有50多米。顺便说一
下cc2541的最大发射功率为0dBM,所以相对于cc2540在最大功率下的可靠传输距离要短一些不过更低功耗。cc2540
默认设置的发射功率为0dBM。既然是BLE (Bluetooth low energy),那就要强调低功耗,如果对低功耗有较高要求,就
选cc2541.其实41和40相差并不是很大,40有USB外设,而41没有,看你具体的项目需求选择。如果没有特殊要求的
话,两者皆可。
二、如何操作
以SimpleBLEPeripheral为例
只需要在void SimpleBLEPeripheral_Init( uint8 task_id )这个函数里面调用宏定义函数:
HCI_EXT_SetTxPowerCmd(xx);
其中xx参数有如下几种:
LL_EXT_TX_POWER_MINUS_23_DBM,对应-23dbm
LL_EXT_TX_POWER_MINUS_6_DBM, 对应-6dbm
LL_EXT_TX_POWER_0_DBM, 对应0dbm
LL_EXT_TX_POWER_4_DBM对应4dbm
就可以啦,简单吧,不过刚接触这一块是很容易把一处地方弄混淆了,就是在这个函数static uint8 scanRspData[] =的最
后两行。一开始我也是以为在这里直接修改0所对应的数值就可以了,然后还傻逼傻逼地去测它的RSSI值,然并卵,因
为在这里不能修改它的发射功率,读出来的RSSI值基本是一样的。
在修改了发射功率之后,我定性得测了一下不同级别的发射功率之间的RSSI值,其中相邻的发射功率之间相差并不是
很大,不过最大最小的之间的发射功率之间读出来的RSSI值相差30多(测量的距离大概为5米),由于没有定性测量,
加上RSSI值并不是一个非常精确的值,所以只能作为大致的参考。
这当然是一个小实验啦,不过当时我为了找到一种简介明了的方法可是找了好多资料,有些说的比较繁琐(估计是大
神们为了显示他 们深厚的功力,开玩笑的哈),倒不如用这种简单实用的方法,小菜鸟一看就懂。