电子技能的提升
一、51单片机生涯
前面介绍了那么多知识,终于可以畅谈我和单片机的故事了。
我记得非常清晰,学习51单片机是从15年4月中旬开始的,那时候对这个芯片是没有任何了解的。直到学长告诉我们要学习51单片机的时候,我才去网上搜了一下这个东西。
在经过此初步的了解之后,才发现了原来还有这么强大的东西,简直就是奇迹!这么小的一个芯片,里面装了各种配置,当时只是觉得很牛逼,还没有形成其实这个芯片就是电脑的缩小版这样的一种认知。
学习的方式,就是开发板学习,这个开发板是我们实验室集体统计采购的。在拿到开发板之后,学长教我们编写了第一个程序——点亮单个LED灯。就那么简单的一个实列,我们就搞了一天,才把程序给搞懂了。
后面,大家就跟着开发板教学视频,边学便下载进去看现象。刚开始学的那几天,特别来劲,每当把自己敲出来的代码下载进开发板,观察现象的时候都是非常激动的。那时候的感觉就觉得这个世界像被自己控制了一样,男性的控制欲得到了极大的满足。
可是,新鲜感总是要过去的,这时候,你必须想办法维持,让自己不断地成长。单片机的学习,其实还是有难度的,尤其是学习到通信协议那里的时候,根本不知道在讲什么,就比如IIC通信,相信学过单片机的人,大家都有深刻感受吧!
这时候,你就不能简单的往后赶进度,而要在每一个阶段,去亲自做出一个小成品,然后去不断地形成这样一种正反馈,促进自己不断前行。当时我也是这么做的,那时候边学习单片机,边学习AD,然后去把知识不断地输出。
我记得我做的第一个小成品,就是单片机最小系统,虽然现在看来是非常简单的一个东西,但是麻雀虽小,五脏六全!当时从画原理图,到PCB,再到覆铜板的制作,最后焊接、下载和调试,简直就是一个世纪呀!特别是覆铜板的过程,非常漫长和有趣。当时,我们实验室条件不是很好,所以不能直接去淘宝打样,其实也挺好的,至少知道了一种电路板生产的原理。
后面,随着学习深度的加深,做出了很多有趣的小制作,比如心形灯、温度测量显示,甚至后面参加大挑做的一个下水道检测水位的这样一个产品。其实在制作这些小作品的同时,也让我知道了淘宝上有各种各样的元器件和模块,这所有的一切都为我大三创业做机关埋下了很夯实的基础。
在整个大学的生涯中,我们课程体系中也会有51单片机这样一门课程,不过遗憾的是,那门课程要到大三才开设。而因为实验室这个平台,我大一就已经接触了这样一个东西。所以非常感谢那个平台,让我在专业方面提前开阔了视野。
二、32单片机生涯
在学习了51单片机之后,早已经对单片机这个东西甚有了解了,所有不管是从内部资源,还是一些常见应用,都可以说的头头是道。但51单片机只是一款入门级的单片机,只适合用来教学用,如果要想跟上社会的脚步,我们不应该停留在这个阶层。
所以为了更深入的学习单片机,我便开始向更高端的单片机进军,而这款单片机便是STM32。32作为一款基于ARM内核的单片机,是目前市场上最受流行的。主要的原因,就是内部资源丰富,功能强大,足足可以应对大多数产品提出的要求。
当时买32开发板的时候,我是买的最便宜的Mini版,但是价格已经接近200元了。这可是我省吃俭用积攒出来的,没办法,谁让自己热爱电子呢。
收到开发板之后,我便开始了学习生涯,本以为有了51的基础,学习起来肯定很容易上手,结果我完全错了!当时学习方式有两种,一种是基于寄存器的,还有一种是基于库函数的,我选的是基于寄存器的。
一开始,我先熟悉了硬件环境,后面开始进入第一个案列的学习。当然第一个案列同样是点亮LED灯,但是这个过程不像51单片机那么简单了。首先要配置引脚模式,引脚模式有四种,由对应的寄存器控制。
配置好寄存器之后,才可以进行LED的点亮操作。当时唯一的感慨就是,32的寄存器真多,多到你怀疑整个人生,回想一下51就那么十几个,而32呢,反正我没数过,几百个应该是有的!更何况51是8位的,而32直接就是32位的。51中,我们在大脑中可以非常清晰,每个寄存器的每一位的含义。但是如果你用学51的方式这样去学32,肯定是行不通的。
这时候我才真正知道,为什么大多数工程师都要有查“数据手册”的习惯,因为我们根本记不住那么多知识,只要知道怎么会用就行了。
后面随着32知识的积累,慢慢的也就习惯了其中的功能。并且后面,学习下去,我放弃了寄存器方式的学习,而是转为了基于库函数的学习。毕竟我没有那么多的时间,去了解每一个寄存器的功用。
如果把他们封装起来,不需要理会其中的寄存器,直接调用对应的函数,岂不是效率提高了很多,这也正是选择库函数学习方式的理由。
其实这种越往后面走,你就越会发现这种思路是适应社会的发展的,也就是后端向前端走的一个趋势,前端向应用层走的一个趋势,正如学java的人,他们完全不必知道计算机是怎么工作的,只需要如何调用API就行。
对于32的应用,我其实并没有做出太多的产品,这一切都是因为大二上学期接到了密室逃脱的项目,所以也就断了学习生涯之路,转而走向了工程这条不归路。我想这也可以解释我为什么毕业之后没有选择走研发之路,而是选择了更多的和工程打交道。
印象最深刻的一个32实践就是基于鼠标交互的32最小开发板,这是一个双层板,并且布线也是挺密集的,画板我不知道用了多少时间,但是制作的过程记忆犹新。因为那同样是我熬夜做出来的一个半成品,为什么说是半成品,因为最后发现电路板画错了/哈哈。那段时间的确是事情多,所以也就放弃了修改,不过那块半成品板子被我当成了珍藏品,至今还在我自己家中的工作室置物架上。
后面找工作的时候,发现其实学好32还是很吃香的,很多小公司都会用32去做产品。所以,如果你自己真的非常喜欢电子这玩意,32这个单片机是一定要吃透的,这个单片机的学习是无止境的,谁让它功能强大,又顺应了时代呢,你说是吧!
三、FPGA生涯
在密室逃脱工程接近尾声的时候,我又做出了一件探索的决定,向FPGA进军!
谈到FPGA的历史,还要从数电说起,不知道大家有没有注意到,数电中有一章有提到过这个玩意。其实,我在14年暑假预习数电的时候,就已经注意到这里了,只不过当时没有认真看。后来在课堂上学习数电的时候,我对这章的关注度很大,当时它和CPLD一同介绍的,不过遗憾的是,老师跳过了这章,没有去详细讲解。
FPGA的中文名称是“可编程逻辑门阵列”,这玩意和单片机还是有区别的,虽然也是通过编程器下载进去,然后执行的,但是它的执行是硬件执行,编程语言是硬件描述语言HDL,还有一个语言叫VHDL,也是用来开发FPGA的一个语言。
而单片机的执行是软件执行(指令执行),编程语言大多数都是C语言,一部分核心代码是用汇编来编写的。可能大家并不是很了解FPGA,当然,我刚开始的时候也是不了解的,只是随着学习的积累,慢慢对它有了更多的了解。
其实刚开始学习电子的时候,也就是大一刚接触“洞洞板”的时候,那时候用到的CD40系列、74系列芯片的时候,专业术语是叫ASIC,就是这些芯片的功能是固定了的!你只能根据自己需求,去选择符合你应用的这样一款芯片,而不能在上面进行开发。那么现在,FPGA就是满足了这样一种需求,你可以利用成千上万的逻辑门阵列,任意组合,来搭建你想要的电路,这个电路是封装在一个芯片内的。
介绍完了FPGA这样一款芯片,下面我谈谈有关FPGA的学习历史。学习FPGA是在大二结束的那年暑假,开发板也是我花了149元在淘宝上淘的,是叫睿智FPGA开发板,芯片是ALTERA公司CYCLONE IV系列的,软件平台是Quartus,编程语言是VHDL。
收到开发板之后,我先按照教程安装了软件环境,然后随便下载了几个例程,验证了一下开发板没有问题。后面,我就步入了正轨,开始按节奏去学习这样一个开发板。我先说下,学习的感受吧,给我最大的感受是除了牛逼,还是牛逼!
我原以为32已经是很牛逼的芯片了,没想到生活再一次刷新了我的三观。首先就拿FPGA的引脚模式来说,好像就有8种,32也就有4种吧!在不同的模式中,除了可以设置输入和输出外,最惊讶的竟然还可以设置电压、电流的大小,更有甚着,竟然可以设置时序的上升沿和下降沿的时间。
其次,FPGA更流弊的地方在于,你完全可以在内部构建一个单片机内核,然后用C语言去编写代码,下载进去,完全等效于单片机开发呀!你若是觉得还不够过瘾,你甚至可以在里面独立出来一个DSP,从而进行DSP的开发。所以FPGA的存在在于,只要你敢想,我就能帮你实现,可以说完全是一个不受约束的器件。
其实FPGA最大的优点就是,可以并行处理,完全是硬件执行,相对软件执行,速度上会提升很多,所以很多军工类的产品都是用FPGA开发的!
另外,如果你想从事芯片设计类的工作,FPGA绝对是一个很好的平台,但是可能对知识结构这块,会有很高的要求,这就需要你通过考研,通过读硕士来实现。就拿我在社会上找工作,你会发现,很多企业招聘FPGA开发类的工作,起步条件就是硕士毕业。