上一篇文章 “高效实战及电赛训练(2)- 数字系统的“控制”和“处理””中我简单介绍了一下构成数字系统核心的几种方式:
- 微控制器MCU – 通过编程用指令来控制,比较简单、通用
- 微处理器MPU – 用于处理密集性的场景,功能强大,但门槛较高
- FPGA – 如果灵活使用,配合软核能够处理各种应用,潜力巨大
电子产品的系统构成
其中MCU是简单、直接的一种,今天就来谈一下在电赛和初学的实战项目中如何合理选用MCU以及如何高效利用资源。 首先,我们常常提到的“微控制器”/“单片机”/“嵌入式系统”种类繁多,多得让你发晕,如果你打开Digikey或Mouser这种元器件分销商的网站,从处理器一路点击浏览下去,你会发现有数不清的品类,因为太多的厂商在做 – 美国的、日本的、欧洲的、中国本土的。。。。有太多的流派都存活于处理器的江湖上 -8051、AVR、PIC、MIPS、Arm。。。。仅Arm又派生出一窝又一窝的小分支, Cortex就有-M、-R、-A的系列,这些字母后面还有用数字进一步分支。。。
在半导体的发展史上一直伴随着各种处理器的层出不穷,毕竟它是电子产品的核心部件,从构成上有冯.诺伊曼结构和哈佛结构之分,从指令集上又有CISC和RISC之别。幸的是随着半导体厂商的不断整合,同时随着Arm通过授权半统天下,今天的多数初学者接触到的大概率就是51、AVR和Arm,更具体点就是STC的51、用在Arduino上的AVR和ST的STM32 Arm,为啥这三者大行其道?STC的8051是因为其便宜、好用(But其网站惨不忍睹),AVR是因为Arduino开源硬件的全球普及,而STM32则是因为生态系统建设得最完备(想与非网当年也为STM32在中国的普及做出了突出的贡献 — 印象中从2008年开始,stmcu.org这个社区的域名还是我起的)。从这里也可以看出8位的单片机战斗力还依然是杠杠的。
8051单片机
AVR单片机(Atmel已被Microchip收购)
ST基于Arm Cortex M0的F042系列控制器
当然还有其它。。。比如TI的MSP430、Cypress的PSoC。。。。
选用哪家?其实偶然因素很多,比如身边一个师兄给你的推荐、给你授课的老师喜欢某一款、抑或是正好有一个活动你白嫖了一个。。。 这个其实不重要,重要的是你如何去学、去用,好用的未必能学到技能,踩坑才会让自己涨知识。毕竟微处理器虽然看上去千差万别完毕,但核心的东西其实都大同小异,比如: 内部的结构其实都包含下面的部分:
要玩转它们,你要面对的下面这些也都是要有的:
学习技能一定要避免成为“器材党”,一定要学到本质的东西,这些本质的东西对无论任何一款平台其实都是一样的,比如对外设(按键、开关、传感器)的响应;对中断的处理;多进程的调度;通过各种总线对数据的访问和对外设的控制等。 所以,你身边有任何机缘拿到任何一款MCU的开发板/学习板,都可以上手去学,去用 – Just use it!以后的应用场景很多,多到你现在无法想象,所以就不要多去纠结。就象你在学开车的时候只要用驾校的车练就行了,你不确定将来会开多少中不同的车,学好驾驶技能,以后可以开任何车。 无论是8031、AVR、还是Arm的Cortex M0、M4,无论是ST的Arm还是NXP、TI的Arm板卡,对于初学者来讲、对于备战电赛的同学来讲,这些最基本的器件的处理能力其实应该是足够的,网上也能找到非常多的可用于扩展的套件。 当然你需要考虑在实际的应用场景中它们会以什么的形态出现,在学习的过程中你可以用一个开发板来玩、或者购买一块Arduino来用,但在做电赛的时候你直接用开发板是否还合适(稳定性、功能)?是否需要自己重新设计PCB来实现项目或电赛中的要求?如果自己根据参考设计来设计自己的PCB,设计的难度如何?
SoM将核心的功能做好,简化了用户的PCB设计
基于LPC824(Arm Cortex M0)的最小系统板简化了PCB的设计 选定好了任何一款MCU,你要做的就是通过一些实际的项目快速上手,掌握MCU的核心技能,一些参考设计资源是必不可少的,下面我列一些:
- Arduino的Project
Hub(https://create.arduino.cc/projecthub)你是必须要看的,你脑瓜里的任何创意,指导老师让你做的任何项目,几乎都可以在这个Hub上找到别人分享的类似作品,多数都已经开源,你可以拿来参考(思路很重要):
- ElectronicHub(http://electronichub.com/)你也有必要知道,因为在它上面整理了无数非常接地气的与MCU相关的项目资源,看一下它的列表:
- 大名鼎鼎的Hackaday.io (https://hackaday.io/),
这是全球最牛的一些硬件极客聚集的网站,你如果想找创意、想找思路,就在这个网站上用英文关键词搜一下吧,一下子会出来很多:
- 当然还有Github(https://github.com/),这个网站我就不多讲了吧。
- 特意提一下这个网站CircuitO.io(https://www.circuito.io/),你用了就会知道它是你学习的效率工具,看一下下面的截图就知道了,当然还有参考代码:
- 中文的几个开源社区网站也有海量的、可靠的资源来来用,比如SeeedStudio(https://wiki.seeedstudio.com/)
用好这些资源,对你的学习和应用会事半功倍。 本文转载自微信公众号“电子森林”