第六章 升级
当时在论坛上,网上看到有人做USB接口的,觉得很牛啊,于是自己也想做,但一直就是没资料,也不知道如何学。这时候好象又回到了当初认识单片机的时候,好象一切都很新鲜,全部都不懂一样。感到无从下手。2003年一月,是我大学4年级第一学期末,我们开始要毕业设计选题了,当时有两个最难的题目USB接口设计和蓝牙协议通信(我的是普通学校,这样的题目已经是最难的了,呜。。)我选了USB题目(顺便提一下,邻班的那家伙,就是我现在的室友,选了蓝牙的)。其实我选USB的时候对USB还是完全没有了解的,有时候想当时真的是勇字当胸了,因为做不出来很可能毕业不了的。但有时候一些技术的研究当成为了压力和任务的时候,进步反而快。
于是,我的USB就是这样起步的了。。。
有了任务在身,就不象以前那么地边玩边实验了,我放下了很多打算,开始专心研究起USB来,说是专心,但什么底子都没有。做个P呢!
开始是上驱动开发网的USB专栏的,但一看就傻了眼,哪里除了牛B的虾,就是菜鸟一群,帖子要么看不懂,看懂的都对我没有帮助。不过上那里我也获得了信息,就是用D12做USB比较普遍,于是设计就定位在D12了。正好这个时候周立功哪里出了本USB D12编程的书,虽然我对周X没有什么好感,但无论那本书是不是真正是他公司出的,在当时的环境下,这本书对于我是有着划时代的意义的(夸张了),当时是马上到广州买的,要价35元,还是烂纸油印版,不过学懂了就不说亏了;再要一片D12,20元;之后再买本USB协议的书,再从网上下了USB的相关东西,好了,就这么多,2本书,一个芯片,放下我的实验和一点点的激情和幻想,静下心来,我开始了闭门造车。那时候是2003年的农历新年啊,我的快乐的新年,基本就在闭门中度过,幸好还有拜年,讨了点红包,不然真的穷死了。
说起这个USB,他的确和我之前做的小实验有天渊之别,之前做的东西只是了解一下原理,动一动脑然后就可以写程序了,但这个是涉及协议,当时我还是第一次接触协议类的东西,没有什么动脑的空间了,只能老实地看,学。
记得鲁迅在写文章救国家之前呆在屋子里抄了一年的碑文,那一年的工夫练就了鲁迅的坚韧。之前经常焊万能板飞线的实验板,做多了,除了做出点板子来玩,还让我学会了坚韧和耐性(不知道多少人试过焊复杂线路的万能板?别以为简单,很烦的呢,要很有耐性,万一错一跟线,修改是比较痛苦的)有了这么一点耐性一个月的闭关练功,某天我突然领悟,(只见关内石门顿开,一人影身披彩云,飞星天外,此刻山摇地动——白菜出山啦~~·· #%#—%—) 台下众大虾:-_-#!..
当时是看懂了,其实是开始看懂了而已,明白到D12每个寄存器的意义,USB那些反反复复的数据交换的一点意义,说实在的,板子没做,程序没开始写,我只是放下所有东西看了一个月的书。。。呵呵
台下众大虾: -_-####!!!!.....
离开2003寒假结束还有一个星期,我尽情地玩去了~~
于是是开学,找指导老师谈毕业设计等等,我的指导老师是个博士猪,为什么叫博士猪?
因为他有博士的证书和头脑,但象猪般懒惰,所以叫博士猪,听说他很懒,讲完课了,就玩去了,不过这家伙讲课技术不简单,为什么?因为他讲的东西不简单,但我们听起来简单——牛也!!以下简称他博猪,博猪很有钱,因为偶然不偷懒的时候就出去接点活干干,一般一两个星期就干完,然后就拿个几万到几十万,之后又开始猪的生活,到快没钱的时候,又会去干活。跟博猪的毕业设计不错,因为他不懂USB,于是就没有什么要求,我想怎么发挥就怎么发挥。博猪对通信和DSP的算法等东西非常牛牛牛!!!让我感到什么是天外有天,猪外有猪!不过我最后也没有走通信的路。
博猪的牛没有带给我什么,只是送我4片D12,然后说,拿去做吧。我暗喜,4片啊,发达了:)
有两片我做感光板子把他们焊成双列直插,一片现在焊到老丁的板子上,自己还留了2片。于是当然就是做板调试啦,搞USB弄了不少时间呢。
当时其实想花钱买周立功的USB板子的,不过要价450大元,广东话说:好过去抢!于是没买,但到广州的时候死死地盯着柜台的哪个450元看了半小时,2个LED,2个键,D12唤醒用了片74XX,D12是总线方式连接。。于是我就做了块类似的板子出来了,而且还多了个串口,比周立功的450元强!!不过做的时候不小心把串口的收发脚调乱了。。(主要是选封装的时候搞错了,PROTEL不过关啊,后来苦练了)总的来说板子比较难看。
之后就是写程序。不过程序还没怎么写,之前投简历的公司要求我过去实习一个月了,于是那些早上12点起来,晚上2点睡觉的生活没有了。我得去上班了。上班实习,其实就是没事情干,当时有个工程师跳走,留下一个USB接口的项目没人做也,于是我又勇字挂胸前,
对主管说:我来做¥……¥#……—%主管瞪起金鱼眼看我,好象说:你小子!!!。。。
我不做,也没人手做,我不做,我又没事情做,所以,USB我做。
那个USB可不是D12,他是三菱的16位单片机自带的USB接口(我讨厌三菱,各位要多抵制日货),困难比较大,幸好他有所有的DEMO程序,呵呵,有程序在手,简单啦:)那次是我第一次接触51以外的单片机,而且还是16位的,算是升级了。而且那个项目是跑UCOSII的,当时还没有2.51出来,那些工程师手拿的是橙黄色的那本UCOS书,好象是2.01版本左右吧,不记得了。总之我就顺便连带UCOS也学了。
实习时间一个月,我收获不少:1。为他们的项目写了一个VC界面,用来做USB的上位机通信,2。修改了三菱的单片机DEMO程序(C的)让他能基本运行来收发数据,3。修正了三菱USB技术手册上的一个重大错误(那次后我知道日本芯片的DATASHEET经常出问题的,好象有意坑我们中国人)4。让我知道这个世界上有UCOS这样东西,正打算买书回来看5。劳累过度,住了一天医院。
走的时候主管说我行:)不过我走后,做的东西就没有用了,他们中没有人会VC,我写的东西是白写,后来哪个项目泡了,单片机部分的程序也就没了。再后来,我的电脑出问题了,我不小心把自己硬盘干掉了,第一份工作的成果完全没有了。一点底子都没有留。连带一些重要的资料也没有了,应该有几位老哥知道我这件事情的吧。还好,毕业设计我刻了光盘,不然。。。这次意外说明一个问题,我并不是别人想象中那么幸运的。
由于电脑的问题,拖了我好几个星期,幸好坚持之前下班的时候晚上一定要动动脑做点东西,不然真的赶死!最后USB毕业设计还是马马乎乎干完了(主要是PC端的程序是拿非利谱网上的,和我的51+USB配合起来不是很好,这个问题我还得有时间再解决,然后把整个系统完善一下)
在这里有个小插曲的:
在我下载了非利谱的USB资料后,看了一两天的哪个上位机VC程序,看懂了点,于是决定动手改改,发现改动起来其实很简单。于是沉迷了几天去研究和看懂那个程序。在毕业答辩的前一天,我突然想改进我的USB毕业设计,就是在下位机的板子上添一块128*64的LCD(我以前一直用来玩的那块),然后上位机的VC程序构造一个字符输入栏,在PC上输入汉字,然后在PC上转换出他的点阵(16*16的)再发到我的USB板子上,并在LCD上显示出哪个汉字来。但离开毕业答辩还只有一天,我当晚就挑灯夜战。先用跨线的方式把板子上51的多余脚引出来,接到LCD上(其实刚好够,呵呵)这样不用总线方式来驱动LCD,确保我即使到最后调试失败了,也不会影响我原先的USB部分(我还得毕业,输不起!!)焊好电路了,就要改动VC部分,因为PC负责把输入的汉字转换内码,然后在一个点阵文件中提取点阵(点阵文件是16*16的,可以用网上的很多点阵提取软件生成),所以涉及到文件的读写, 当时是用API来读写文件的:)提取点阵了,就要通过USB传到板子上,再通过单片机在LCD上重显。时间只有一天,我是不停的想不停的写了,当时我的VC还是不怎么样的,所以用了不少时间。最大问题是我没有仿真器!!还是用烧片子,插片子的方法调啊。我记得一直写到第二天早上6点的时候,成功把‘啊’’’’字传过去了:),之后当然要继续改写51的程序,让他能达到换行的效果等东西啦,于是继续写啊写啊。。
然后不幸降临:(。。。
当我再插上51的时候,然后插上USB接口(我用USB供电的),USB枚举成功,但LCD没有显示了(我在枚举成功后LCD会显示欢迎字段的,这时候真的麻烦了,因为很可能LCD坏了:(我马上拔掉LCD,插到我其他的板子上试,发现真的不显示了,天啊,倒霉的很啊~~我不段调负压电阻,发现LCD一点反映都没有,5555。于是省下不用试了,可以睡大觉了。
于是我人生中的第一个通宵编程以无奈告终。毕业设计当然是拿了个优啦,不过没有机会在博猪前展示我的USB传汉字功能了!!
这次又说明了,我有时候真的很倒霉的。
不过,有失必有得,我一直认为是LCD负压芯片烧掉了,所以希望找一块代换,但他是MAX的,比较难买到,我根据网友的指示去MAXIM哪里申请,于是我学会了申请免费东东:)后来证实我的想法没错,把负压芯片换上后,LCD就能用了:)
我觉得我弄的两个USB——实习公司的和毕业设计的,都是自己争取回来的,想想当初如果我不够勇气,不敢接公司的USB项目,怕毕业不了而不敢选USB题目的话,恐怕现在还对USB一窍不通,有时候,在工作中,生活中,我们应该付出一点勇气来,勇敢地接受挑战。特别在工作中,你要有勇气承担任务和责任,才能被高层相识。所以我觉得,炼虾米的第三要素:勇气!!
毕业答辩后有一个月才能拿到毕业证书的,我没浪费这个空闲,继续进修我的技术,当初发现51+D12传输速度实在是慢的很,于是又从论坛上得到信息,改用AVR单片机来做!!于是我就买了AT90S8515回来,当时买的真是牛贵!要我35元,唉,没办法。买了后发现烧写器不支持啊,于是把以前的哪个TOP151(呵呵,120元而已)以60元卖掉,换个TOP852:)
当然又得花钱啦,幸好家里人支持我开发,给了不少资金上的辅助。
搞AVR一切又要从头开始了,当然,因为之前有了51的底子,学起来很快,基本一个星期就算弄懂了,然后又用2个星期的时间把之前用51做的东西全部搬到8515上并做了条下载线来玩。其实在弄AVR的时候,把程序搬到我的128*64LCD上出现花屏问题的,这个问题弄了很久,最后发现AVR控制我哪个LCD不能用标准的时序的,标准时序51可以驱动,但AVR就不可以。
毕业前最后这个月其实我并没做到什么东西,因为这个月我真的都拿来玩了,玩了。。于是我从小学到大学的学生时代,结束了....