为什么80%的码农都做不了架构师?>>>
CC2530是Zigbee无线传输解决方案的SoC芯片,最近画原理图时遇到一些问题。
##数字信号电源和模拟信号电源
CC2530芯片有6个模拟信号电源引脚和2个数字信号电源引脚。至于模拟信号电源和数字信号电源的区别,可以参考1。对它们接地时要进行一些处理,比如加一个电容。各个公司的接地方案不尽相同。 如图所示:
##CC-Debugger调试和下载 CC-Debugger有10个引脚,DC和DD为调试时钟和调试数据线。而下载又有4个。用FlashProgrammer进行下载到底需要用几个引脚?经过分析,用两个Debug引脚就可以了。Ti的官方方案是用2个引脚。有图为证:
##CC2530和天线如何匹配 天线线路的输出阻抗与天线阻抗等大就能获取最大的天线辐射输出。具体参见官方QA和21IC。官方说法是必须给天线匹配50欧姆的阻抗。由于PCB板的材质,介电常数未知,要画的线宽和其他元件的总阻抗满足50欧姆是不可能的。天线A5887的资料请走这。天线还真是一个大坑。
##加不加射频前端放大器PA 一般的方案是CC2530+CC259,网上查不加PA的传输距离是75-100m,完全满足室内环境。
##复位电路## 开始以为复位电路可以省略,在上电的一瞬间芯片自己复位。有些芯片自带复位电路,一上电可以自己reset。但是因为充电电容大,不易集成到芯片内部。所以有些芯片把复位电路放到外面了。
复位是在CPU上电时维持一段时间的低电平。一般有一个RC充放电电路,延迟时间为2.3RC [06]。2.3RC过后复位信号消失。如果按下按键则有一个低电平信号对芯片进行复位。
##元件对应封装## 所选的CC2530为40引脚的QFN,在网上可以找到画好的封装。其它元件选择贴片比较好。 电容和电阻都选为为6-0805_M,0805是按尺寸命名的。
32M的RF晶振选直插的,32.768K的芯片时钟芯片选小手表封装。
尺寸大小为0.8inch(2.0mm)W:0.5inch(1.25mm)。 更多的封装见3,工程实践和看来的理论还是差很远。
##硬件电路验证测试##
进行调试遇到的问题:
- Error in Hex file verification 校验出错
CC-Debug勾选Erase and program就能够烧进去程序。网上查的说法是由于Debug口没有焊接好。留待改进。
- CC2530 - ID0702: HEX file content at address 0x3FFFF exceeds chip's 32 kB flash size
买的芯片是CC2530F256,特性:256 KB In-System-Programmable Flash,8-KB RAM With Retention in All Power Modes。就是有256K的ROM烧写程序。可这里的报错是因为Flash只有32K,难道厂家坑人。
进行下列测试:
- 烧写12.9K的hex1文件,烧写成功。
- 烧写46.8K的hex2文件,烧写成功。注意46.8K>32K了。
- 烧写95.1K的hex3文件,烧写失败。错误同上。
- 烧写58.4K的hex4文件,烧写成功。
- 烧写62.5K的hex4文件,烧写成功。
这就只能上网查了,在[04]中发现有同样的问题出现。
After I did 11.2 Pre-pend the Boot Code hex image to the Application Code hex image.The flash programmer says "CC2530 - ID0050: HEX file content at address 0x7C7FF exceeds chip's 256 kB flash size" ,and I have tried to download hex file of bigger size(about 700K)and succeed,I know that my problem is not the size.
但是这个错误是超过256KB的字节。可能my problem is not the size,too.
找到另外一篇问CC2530F256只识别32K的文章[05].按照下列做法测试。
- Actions选为Read flash into hex-file,即把Flash中的文件读到PC的文件中。大小为92K。
- Actions选为Erase program and verify,竟然能通过验证。
看其他的说法可能是焊接有问题,我现在决定再焊一块试试。
焊接了3个版本A、B、C后惊奇地发现C版本正常工作,可以烧进去720K大小的hex文件,验证不出错。真是太好了。
下面就是测试天线和无线收发是否能正常工作。测试无线收发是个难题。因为做的PCB板上只有RX和TX引脚。现在有两种方法进行测试:
- 需要一个下载进去就能全自动组网的程序,而不需要任何按键触发来进行绑定。
- 制作另一个带按键的版本,手动让Coordinator和Router联网。
后来发现,手头有一个绑定端口的点对点传输程序。我只要“去除”按键绑定就可以了。
基本思路是Coordinator(制作的 PCB板作为Coordinator)的按键判断里常写为True,不需要按键触发绑定。而Router的程序不需要改变。
##若干启示##
- 晶振离CPU尽量近一些,在同一层进行走线。而且两线的距离应该完全相同。不然可能无法起振。
- 数字地和模拟地一定要分开,不然会给传输信号带来很大干扰。
##Reference
[01].http://blog.163.com/zhshhe@126/blog/static/16328516120117623420120/
[02].http://bbs.21ic.com/icview-386418-1-1.html
[03].http://fossawolf.blog.163.com/blog/static/4672876320074122139107/
[04].http://e2e.ti.com/support/wireless_connectivity/f/158/t/216615.aspx?pi267162=1
[05].http://bbs.eeworld.com.cn/thread-327470-1-1.html
[06].http://hi.baidu.com/jeloc3648/item/91146924df5a700008750869