在大学期间,CPLD用过,FPGA没有弄过,不会Verilog,我用的是VHDL。我本科是学的计算机,但是软件方面确实不开窍,记得毕业设计的时候被师兄责备为C都不会,从大二暑假参加电子竞赛开始搞硬件,到现在大概有5年了吧,也做了大概10来个项目了,基本上都是用的单片机或者是单片机+CPLD的主控结构,也写过两本单片机的教程。一直想学习ARM,但是处于时间、金钱的原因,也只是停留在认识的基础上而已,没有实践的经验。
这么多年来,用的最多的还是单片机,我比较偏爱ATMEL公司的产品,虽然有功耗大的缺点,但是谁叫我第一块单片机就是用的AT89C51呢,记得当年停产的时候,我和实验室的一个同学还感叹了半天呢。市场上项目还是挺多的,单片机还是很好用的,因为在低端控制系统中,单片机基本上就可以胜任,51单片机比较便宜,而且现在也有很多高级51系列单片机,集成了很多功能,例如IIC、USB、CAN、MP3、MMC等,程序空间和内存也越来越大,64K+1K也很常见的,跑一些小的操作系统也可以了,例如uc/OS就可以,也可以移植TCP/IP协议,支持网络通信,所以51系列单片机完全可以应用于现在很多的场合,而且随着ISP和IAP在51单片机上的应用,开发起来也越来越容易,我现在做简单的开发用编程器(并口线)+串口就足够了。其缺点主要是解密性格太差,另外MIPS性能不高,即使用了X2功能,也很差。但是51系列单片机的Keil环境,确实非常好用,自己也可以做一个MON来配合调试(说到MON,我想说我做MON-51遇到的一个问题:我的MON-51运行起来之后就不能够stop了,只能够退出debug,大家谁知道是怎么回事情,告诉我一声,谢谢),非常方便。AVR单片机MIPS非常快,集成度比51要高,有些产品连外部晶体都不用,而且还有tiny等小封装系列,可以用于低成本,小体积的场合。而且AVR的保密性能比51要好一些,其缺点就是外部扩展比较麻烦,除了和51兼容的几款之外,基本上都要软件模拟时序,这也难怪,人家做AVR的目的就是单片化嘛:)AVR的ICCAVR和ICCTiny都还可以,用ISP下载也很方便,但是我没有用过AVR的仿真器,因为太贵了:(不知道怎么样,我调试基本上都是通过串口的,因为做的项目也不太大。
MSP单片机算是16位吧,用在仪表上比较多,我做过一个热表的项目,它的最大特点是低功耗,开发使用简单的Jtag来下载就可以了。PIC的单片机没有用过,也就不说了。整体来看,我认为很多场合都可以使用单片机,并不是非要用ARM内核、PowerPC等等,因为它们有不同的特点,所以以后很长一段时间,单片机还将有很大的用武之地,估计我们这辈子是看不到单片机被淘汰了,所以我们不必担心没有工作做,我们完全可以让我们的下一代去学习ARM什么的吧:)
说说我对单片机开发的看法吧,这只是我自己的看法,说的不对的地方,大家别拍我,因为我也只是一个研究生:)
1、搞单片机的绝对是有工作做的
,没有必要为自己只会单片机就耿耿于怀;因为单片机要用好了,也是很不容易的没有个2-3年时间,没有5-6项目的开发经验,很难说真正把单片机学会了,我觉得我现在也就是会用而已,远远说不到用好了,记得以前在21ic上看到过一个用于检验单片机开发者功底的系统,有时间找出来贴;
2、搞单片机绝对不能够只会单片机本身
,因为如果只熟悉单片机的话,你是什么都做不了的,计算机这个行业,除非你研究计算机本身,否则你就的把它应用到实践场合中去,所以你必须对它的应用环境有所了解。单片机系统这么多外围芯片,你必须知道在什么场合应该用什么来实现你的功能。所以学习单片机的人除了单片机,对什么通信原理、数字电路、模拟电路什么的也应该至少有所了解。
3、单片机是计算机处理器的一个分支
,我建议大家有时间找本计算机组成原理好好看看,我碰到过好多用单片机的人,连计算机的基本知识都不知道,怎么做设计阿,推荐一本书:《inter微处理器全系列:结构、编程与接口》(第五版),这本书是我本科时候带过我的两位导师和一位博士师兄翻译的,里面错误虽然有一些,但是大体还是不错的,当然,你要是能够看原版那就更好了。
4、多看书,多上网,多看看别人的设计思路和系统
开阔视野,为以后自己的系统设计打好基础 。
最后说说我觉得初中级单片机工程师应该达到的水平吧,呵呵,我觉得自己应该算是在初级和中级之间吧:)
1、对单片机应用场合有充分的了解,能够在应用项目中选择合适的单片机和外围芯片的型号;能够根据系统指标很快的设计出一个应用系统的体系结构;在深圳那边,做一个项目也给你的时间也就是一个星期左右,因为这些东西谁都能做,主要看谁能够做的又快又好;
2、熟练使用ASM和C等相应的单片机语言,有良好的编程风格和一定的编程技巧;
3、能够进行简单的PCB版图设计,至少能够设计出有一定抗干扰能力的单片机电路板;
4、对控制、信号系统有所了解,知道必要的算法;
5、熟悉计算机方向的简要开发,能够使用计算机开发工作做一些简单的主机端软件;
6、对模拟、数字电路、总线等比较熟悉,能够使用它们进行单片机的外围接口。
一句话,时刻努力学习,不仅仅学习单片机本身! |