您的位置:首页 > 其它

关于ZIGBEE的CC2530+RFX2401C协议栈的修改

2015-12-16 13:58 330 查看
参照网上论坛和一些相关的帖子很容易就找到设置了;小白在这里再详细的总结一下,把遇到的一些问题提出来。

首先在网上买了一对CC2530+RFX2401C的模块,发射功率和1.2公里吹嘘的话也不知道是不是真的,暂时当它是真的吧!手头上也没有什么工具可以测这些参数。

跑题了,还是先看看代码怎么修改吧。我们根据模块的硬件连接线找到RFX24001C的控制线先,根据这颗PA数据手册我们可以清楚地知道PA控制管脚是TXEN和RXEN

知道这两个脚,那我们就很容易在CC2530上面找出控制这两个的引脚,因为ZIGBEE的厂商不一定都是按照官方连接的管脚做的,这样子也为一些不清楚的同学、糊里糊涂测试的同学带回正轨。现在我手上这块模块CC2530使用的是P1.1--TXEN;P1.2--RXEN;然后根据RFX2401C的管脚控制定义进行程序修改

知道这两个之后我们来修改代码:

第一步:在hal_board_cfg.h中找到#define xHAL_PA_LNA,把它改成#define HAL_PA_LNA;这样是打开协议栈的PA使能。

第二步:在mac_radio_defs.c中找到MAC_INTERNAL_API void macRadioTurnOnPower(void)这个函数

/* P1_1 -> PAEN */

RFC_OBS_CTRL0 = RFC_OBS_CTRL_PA_PD_INV;

OBSSEL1 = OBSSEL_OBS_CTRL0;

/* P1_2 -> EN (LNA control) */

RFC_OBS_CTRL1 = RFC_OBS_CTRL_LNAMIX_PD_INV;

OBSSEL2 = OBSSEL_OBS_CTRL1;

把原来那部分屏蔽后,再复制粘贴修改成上述代码。到这里代码已经改完了,我们可以去测试了。

如果做到这里,你的测试完全成功,请不要高兴,因为作为一个研发人员还是需要更深刻的理解的。在这里我就有几个疑问,提出来让大神们指正指正……

1、协议栈中的PA和LNA代表的是什么意思?而RFX2401C中却命名为TXEN和RXEN,这样程序的修改虽然是交给协议栈处理,但协议栈并不知道PA芯片是CC2591还是RFX2401C?这里面的PA控制过程还需要验证。有帖子讲PA是发射电路用的信号放大,LNA是接收信号放大。

2、我们知道有OBSSEL0-OBSSEL4的五个这样控制,分别对应P1.0到P1.4的管脚,OBSSEL_OBS_CTRL0和OBSSEL_OBS_CTRL1给它们赋的值代表的是置0或置1吗?

3、这只是打开PA的使能而已,一些同学测得结果往往不理想,为什么呢?或许你并没有把发射功率设置到最大4.5Dbm。

不知道大神们有没有遇到过更神奇的一些事情,可以一起分享一下!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: