嵌入式开发硬件基础详解

发表时间: 2024-06-17 09:58

本文阐述了微控制器、ARM、MCU、DSP、FPGA 和嵌入式系统之间的复杂关系

首先,“嵌入式”是一个概念,没有准确的定义,不同的书上都有各自的定义。但大意是一样的。嵌入式系统相对于PC等通用系统,是一种结构精简的专用系统,无论在硬件还是软件上都只保留必要的部分,不必要的部分则被砍掉。因此,嵌入式系统一般具有可移植性、低功耗、性能单一等特点。

那么,MCU,DSP,FPGA都属于嵌入式系统的范畴,都是为了实现一定目的而用的工具。

MCU就是俗称的“单片机”,经过这么多年的发展,现在已经不局限于普林斯顿结构的51了,性能也有了很大的提升。由于MCU必须顺序执行程序,所以适合做控制,在工业界应用非常广泛。ARM是一家专门做MCU设计的公司,由于技术先进,策略得当,近两年在单片机市场占据了巨大的份额。

ARM微控制器的种类很多,从低端的M0(小家电)到高端的A8、A9(手机、平板),都很普及。所以系统上不一定非要用ARM微控制器,关键还是看应用场景。

DSP全称为数字信号处理器,结构上与MCU不同,加快了运算速度,突出运算能力,可以算是超快的MCU了。低端的DSP,比如C2000系列,主要用在电机控制上,不过TI好像叫DSC(数字信号控制器),是介于MCU和DSP之间的一个东西。高端的DSP,比如C5000/C6000系列,一般用在视频图像处理、通讯设备等,需要进行大量的计算。

FPGA全称为现场可编程逻辑阵列,它本身没有任何功能,就如同一张白纸,它应该具备什么功能,完全取决于程序员的设计(它的所有过程都是硬件的,包括VHDL、Verilog HDL编程,也属于硬件范畴,一般称为写“逻辑”)。

如果你够聪明,可以把它变成MCU或者DSP,MCU和DSP由于内部结构是设计好的,只能通过软件编程来实现顺序处理,而FPGA可以并行、顺序处理,所以速度是最快的。

那么为什么MCU、DSP、FPGA会同时存在呢?那是因为MCU、DSP的内部结构都是经过IC设计人员精心设计的,完成同样的功能时功耗、价格都比FPGA低很多。另外FPGA本身的开发比较复杂,完成同样的功能需要投入更多的人力、财力。

所以三者各有千秋,各有各的用处。不过三者之间也存在融合的趋势,ARM的M4系列增加了精简的DSP核心,TI的达芬奇系列本身就是ARM+DSP的结构,ALTERA和XINLIX新推出的FPGA都包含ARM核心,所以三者之间的关系越来越像三原色的三个圆了。

简而言之,“我在你心中,你在我心中”。

从哪里开始学习成为一名硬件工程师

单片机:通常没有操作系统,用于简单的控制,例如电梯、空调等。

DSP:用于复杂计算,如离散余弦变换、快速傅里叶变换等,常用于图像处理,在数码相机等设备中使用。

ARM:一家英国芯片设计公司,不生产芯片,只出售知识产权。

FPGA:现场可编程门阵列,用硬件描述语言(Verilog或VHDL)完成的电路设计,经过简单的综合、布局布线后就能快速烧录到FPGA上进行测试,是现代IC设计验证的主流技术。

相比台式电脑,嵌入式系统可定制化、形态各异,可能在体积、功耗、成本等方面受到限制,对实时性要求较高,比如示波器、手机、平板电脑、全自动洗衣机、路由器、数码相机等,这些设备中虽然没有台式电脑,但都有一个或多个嵌入式系统在工作。

根据对象系统的功能复杂度和计算复杂度提供不同的选择。对于简单的家电控制嵌入式系统,简单的8位微控制器就足够了,价格便宜,质量好。对于手机和游戏机,必须使用32位ARM和DSP芯片。FPGA是一种更面向硬件的实现方法。

所以要通过学习成为一名硬件工程师,你必须从微控制器开始,然后再学习ARM,DSP之类的。

市面上七大主流MCU详细介绍

现在单片机随处可见,种类繁多,让开发人员应接不暇。发展也相当迅速,从上世纪 80 年代的 4 位、8 位,到如今的各种高速单片机。

各个厂家在速度、内存、功能上也都有所起伏,同时也涌现出一大批具有代表性的单片机厂家:Atmel、TI、ST、MicroChip、ARM……国产的宏晶STC单片机也是可圈可点……

下面就51、MSP430、TMS、STM32、PIC、AVR、STC单片机的优缺点及功能性能比较一下……

51单片机

8位单片机是应用最为广泛的单片机,​​当然也是初学者最容易上手的单片机,​​最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理、众多的逻辑位操作函数以及丰富的控制导向指令系统,堪称一代的“经典”,为日后其他单片机的发展奠定了基础。

51单片机之所以成为经典、好用的单片机,​​主要有以下几点原因:

特征:

从内部硬件到软件,都有一套完整的按位操作系统,称为位处理器,它处理的是位,而不是字或字节。它不仅可以处理芯片中特殊功能寄存器的某些位,如传送、设置、清除、测试等,还可以进行位逻辑运算。其功能非常齐全,使用起来也非常方便。

同时在片内RAM区域专门开辟了双功能地址范围,使用极其灵活,这一功能无疑给用户提供了极大的便利。

乘法和除法指令也给编程带来了便利。许多8位单片机没有乘法功能,做乘法时要编写子程序调用,很不方便。

缺点:(虽然是经典,但是缺点还是很明显的)

需要扩展AD、EEPROM等功能,增加软硬件负担

I/O引脚虽然好用,但是在高电平时没有输出能力,这也是51系列单片机的最大弱点。

运行速度太慢了,特别是双数据指针,如果能改进的话,会给编程带来很大的方便。

51防护能力差,容易烧坏芯片

应用:

目前在教学场合及对性能要求不高的场合应用较为广泛。

最常用的设备:8051、80C51

MSP430 MCU

MSP430系列单片机是美国德州仪器公司于1996年开始推向市场的16位超低功耗混合信号处理器,最大的亮点是其低功耗和高速度,汇编语言灵活,寻址方式多,指令少,使用方便。

这主要得益于它将众多的模拟电路、数字电路和微处理器集成在一块芯片上,为实际应用需要提供了“单芯片”解决方案。它的迅速发展和应用范围的不断扩大,主要得益于以下特点...

特征:

处理能力强大,采用精简指令集(RISC)结构,具有多种寻址方式(7种源操作数寻址,4种目标操作数寻址),简洁的27条核心指令和大量的模拟指令;大量的寄存器和片内数据存储器可以参与多种操作;还有高效的查表处理指令;处理速度快,在8MHz晶振驱动下指令周期为125ns。这些特点保证可以编译出高效的源程序

在运算速度方面,在8MHz晶振驱动下可以实现125ns的指令周期,16位数据宽度、125ns指令周期以及多功能硬件乘法器(可乘法、加法)的组合可以实现数字信号处理的某些算法(如FFT等)。

在超低功耗方面,MSP430单片机之所以具有超低功耗,是因为它在降低芯片电源电压和灵活可控的工作时钟方面有自己的独到之处。电源电压采用1.8~3.6V的电压。因此,在1MHz的时钟条件下运行时,芯片电流会在200~400uA左右,时钟关断模式下最低功耗仅为0.1uA

缺点:

个人感觉上手不太容易,不太适合初学者,而且资料也不多,只能去官网找。

占用的指令空间大,因为是16位单片机,程序都是以字为单位的,有的指令居然就占用了6个字节,虽然程序看似简单,但是相对于PIC单片机来说占用的空间还是比较大的。

应用:

广泛应用于低功耗和超低功耗工业应用

最常用的器件:MSP430F系列、MSP430G2系列、MSP430L09系列

TMS 单片机

这里还要提一下TMS系列单片机,虽然不是主流,但TI推出的8位CMOS单片机,具有多种存储方式,多种外设接口方式,适合复杂的实时控制场合。虽然不如STM32,也不如MSP430那么张扬,但TMS370C系列单片机通过集成先进的外围功能模块和各种芯片的内存配置,提供了性价比高的实时系统控制。

同时采用高性能硅栅CMOS EPROM和EEPROM技术。低功耗CMOS工艺,宽工作温度范围,噪声抑制,加上高性能和丰富的片上外设功能,使得TMS370C系列微控制器在汽车电子、工业电机控制、计算机、通信和消费产品等领域具有一定的应用前景。

STM32 微控制器

ST推出的STM32系列微控制器被业界朋友们誉为性价比最高的系列微控制器,功能极其强大,基于ARM Cortex-M内核,专为要求高性能、低成本、低功耗的嵌入式应用而设计。

它还拥有一流的外设:1μs双12位ADC、4Mbit/s UART、18Mbit/s SPI等,在功耗、集成度方面也表现不俗,当然比起MSP430的功耗还是略逊一筹,但这丝毫不影响工程师们对它的热情,它以结构简单、工具易用、功能强大而著称于业界……

特征:

核心:单周期乘法和硬件除法

内存:片上集成32-512KB Flash存储器。6-64KB SRAM存储器

时钟、复位和电源管理:2.0-3.6V 电源和 I/O 接口驱动电压。POR、PDR 和可编程电压检测器 (PVD)。4-16MHz 晶体。嵌入式工厂调校的 8MHz RC 振荡器。内部 40 kHz RC 振荡器。用于 CPU 时钟的 PLL。用于 RTC 的校准 32kHz 晶体

调试模式:串行调试(SWD)和JTAG接口。最多112个快速I/O端口,最多11个定时器,最多13个通信接口

最常用的设备:STM32F103系列、STM32 L1系列、STM32W系列

PIC 微控制器

PIC单片机系列是美国Microship公司的产品,分为基础、中级、高级三个级别,是目前市场占有率增长最快的单片机之一,CPU采用RISC结构,分别有33、35、58条指令,属精简指令集。

同时它采用哈佛双总线结构,运行速度快,可以使程序存储器和数据存储器的访问并行处理。这种指令流水线结构在一个周期内完成两部分工作,一部分是执行指令,另一部分是从程序存储器中取下一条指令。这样每条指令只需要一个周期,这也是效率高的原因之一。另外,PIC单片机之所以成为非常受欢迎的单片机,​​无非有以下几个特点:

特征:

它具有工作电压低、功耗小、驱动能力强等特点。PIC系列单片机的I/O口都是双向的,其输出电路为CMOS互补推挽输出电路。I/O引脚增加了方向寄存器,用于设定输入或输出状态,解决了51系列I/O引脚在高电平时既是输入又是输出的问题。

当设置为1时为输入状态,无论该引脚是高电平还是低电平,对外都呈高阻状态;当设置为0时为输出状态,无论该引脚处于什么电平,都呈低阻状态,具有相当的驱动能力,低电平吸收电流可达25mA,高电平输出电流可达20mA。与51系列相比,这是一个很大的优势。

可直接驱动数码管显示,外围电路简单;A/D为10位,能满足精度要求;具有在线调试和编程(ISP)功能。

缺点:

它的特殊寄存器(SFR)不像51系列那样集中在一个固定的地址范围(80-FFH)内,而是分散在四个地址范围内。只有PCL、STATUS、FSR、PCLATH、INTCON五个特殊寄存器同时出现在四个存储体中,但在编程过程中,不可避免地要与特殊寄存器打交道,要反复选择相应的存储体,也就是要对状态寄存器STATUS的第6位(RP1)和第5位(RP0)进行置位或清零。

数据的传输和逻辑运算基本都是通过工作寄存器W(相当于51系列的累加器A)进行的,51系列还可以直接在寄存器之间传输。因此PIC单片机的瓶颈现象比51系列更加严重,对编程感兴趣的朋友应该深刻认识到这一点。

最常用的设备:PIC16F873、PIC16F877

AVR单片机

AVR单片机是Atmel公司推出的一种比较新的单片机,​​具有高性能、高速度、低功耗的显著特点,它取消了机器周期,以时钟周期作为指令周期,实行流水操作。

AVR单片机指令以字为单位,大部分指令为单周期指令,一个周期内可以执行完当前指令功能,同时读取下一条指令,通常时钟频率为4~8MHz,因此最短指令执行时间为250~125ns。

特征:

AVR系列没有类似累加器A的结构,主要利用寄存器R16~R31来实现A的功能。在AVR中也没有像51系列那样的数据指针DPTR,而是通过三个16位寄存器X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)来完成数据指针功能(相当于三组DPTR)。

还可以进行后增或前减的操作,在51系列中,所有的逻辑运算都要在A中进行;而AVR可以在任意两个寄存器之间进行,省去了在A中来回走动的麻烦,这些都比51系列要好。

AVR的专用寄存器都集中在00-3F地址范围,不需要像PIC那样先选择存储库,使用起来比PIC方便。AVR的片内RAM的地址范围为0-00DF(AT90S2313)、0060-025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM只用来存储数据,通常不具备通用寄存器的功能。

当程序复杂时,通用寄存器R0~R31就显得不够用了;不过51系列有多达128个通用寄存器(是AVR的4倍),所以编程时你不会有这种感觉。

AVR的I/O引脚和PIC的差不多,也有一个方向寄存器,用来控制输入或者输出,输出状态下,高电平输出电流大概10mA,低电平灌电流20mA,这个虽然不如PIC,但比51系列还是要好...

缺点:

不存在位操作,以字节形式控制和判断相关寄存器位。

C语言和51的C语言的编写方法存在很大区别,这让刚开始学习51单片机的朋友很不适应。

通用寄存器有32个(R0~R31),前16个寄存器(R0~R15)不能直接处理立即数,因此其通用性降低。而51系列中,其通用寄存器(地址00~7FH)全部都可以直接处理立即数,这一点明显优于前者。

