记录一次CC1310软硬联调bug

现象1:

这次自己打的板,作为接收板RX(称作板A),RFRX程序运行到RF_Runcmd函数后出不来,但是在我第一次打板(称作板B)是可以正常发送和接收的,因此怀疑硬件问题(两次打板layout不一样,第一次比较小心严格)。

调试过程:

1.VDDS电压正常,DCDC_SW电压正常,VDDR电压正常。(各项电压均正常)

2.bug板A有三个供电口直接从板外取电,但是只有其中一个供电时程序才正常,但是后面又卡死了。测经试三个VDDS对地阻抗均为无穷大(电源电压直接从板外供电,所以无穷大正常)

3.猜测板外供电电源功耗不够,事实上CC1310功耗最大只有几十mA,因此排除

4.记得以前第一次遇到这个问题是因为外部晶振24M放错了放成了20M,因此接下来排查晶振问题。CC1310内部自带负载电容,所以可以起振,晶振选型最大ESR为50R,满足CC1310要求。示波器抓起振波形,发现在执行gpio初始化函数后晶振失效。(暂时还未发现具体原因并解决)

5.发现不同板子CC1310的丝印不同,此次bug板A的丝印有些异常,丝印是突出的,且明显,且对比开发板丝印字体不太相同(怀疑芯片)

6.bug板和正常板B很大的区别在于layout不同。(准备重新layout打板)

 

现象2:

用另一种layout板(称作板C)作为发送端RFTX,每6秒发送一次,而接收端需要20秒甚至一两分钟才能收到一次,丢包严重。

调试过程:

1.使用bug板A接收,丢包问题复现(无法定位是板A还是板B问题)

2.用正常板B接收RFRX,丢包问题复现(定位为发送端硬件或软件问题)

3.用正常板B接收,用正常板B发送,丢包问题复现(开始怀疑软件)

4.调试正常板B发送程序RFTX,发现新的问题:只发送一次,且计数器不清零

Times ++;

if(Times>=6)  Times  =  0;

5.单步调试,发现执行Times=0后,计数器并没有清零,猜测代码被编译器优化,设置优化等级为不优化。发送次数恢复正常

6.调试后的软件使用板C发送,丢包问题复现(查看layout)

7.发现板C天线终端比正常板B多串联了一个CL,是以前为了做双天线兼容设计。(怀疑此处多余造成)

8.板C断开多余CL,重新发送,丢包问题复现

9.断开多余CL后,焊接上弹簧天线,丢包解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值