本文共 3327 字,大约阅读时间需要 11 分钟。
(一)卵
2005年9月1日,在这个全国大中小学生入学的日子里,我也幸运地走进一家工厂的研发部门,正式踏入我的技术之途,学习之旅,不归之路。 当年报考计算机科学与技术系,并非出于兴趣爱好,高中时候的我根本就没见过电脑,甚至连PC机与电脑是什么关系都不知道。仅是因为邻家哥哥的一句话“女孩子不适合做这行,这行更新太快,太苦。”女孩子有什么不适合的,我不怕苦也不怕累,偏要选这行!年少的轻狂与倔强一不小心成就了我一生的方向。 初到公司第一天,经理安排一个蓝牙项目的同事带我。他给我讲了一下充电锂电池的保护芯片,其中有过充过放等许多我第一次听说的名词。然后给我一个指甲大小的保护芯片让我往上焊元器件。在这之前我就不知道有铬铁这个家物事,更别说焊接了。我清楚的记得那一个下午我费了九牛二虎之力只焊上了四个0402的电阻。在19度的制冷空调下,我硬是出了一头的汗。 大概经理也从中看出了我的硬件功底确实等于零,便又安排了一个超级负责超级有耐性的略偏软件的单片机工程师带我。他用AVR单片机,先给我一张电路图,让我照着这张图自己焊一块AVR开发板。那只是一个实现AVR基本功能的电路图,除了使MEGA16L正常工作的晶振、下载接口与电源(USB)外,另有一个上电复位电路、用MAX232电平转换的DB9还有4 个LED灯。可怜我当时也是第一次看电路图,将我脑海中所有高中时候学的物理知识全调出来,也还是看不懂,只有依葫芦画瓢。哦,还没有元器件。于是我又第一次去了新赛格。刘姥姥进大观园一样,瞅啥都新鲜。于是我认识了电阻电容晶振和自锁非自锁按键,还学会从电阻上面的圈圈的颜色读出阻值、uF与pF之间的换算关系,还知道了LED灯是有正负的串口线是分直通的和交叉的。 不到50个元件的插件开发板,我足足焊了三天,板背面乱糟糟如蜘蛛网一样五颜六色的飞线自是羞于见人,但是好歹这块板子可以正常工作了。可喜可贺。下一步是用C语言写程序。轻舒一口气,终于到一个我学过见过的东西了,虽然在学校的时候学得也不那么扎实,但与那些我没听过没见过的东西相比,还是让我找到些感觉与自信。看着那八个LED灯在我的控制下忽明忽暗,我竟兴奋得手舞足蹈。:P真是让人见笑了。 俗话说:头三脚难踢,如果说跑马灯程序的完成标志着我入行的第一脚,那么接下来安排给我的SMBUS侦听就是第二脚了。 MEGA16L与24C02与模拟IIC通信倒是容易些,看懂通信原理,知道通信协议基本可以成功,没遇到什么大的困难,但是侦听就不那么容易了。要先弄懂串口通信原理,借助串口调试软件,将侦听到的数据发送到PC端的调试软件上。这时我搬到了工厂附近住宿,这样就有大量的时间去玩那个SMBUS了。我几乎每天都是办公室最后一个走的,每天都泡在电脑前的C语言里。带我的那个单片机工程师在我的办公桌的前一个位置,在这段时间里也再次鉴证了他极大的耐性与责任心。太多时候,我自己都没有心情继续下去,烦躁得直跟他吵。我自己都觉得过意不去了,人家也不该你不欠你的,那样一心一意毫无保留的教你,你还这事那事的对人家发脾气,确实是太过分了,但我当时又控制不住情绪总忍不住发火冲他吼叫。他却从来不生气,顶多说一句“我不管你了,你自己弄吧。”但是过不了多久,又不放心还是回过头看看我这边进行得怎么样了。呵呵,真是很可爱。真的很感谢他。 在这位超级耐心的工程师的超大力的指导下,在我始终不弃不舍的辛勤努力下,终于在2005年10月25日,在串口调试软件上收到了一串串正确的数据。初战告捷,长舒一口气。虽然我用了近两个月的时间才将这个别人大概两天就可以搞定的问题解决,但是我知道自己在困难面前是扬头走过的,没有留下任何遗憾。 稍事休息,放松一下心情后,经理又交给我一个任务:将一个96*16的单色OLED点亮。这个东东部门的同事谁都没玩过,只能靠自己了。 查一下OLED的资料与spec,知道要点亮OLED需要用锂电池提供3.3V和10V两个电压,3.3V为芯片驱动电压,10V为像素点亮电压。初步选用NCP1406提供10V,外围电路有一个6.8uH的电感,和一个MBR0520和几个电容电阻。 XC6204 提供3.3V,外围只有两个电容。而OLED与外部的通讯用的是IIC,我用AVR单片机发通讯指令,我的数据线的电平是5V,OLED的是3.3V.又需要一个GTL2002做通讯电平转换。大概思路理顺后,就开始学Protel 99E,用它来画电路图,做各种封装,生成网络表,走线。最后给PCB厂家做板,我就写程序。10天后,板子回来了,我的程序也写好了。开始焊板,由于为了让板子尽量小,我布的是双面板,而且大都用的是0402的封装,这一回再次考验了一次我的焊接术。一个拇指大小的板子,我足足焊了一整天。而一些引脚特密的像OLED等都是求我们另外一个硬件工程师帮我焊的。 呼呼焊完板后,烧进程序,没有反应。我就在程序上找原因,反反复复的调试,未果。这时同事建议我不要只在软件上找原因,要确保硬件的正确性。我就又开始测硬件,经理过来帮忙测试,结果把我头天辛苦焊到23点的元器件都给拆了。555。最后发现那个6.8 uH的电感没有起作用。这时要么换芯片要么换电感,但是都需要一定时间。于是就直接用DCPower供电。并发现OLED的1脚位置定反了。重新试过,还是不亮。找OLED厂家的技术支持,又重新仔细的看了看spec,知道了这个芯片工作前是要reset的。如果不reset,它就不会工作。开始用一个电容与一个电阻做一个简单复位,依旧是没有什么反应。实在是找不到什么原因了,就在一筹莫展的时候,它奇迹般的突然亮了。“奶奶的。”究其根源,原来是我将reset的时序弄错了。应该是先reset再运行程序,我却给它先运行程序再reset鬼才会亮。点亮后显示数字与字符就很简单了,一天搞定。 这时就要想法让电池供电了,不能总是带着两个大DCPower去检测呀,那个10V的IC最终决定用TC1044S替代。问经理要把这个OLED显示检测设备做成什么样的呀,他说了一句非常经典的话:你想怎么玩,爱怎么玩,就怎么玩吧!这就是他的领导风格,从不约束我们的思想,总是尽量的让我们依着自己的想法去做事。很庆幸遇到这样的经理。于是我就穷尽所思地去设计这块板。当然我的硬件功底不行,我就频频去请教我们的硬件工程师,他更是知无不言言无不尽,经常是你问他一个问题,他会连带着把周围20公里以内的东西都告诉你。唉,小女子真是三生有幸,怎么竟遇到这些优秀的同事呀。对他们给予我的莫大帮助我真的是感激涕零,发自肺腑的。 电路最终设计完成。硬件部分:有两个电源供电,一个是3.6V锂电池给OLED供电,一个是5V直流电源给AVR单片机供电,两个电源共用一个开关。锂电池部分用R1114N转换3.6Vto3.3V,用TC1044转换3.6V-10V。在10V的输出端加了一个MOS1130,用单片机的PD7脚来控制。5V电源部分用USB和7805两种可选方式提供,根据DJ0702的2、3脚插入的时候断开,不插入的时候连通的特性,将第三脚连接USB的地线,使USB与12V稳压器不能同时供电。OLED的reset部分用一个NPN三极管连接到单片机的PD6,上接一个上拉电阻,通过单片机给一个高电平复位。I2C部分就用GTL2002DP作电平转换。软件部分:复位后先是棋盘格滚动显示效果,调用Timer0中断检测一个非自锁按键是否按下,来切换显示效果,可以切换到英文、中文、数字等。用另一个非自锁按键通过INT0中断关闭显示。 Everything is OK,2006年1月21日,交了工,请假回家,舒舒服服的过了一个新年。至此为止,我的头三脚总算是踢出去了,总算是拿到了一张此行业的入行券。真心感谢我的经理和我周围的同事对我的耐心与宽容,我会永远将同事的这份无私情谊放在心中,永远记得他们给我的帮助。此时我感慨最深的就是四个字“学无止境”,尤其是在这一行,好似一叶孤舟行在茫茫大海,永远看不到尽头,永远摸不清方向,唯有逆流而上,奋力航行。转载地址:http://xmjqj.baihongyu.com/