标题:
DM643项目开发小结(原创)
[打印本页]
作者:
reporter
时间:
2014-1-20 14:56
标题:
DM643项目开发小结(原创)
菜鸟这篇文章本来贴在blog几天了,今天偶然发现hellodsp转载,想想俺在2姨这里潜水也有两年了,特别在DSP版块,吸取了不少营养,所以贴出来,希望能给冷清的DSP版增加点人气^_^DM643项目开发小结(原创)       经过半年多的学习,自己做的DM643板子样机总算出来了,今天有时间,用流水帐记录一下,,,,      项目主要是做一个视频测量设备,之前外包某位牛人用2440开发,项目以流产结束,木办法,重担就压在了菜鸟偶的肩上,当然对刚毕业的偶也是一个难得的学习机会,,,,,因为需要显示要求比较高,并且需要复杂的OSD功能,所以偶选择了DM643平台,之所以没有用比较流行的DM642是因为开发板是从合众达买的,而合众达的DM642开发板没有OSD功能,TI的又太贵,加之我们并没有多路视频的要求,所以,,,       四月初拿到开发板,当时偶对DSP是纯白薄啊(当然现在也很菜拉),之前只是玩过51和ARM7而已。于是恶补啊,买了几本书《DSP原理及开发应用》(支长义等编,主要讲C54X的),《DSP嵌入式应用系统开发典型实例》(李显等编,主要讲6000系列的),还有就是两本TI文档的中译本(english比较菜哦):《TI DSP/BIOS用户手册与驱动开发》,《TI DSP集成化开发环境(CCS)使用手册》,关于买书,自从工作后,偶是从不吝啬的,总觉得,花几十块钱买本书,在实际工作中就算是能解决一个问题,也值了^_^        其实书买了不少,大多数并没有细看,当然菜鸟觉得也没这个必要,只捡自己感兴趣的看看,其它的工作中遇到问题时再翻书查就OK了,,,就这样粗略的学习之后,就开始玩开发板了,先按照使用手册把例程运行一遍,对硬件及CCS环境有个大概了解之后,就修改例程写自己的应用程序了,这一写就到了9月初(中间画SCH等用了一个多月),因为当时自己做的PCB刚回来,还没调通,就在开发板上做了一个样机拿到深圳光博会参展了,,,,,程序比较大,具体的代码细节这里就略了,下面主要记一些硬件调试过程,,,,,         在四月中旬出项目进程表的时候,和老大商量好先做板子再搞软件,所以当时就暂停玩开发板了,转而参考开发板作自己的原理图。关于LAYOUT方面,我以前只有两层板经验,加上当时赶时间计划在光博会之前把样机拿出来,所以外包给深圳一位老哥(55555,又丧失一次学习LAYOUT的机会)。做原理图偶大概花了一个月时间出了第一个版本,然后就联系IC经销商买器件做封装啊什么的,加上与深圳那位老哥的不断沟通修改,PCB到我手里的时间已经是8月底了,当时软件上还有一些问题要解决,所以用自己的PCB调试做样机已经不太可能了,干脆仍在那里,光博会回来才开始调试,,,,,       光博会归来,开始调试,PCB为8层板,硬件结构为DM643+FPGA+CPLD+ARM7。1)BGA焊接:DM643是548脚的BGA封装,间距为0.8mm,所以焊接必须外包了,费了好大劲,才从网上查到一家南京的BGA焊接公司,联系之,那位哥们也挺热情,于是就100元/片焊了两片(本来PCB,器件都是按3套备的,但SEED当时就剩两片卖了,汗,,,)2)BGA焊好拿回来后就开始焊电源,这里值得一提的是,象这种比较复杂点的板子,最好是一个模块一个模块焊上去,焊好一个模块,检查运行是否正确,然后再焊下一个模块,这样出了问题(不出问题几乎是不可能的)好查点,否则如果一次焊了很多器件,出了问题会把人给搞死的,后面遇到的种种问题更验证了我这种想法的正确性。1.8V和3.3v都是用的TPS54310,先焊1.8v的(因为DM643要求内核要先于外围上电),网上有很多文章讲这个IC的,主要是需要几个LOW-ESR的电容,还有就是反馈电阻需要精密的,焊好之后才发现电感封装做小了(因为以前从没用过DC/DC器件,没考虑到电感的电流),没办法,1.8v用了两个并联,3.3v用了四个并联;LOW-ESR电容偶幸运的买到了,不关心,主要就是那两个决定输出电压的反馈电阻了,datasheet上建议用1%的精密电阻,偶没买,实际上就是买到精密电阻,也不一定是合适的,因为公式是VO=0.891 +  (R5 x 0.891)/R4 决定的,所以不太容易配置这两个电阻,偶的建议是随便先弄一个10K的电阻作为R5或R4,然后找一个可调电阻作为另一个慢慢调,当然要注意电压一定要从低往高调。         1.8v调好之后,有了经验,3.3V就好调了。值得注意的一件事是,PCB上只有DM643芯片的时候,1.8V和3.3V与GND之间的电阻都是几十欧姆,当焊上电源芯片之后,都成2-3欧姆了,1.8V的电阻在这个范围内我还不太奇怪(datasheet上标称core的工作电流为800多mA),但3.3v就不行了,与论坛上别人的差的比较大,,,,不过,TPS54310性能到不错,电压还算稳定,就是DM643有点发烫,实在找不到原因,就先凑合用了,后来发现两个reserve脚的3.3v和1.8v电压由于疏忽接反了(汗~~~),现在3.3V电阻小且DM643发烫的原因暂定在这里,以后改版再验证,好在是reserve脚,要是其他电源脚,那立马需要改板了,,,,,3)电源搞定之后,就可以连接仿真器进行IO操作了,我开始时把两片SDRAM也焊上了,其实没这个必要,例程为seed的,功能是利用GPIO14使LED闪烁,仿真器能够连上,但每次LOAD&nbsp
ROGRAM后总是提示“can't set breakpoint at  0x******”,这个问题搞了n天,把配置脚改一下,不行,CMD改一下,还是不行,把GEL通看一遍,试着改几个地方,依旧不行,,,最后实在没办法,就开始怀疑硬件了,静下心来仔细想想,这个IO操作是在仿真环境下运行的,除了与DM643有关,没有其他什么影响因素了,而仿真器也已经提醒DM643连接良好,那么是坏片的可能性也很小了,唯一的可能性就是BGA焊接出了问题,这期间也在网上看到有人遇到类似情况,也是BGA焊接不良造成的。于是赶忙重新焊接一块,上电一仿真,先前的问题没有了,板子上的LED闪烁拉,高兴!!!!(nnd,看来BGA焊接不可靠哦~~)。  这里还有一件事情不得不提一下,我们知道,1.8v和3.3v电源上都有很多滤波电容,特别是有很多0.1uf的,我是在验证LED能够闪烁之后才焊上这些电容的,0402封装的,全部在BGA正背面,焊上之后,重新上电,3.3v不正常,被拉到2v一下,54310很烫,用万用表量一下,发现3.3v与GND之间的电阻由原来的2欧姆多变成0点几欧姆了,典型的短路,赶紧把刚焊上的滤波电容焊掉,然后再量又到2欧姆多了,电压也正常了,然后再把这些0402的电容焊上才OK!0402啊,累啊,55555~这里其实我们又看到了一个模块一个模块焊接并验证正确性的好处了,假如我一股脑焊了很多器件上去,然后发现短路了,那就惨了,大家都知道,短路特别是电源短路是电路调试中比较难查的现象,有时候会累死人的,而通过这个板子的调试我发现滤波电容短路发生的概率是很高的(包括电容本身质量问题短路和焊接不小心短路)。4)在3)中已经可以验证DM643没有问题,BGA焊接也没有问题了,下面就焊接两片SDRAM,SDRAM挂在EMIF上,而EMIF是需要时钟驱动的,原理图设计是25MHZ有源晶振经过PLL芯片ICS512倍频到133MHZ的,问题又出现了ICS512没有输出,因为ICS512是一个非常简单的8pin IC,所以偶很快断定是假货(上网查查买到ICS512假货的还真不少),说到假货,后面还有遇到,并且还与IC经销商之间的争执,,,没办法,改配置脚,先用内置时钟驱动EMIF,配置为600/6 = 100MHZ。然后运行SDRAM读写例程,老天保佑,OK!5)接下来焊接FLASH,参考开发板原理图,我们的FLASH芯片是AM29LV033C,焊接上去后,出问题了。首先,芯片很烫;其次程序不能load了,既然不能load,4)中已经被验证工作正常的两片SDRAM也不能工作了;还有就是从DSP输出的连接SDRAMECLKOUT没有信号了;但是芯片所有引脚的电平是正确的。片子很烫,所以每次上电一小会赶紧断电,经过不断的实验,确定不是CCS和代码的问题后,只好判定片子是假货,再翻一下21ic上CHUNYANG大虾的假货辨别的经典文章,发现我们的3片AM29LV033C表面有明显的 划痕,边沿不齐,基本断定是片子的问题,,,,没办法,由经另外一个经销商从深圳调了2片AM29LV033C,2天后货到,把原来的芯片焊掉,焊上新买的,上电,不烫,连接CCS,load正常,运行FLASH读写例程,读写0x00000000,0xffffffff,0x55555555,全部OK,高兴!!!然后就是恼火,妈的,这批近3000元的IC中有两片IC都是假货!立即打电话给卖器件给我的胡小姐,这种事嘛,人家当然不愿意解决了,理由是“时间太长了”,但小mm态度还是不错的,最后,让偶出示一张技术鉴定书,盖上公司公章,说是请示总经理,偶就把上面的实验现象写了一下,传真过去,大概一个星期后打电话给俺,退了假片的款,,,,说实话,就200块钱,我不追老大也不会怪我,但我觉得不追回来很窝火,浪费我那么多时间!!!假货就一定要赔偿,也算是尽自己最大努力给公司减小损失,心安理得,,,,6)再接下来就是CPLD了,以前从没有动手用过FPGA/CPLD,仅大四在北京实习时买过一本夏雨闻编的《verilog数字系统设计教程》,对verilog的基本语法还算了解。考虑到板子上的CPLD主要控制FLASH高三位地址,还有IIC_SEL等,都是简单信号,而且我的程序256K足够了,加上现在没太多时间研究verilog,没有象合众达板子上一样作寄存器,直接置0或1,ISE仿真OK!以后有时间再研究吧。。又花半天焊了一个JTAG下载线,下载顺利!7)再接下来就是焊接视频编解码器,FPGA等,FPGA封装引脚做宽了,这时显微镜又发挥作用了,要不真的死定了,全部焊好,用FLASHBURN把程序烧录进FLASH,上电,很幸运,有图象,但不正常,花屏,示波器一查,原来是解码器CVBS输入端一电容短路,换掉,OK,图像比较清晰,但有横纹,google一下,断定可能是视频编解码器AGND没有磁珠隔离的缘故,但这片AGND在中间层,没办法,反复试验,最后把模拟1.8V,3.3V的隔离磁珠去掉直接短路图像才出奇的好了,这个问题也放在再版解决了,,,,至此,样机调试基本结束,现在已经测试3,4天了,跑到600MHZ,还算稳定,,,,欢迎多多交流,huiliangcai@126.com 
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0