如何为编程爱好者设计一款好玩的智能硬件(三)——该选什么样的MCU呢?
MCU选型: 搬砖的很勤劳、很努力也很能坚持,但大多数都只是赚血汗钱。我搬过砖,那是在高考完的暑假,在我的强烈要求下跟着我爸干了一暑假的泥水工。我们当时干的“业务”叫做“包砖块”,就是多砌一块砖多赚一点钱——和当前大环境下的码农做外包有点类似!都是血汗钱丫!我和我爸每天早上6:00到工地,在太阳最毒的几个月里,中午干到11:30,午饭在户主家里随便吃点,然后稍作休息,下午1:30开工,下午6:00收工,每次回去,腰酸背痛,洗个澡到头就想睡!当时我没啥技术就做个小工,要不断的和灰、搬砖、送灰,保证两个大工不缺资源。从那之后每次遇到比较艰难的事情,我都会想这世界还有比这更累的事吗!
回归正题!之所以啰嗦上面那么多,我就是想引出一个话题:平台不对,越努力越疲惫(跳跃性有点大!),你成功的地方一定是你所熟悉与热爱的地方。前两篇我已经介绍想为编程爱好者设计的产品大致样子,从本篇开始我们将开始动手实践。而摆在眼前的问题就是该选择怎样一种平台!——硬件平台!(操作系统自己写,所以不用选)
我的标准: +上手快 满足快速开始条件 +运算能力不能太差 要做自动重组系统,这个自然不能低 +成本不能太高 玩具,自然不能太贵 +通用GPIO尽量多 通用电子积木,多GPIO可保证模拟出更多的通信接口
FPGA(Field Programmable Gate Array): FPGA类似硬件中的变形金刚,一般采用硬件描述语言(硬件描述语言是:The FPGA configuration is generally specified using a hardware description language (HDL), similar to that used for an application-specific integrated circuit (ASIC). (Circuit diagrams were previously used to specify the configuration, as they were for ASICs, but this is increasingly rare.)) FPGA由许多可编程的逻辑块(很小的单元)和可重构的互联结构组成。通过重构这些互联结构便能改变逻辑块的连接方式,一方面可以实现简单的AND\OR\XOR等简单逻辑和由基本简单逻辑组成的复杂逻辑(想想离散数学,这些简单逻辑可以构成语言,表达一定意思,也就能实现一定功能);另一方面逻辑单元往往具有存储能力,这样每个逻辑单元就不仅能够实现简单逻辑,还能工程触发器,进而实现时序逻辑。就像用画布制作游戏一样,当timer加入后,整个场景便变得有趣活泼了! FPGA为啥成为硬件中的变形金刚呢?是因为——Technically speaking, an FPGA can be used to solve any problem which is computable. 用FPGA可以实现一个软微处理器(这个应该是计算机组成原理的硬布线控制器与微程序控制器有关)。 FPGA中的具体应用包括数字信号处理,软件定义无线电,ASIC原型,医学影像学,计算机视觉,语音识别,密码学,生物信息学,计算机硬件仿真,射电天文学,金属检测和其他领域的范围日益扩大。还有一个是硬件加速~
我要设计的东西很需要一个够灵活的开发板,而FPGA号称变形金刚。我在大二上数电的时候,期末实验就要用他设计各种稍微复杂的时序逻辑电路,我做的快一口气彪到了最后一个——做个51单片机。当时就觉得这个变形金刚当之无愧了~后来发现有人用它写了个arm指令集,做出了stm32,还移植一个uc-OS操作系统,更是对它刮目相看。但是,一方面由于它太趋于硬件层面,做复杂应用可能会花费比较多的时间;另一方面我也不太熟悉,现学现卖最后想编写个操作系统在上面可能bug频出。于是暂先不考虑这个~ 51单片机: 我对51可谓玩得很6!它作为国内嵌入式开发者的启蒙级单片机从未被代替过!无论你了不了解数电、模电、组成、体系甚至是C语言,你在淘宝上花100-200元买个开发板就能亲手点亮个灯、得意时做个流水灯、玩6了配合各种传感器做更有趣的东西。51开发板已然不是一个针对工程师来学习开发加快项目进度那么严肃的东西,它之所以没有ardunio受人追捧也许在于它定位还是一个开发板、学校教具。(注:51是一个系列的单片机,开发板是51单片机+众多辅助外设便于开发实践各种功能的板子)
|