最常用的设备:ATUC64L3U、ATxmega64A1U、AT90S8515

STC单片机

说到STC单片机,有人会说STC也算主流,不过大概会被诟病~~我们这样说是基于它是国内比较优秀的单片机。

STC单片机是宏晶公司生产的单时钟/机器周期单片机。简单来说,STC单片机就是51和AVR的结合体。有人说AVR是51的替代单片机,但AVR单片机在位控制、C语言编写等方面有很大区别。STC单片机结合了51和AVR的优点,虽然功能没有AVR强大,但AVR能实现的功能,STC上基本都有。同时,STC单片机是51核心,这给以51单片机为基础的工程师提供了很大的便利,节省了学习AVR的时间,同时还保留了AVR的各种功能...

STC单片机是新一代高速、低功耗、抗干扰强的8051单片机,指令代码与传统8051完全兼容,但速度快8~12倍,内部集成MAX810专用复位电路,4路PWM,8路高速10位A、D转换,用于电机、马达控制,干扰强的场合,成为继51单片机之后又一新型系列单片机...

特征:

使用串口下载烧写程序方便简单,入门容易,学习资料和视频很多,最有名的就是杜老师的视频,很多对单片机感兴趣的朋友都是通过这个视频入门的。还有宽电压:5.5~3.8V,2.4~3.8V,低功耗设计:空闲模式,掉电模式(可通过外部中断唤醒)

STC单片机具有在应用编程功能,调试方便;具有10位AD,内置EEPROM,工作频率为1T/机器周期,速度是传统51单片机的8~12倍,价格也比较便宜。

STC12C2052AD系列单片机除了2路外还可以实现4个定时器或者4个外部中断,2个硬件16位定时器,兼容普通8051定时器。4路PCA还可以实现4个定时器,自带硬件看门狗,高速SPI通讯口,全双工异步串口,兼容普通8051串口,还具有先进的指令集结构,兼容普通8051指令集。

PS:STC单片机虽然功能没有AVR、STM32强大,价格也没有51、ST32便宜,但是这些都不重要,重要的是它是一款比较优秀的国产单片机,希望国产单片机能够继续繁荣下去……

最常用的设备:STC12C2052AD

飞思卡尔单片机

主要针对S08、S12等MCU,当然飞思卡尔MCU远非如此。飞思卡尔系列MCU采用哈佛结构和流水线指令结构,在很多领域都表现出低成本、高性能的特点。其架构为产品开发节省了大量的时间。此外,飞思卡尔提供多种集成模块和总线接口,可以在不同的系统中发挥更灵活的作用!飞思卡尔MCU的独特之处在于:

种类齐全:从低端到高端,从8位到32位,全系列应有尽有。公司推出的8位/32位引脚兼容的QE128,可直接从8位移植到32位,弥补了MCU行业8/32位兼容架构的缺失环节。

多种系统时钟模块:三种模块,七种工作模式。多种时钟源输入选择,不同的MCU有不同的时钟产生机制,可以是RC振荡器,外部时钟或晶振,也可以是内部时钟。大多数CPU同时具备以上三种模块!可运行在FEI、FEE、FBI、FBILP、FBE、FBELP、STOP七种工作模式下

各种通信模块接口:飞思卡尔单片机内部集成了各种通信接口模块:包括串行通信接口模块SCI、多主设备I2C总线模块、串行外设接口模块SPI、MSCAN08控制器模块、通用串行总线模块(USB/PS2)

具有更多可选模块:LCD驱动模块、温度传感器、UHF发射模块、同步处理器模块,带同步处理器的MCU还带有屏幕显示模块OSD,少数MCU带有铃声检测模块RING和双音多频/音调发生器DMG模块

可靠性高、抗干扰能力强、多种引脚数和封装选择

低功耗。也许 Freescale 系列微控制器的功耗不如 MSP430 低,但它具有“等待”和“停止”两种完全静态模式,可以整体降低您的功耗!最近推出的几款超低功耗型号可与 MSP430 媲美!

最常用的设备:MC9S12G系列

如果真要给这些单片机排个名次的话,那么如果你想随大流,51单片机无疑是首选;如果你追求超高的性价比,STM32将是你理想的选择;如果你渴求超低功耗,MSP430一定不会让你失望;如果你想支持国货,STC会让你心动不已……

超过

后续还会持续更新,带来Vivado、ISE、Quartus II、candence等安装相关的设计教程、学习资源、项目资源、好文章推荐等,希望大家继续关注。

世界这么大,继续探索吧,祝你一切安好,有机会我们再见!