FPGA, arduino, STM32, RaspBerry 树莓派 简介

发布时间 2023-10-17 22:59:12作者: emanlee

https://www.cnblogs.com/zhenghb31/p/15046496.html

 

市面上控制器这么多,似乎每一个都很厉害…为什么有的控制器编写起来那么难,功能很少,有的简单易学,功能强大呢?各种控制器又有什么区别呢?经过我的思考,我个人把控制器分为三类!

第一类: 基于逻辑电路的控制器(FPGA)

FPGA(Field Programmable Gate Array)

我们都知道,电子设备无论功能多么强大,最基本的构成还是与非门,数据0和1,FPGA使用的是硬件语言,如VHDL去直接改变控制器的逻辑电路达到控制电路的目的,简单来说,和你用面包板,二极管,触发器自己做的逻辑电路一样……只不过FPGA可以重复烧写,就如同你把板子拔了,再插一遍一样,它对外部的控制,只基于你对它内部逻辑电路的改变。

 

第二类:基于指令集的控制器(单片机)

如果我们按照一定的要求去设计FPGA里面的逻辑电路,就可以为FPGA添加指令集,指令集操作比逻辑电路操作又高了一个层次,我们不用管电路是什么构造了,而只用改变输入电路的值0/1,就可以达到控制的效果,0和1按照一定规则排列,形成指令集。有了指令集,我们就可以用汇编语言对其进行操作,好多单片机就用汇编语言!我们把有固定指令集的处理器称为硬核处理器,无固定指令集,但是可以用硬件语言暂时为其编写一个指令集的处理器,称为软核处理器,比如基于FPGA的NIOS2,就是软核处理器,操作指令集比直接操作逻辑电路要容易。

 

第三类:基于操作系统的控制器(树莓派)

有了指令集,仍然不方便,我们希望有一种更人性化的方式,将我们的操作转换成指令,这就是操作系统。我们常常说,不同数码产品之间的操作系统不通用,为什么不通用?就是因为指令集不一样。有操作系统把我们看起来很方便的操作转换成指令,这就使得我们更加方便,比直接使用指令集要简单的多。树莓派的控制就是基于操作系统。

 

FPGA

首先说一下FPGA,FPGA叫做可编程门阵列。它的逻辑门,时序等都由开发者自己编程,是一个通过硬件描述语言在FPGA芯片上自定义集成电路的过程

优势:简单的说,它就相当于一张白纸,把需要做的东西全部自己做出来,自由度最高。理论上FPGA可以配置成任何需要的处理器。一般用于通信类的行业。
难点: 开发难度高,门槛也比较高。对数电模电的要求比MCU更高。花费的时间也是最长的。

arduino

Arduino是一个平台,Arduino所使用的芯片也是单片机,但是性能上与stm32还是有很大的差距。Arduino的编译环境-Arduino IDE。

优势:在于操作比较简单,不用操心寄存器的配置,有非常多的开源硬件库,即使没有专业功底,通过简单学习也能快速上手,网上有大量的Arduino+模块的配置资源,适合广大的DIY爱好者极客。
劣势: 做产品或者研究很不友好,成本高,内部硬件的可操作性比较差,简单高度抽象化带来就是效率低下以及资源开销大,模块数量上去后系统就撑不住了(芯片性能有限)。适用于未成年编程入门教育启蒙以及爱好者DIY,在市场应用中很少有arduino身影。



STM32

基于ARM Cortex-M3内核,现又开发了M7内核,运算速度,响应能力比较迅速。

优势: 开发工具,比较齐全,开发资料也比较丰富。基本上都不需要外部的硬件扩展。带有唤醒功能的低功耗模式,在功耗方面控制得比较好,另外,实时性比较强。工业上广泛使用,如汽车智能工业,微控制器、传感器、致动器、电机控制等。对于了解硬件底层有很大帮助。
劣势:没有操作系统,太过复杂的计算没有办法应对,对于视觉处理的能力不如树莓派。

RaspBerry 

与嵌入式微控制器(STM32)相比,除了可以完成相同的IO引脚控制之外,因为运行有相应的操作系统,可以完成更复杂的任务管理与调度,能够支持更上层应用的开发,为了开发者提供了更广阔的应用空间。比如开发语言的选择不仅仅只限于C语言,连接底层硬件与上层应用,可以实现物联网的云控制和云管理。对于视觉处理,复杂数据处理有着很大的优势。

优势:开发速度非常快,有非常多的开源硬件库,只需要把模块和树莓派连接,再把网上相应的驱动软件下载下来就可以完成,性能突出,非常强大。STM32能做的树莓派应该都可以做。适用于采集,处理,识别,深度学习等
劣势:可能只是完成一个很小的IO控制功能却要运行一个庞大的操作系统作为支撑,牺牲了自己的性能优势,显得有些得不偿失。并且如果没有底层硬件和驱动的支持,我们的自由度就只限于SDK(软件开发工具包)的范畴了

视觉机器人

视觉机器人是一个软硬件紧密结合的工程,硬件方面单片机对于传感器的接口、对于电机的驱动、硬件三方库的资源、甚至编程速度都是会强过树莓派的。
所以:最优解就是树莓派做上层交互算法(处理视频流、音频流),单片机驱动全部硬件,二者通过总线连接交互(uart、i2c、spi、usb等)。机器人预计需要一个寒假的时间。

 

=============================================

1.树莓派和STM32的区别

树莓派是一款基于Linux操作系统的单板计算机,集成了各种接口和通信协议,支持多种编程语言,如Python、C++等。而STM32则是一款32位微控制器,主要应用于工业自动化、机器人智能家居等领域,具有更高的调试性和实时控制性能。

因此,在选择使用哪个设备时,需要根据具体场景来判断:若需要适配Linux系统与其他设备进行通信,则树莓派是一个不错的选择;若需要在较小的系统中实现复杂的控制算法,则STM32可能更适合。

2.树莓派和arduino的区别

Arduino是一款基于Atmel 8位微处理器开源电子原型平台,主要面向教育、工业控制等领域。与树莓派相比,Arduino具有更低的功耗、更小的体积和更便宜的价格,同时也更易于入门和学习。

不过,相对于树莓派,Arduino在处理能力和软件扩展方面存在局限性,也难以适应较大或复杂的系统,因此需要在使用时进行权衡。

https://www.eefocus.com/e/529181.html

=============================================

一、Arduino属性

1、微控制器:Arduino 使用微控制器作为其核心处理器。常见的 Arduino 板上使用的微控制器芯片有ATmega328P、ATmega2560等。

2、数字输入/输出(I/O)引脚:Arduino 板上通常有多个数字 I/O 引脚,以便连接和控制外部电子组件。这些引脚可以被配置为输入或输出,并且支持数字信号的通信。

3、模拟输入引脚:Arduino 板上通常也具有模拟输入引脚,用于读取模拟传感器的电压值。这些引脚能够测量范围内的电压并将其转换为数字值。

4、通信接口:Arduino 板通常支持多种通信接口,例如串行通信(如UART和SPI)、I2C和无线通信(如蓝牙或Wi-Fi),以便与其他设备进行数据交换。

5、USB 接口:Arduino 板上通常有一个 USB 接口,用于与计算机进行通信。这使得通过 USB 线连接到计算机,可以将代码上传到 Arduino 板上,并通过串行监视器进行调试和数据输出。

6、电源供应:Arduino 板可以通过电池、USB 或外部电源供应进行供电。一些板上还具有电源管理电路,可以根据需要进行电源管理和节电。

7、开发环境:Arduino 开发板的配套开发环境提供了简单易用的集成开发环境(IDE)供编写、上传和调试 Arduino 代码。开发环境支持 C/C++ 编程语言,并提供了丰富的库函数来简化开发。

二、STM32属性

1、微控制器:STM32 开发板使用 STM32 系列微控制器作为核心处理器。 STM32 系列包括多个系列和型号,每个型号具有不同的性能和功能,例如 STM32F4、STM32F7 等。

2、时钟和时钟源:STM32 开发板使用内部或外部时钟源来提供时钟信号。时钟信号用于驱动微控制器的各种功能和定时器。

3、I/O 引脚:STM32 开发板具有多个数字输入/输出(I/O)引脚,用于连接和控制外部设备和传感器。这些引脚可以被配置为输入或输出,并支持数字信号的通信。

4、模拟输入引脚:STM32 开发板上通常也具有模拟输入引脚,用于读取模拟传感器的电压值。这些引脚允许测量范围内的电压,并将其转换为数字数值。

5、通信接口:STM32 开发板支持多种通信接口,例如串行通信(如 USART、SPI 和 I2C)、CAN(控制器局域网)、USB 和以太网等。这些接口使得 STM32 可以与其他设备进行数据交换和通信。

6、电源供应:STM32 开发板可以通过电池、外部电源或 USB 进行供电。一些板上还具有电源管理电路,以实现电源管理和节电功能。

7、开发环境:STM32 开发板使用 STM32CubeIDE 或其他相应的开发环境进行开发。这些开发环境提供了类似于集成开发环境(IDE)的工具,可用于编写、编译、调试和上传代码。

8、支持库和软件工具:意法半导体提供了丰富的支持库和软件工具,以便开发人员轻松地使用 STM32 系列微控制器。这些库和工具包括标准外设库(StdPeriph Library)、HAL(Hardware Abstraction Layer)库和各种中间件(如 USB、文件系统等)

9、内存和闪存:不同的 STM32 开发板具有不同的内存和闪存大小。这些存储器用于存储程序代码、变量和数据。

三、树莓派属性

1、处理器:树莓派采用不同型号的 ARM 架构处理器,例如 Broadcom BCM2835、BCM2836、BCM2837 等。这些处理器具有不同的性能和处理能力。

2、内存:树莓派具有不同型号的内存配置,包括 256MB、512MB、1GB、2GB、4GB 等。内存用于存储程序和数据,影响系统的性能和多任务处理能力。

3、存储:树莓派通常使用 microSD 卡作为存储介质。通过将操作系统和应用程序安装在 microSD 卡上,可以方便地扩展存储容量。

4、I/O 接口:树莓派板上具有多个通用输入/输出(GPIO)引脚,用于连接和控制外部电子设备。这些引脚可以配置为数字输入或输出,还支持 PWM(脉冲宽度调制)控制。

5、视频输出:树莓派支持 HDMI 视频输出,可以连接到显示器、电视或投影仪。一些型号还具有复合视频输出(如 RCA 接口)。

6、音频输出:树莓派具有 3.5mm 的音频输出接口,可以连接扬声器或耳机。

7、USB 接口:树莓派通常具有多个 USB 接口,用于连接外部设备,如键盘、鼠标、摄像头、存储设备等。

8、网络连接:树莓派具有以太网接口,可以通过有线网络连接到Internet。一些型号还支持无线网络连接,如 Wi-Fi 或蓝牙。

9、操作系统:树莓派可以安装各种操作系统,包括 Linux 发行版(如 Raspbian、Ubuntu Mate、Arch Linux)、Windows 10 IoT Core 等。

10、电源供应:树莓派可以通过 microUSB 接口供电,也可以通过其他电源方式供电。

四、针对以上三个,我对比了它们的相同与不同

相同点:

开源性质:Arduino、STM32和树莓派都具有开源的特点,使得开发者可以自由地访问其硬件设计和软件代码。

强调易用性:这三个平台都致力于提供简单且易于上手的开发环境和工具链,使初学者和非专业人士能够进行快速开发和学习。

外部接口:Arduino、STM32和树莓派都提供了多个通用的输入/输出接口,用于连接和控制外部设备和传感器,以实现灵活的硬件扩展。

不同点:

架构和性能:Arduino采用AVR架构的微控制器,适用于简单的嵌入式应用,而STM32则采用ARM架构的微控制器,具备更高性能和更多的功能。树莓派则是一款基于ARM处理器的小型电脑,性能更强大。

应用领域:Arduino主要用于快速原型设计和小规模项目开发,适用于创客、艺术家和教育领域;STM32适用于工业自动化、物联网等复杂场景,可实现更高级别的控制和通信功能;树莓派适用于学习编程、嵌入式系统开发和构建完整的计算机系统。
————————————————
链接:https://blog.csdn.net/weixin_63340990/article/details/133201898

==========================================

一、arduino

1、什么是arduino

Arduino是一款便捷灵活、方便上手的开源电子原型平台。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序

       arduino是一类单片机、开发板、可编程逻辑器件,是我们设计智能硬件的大脑。

arduino有多种类型,常见的有arduino uno、arduino 2560、arduino nano,可根据项目对开发板的性能、体积、成本等需求选定。

arduino是完全开源的,不存在盗版的说法,有国内板和意大利板,性能上区别不大除了这些正规军,还有很多 可以类arduino编程的开发板 :esp32、esp8266、等等

       这些开发板都能够使用arduino ide来编程,有丰富的开发库,屏蔽了单片机开发复杂的配置。

2、arduino介绍

这是arduino介绍图

Arduino能通过各种各样的传感器来感知周围环境,通过控制发光二极管LED、电机和其他的硬件装置来反馈、影响环境。电路板上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过Arduino编程语言和Arduino开发环境来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,它们之间进行通信来实现。

3、Arduino的特点

1、跨平台

Arduino IDE可在Windows、MacintoshOS X、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。

2、简单清晰

Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,是对avr-gcc库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。

3、开放性

Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应程序。

4、发展迅速

Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势,因为Arduino的种种优势,越来越多的专业硬件开发者已经开始使用Arduino来开发他们的项目、产品;越来越多的软件开发者使用Arduino进入硬件、物联网等开发领域;许多大学部分专业也纷纷开展了Arduino相关课程。

二、STM32

1、什么是stm32

对于STM32,从字面意思上来理解,ST是意法半导体,M是Microelectronics的缩写,其中32表示的是32位,那么整合起来理解就是:STM32就是指的ST公司开发的32位微控制器。stm32也有着一个自己的家族STM32F101R6、STM32F101C8、STM32F101R8、STM32F101V8、STM32F101RB、STM32F101VB

2、STM32具有如下优势:

 1、极高的性能:主流的Cortex内核。

 2、丰富合理的外设,合理的功耗,合理的价格。

 3、强大的软件支持:丰富的软件包。

 4、全面丰富的技术文档。

 5、芯片型号种类多,覆盖面广。

 6、强大的用户基础:最先成功试水CM3芯片的公司,积累了大批的用户群体,为其领先做铺垫。

三、树莓派

1、什么是树莓派

树莓派(Raspberry Pi)是各种派中最早开始流行起来的一个嵌入式Linux板卡,其本质是尺寸仅有信用卡大小的一个小型电脑。你可以将树莓派连接电视、显示器、键盘鼠标等设备当一台正常Linux电脑使用,目前树莓派能替代日常桌面计算机的多种用途包括文字处理、电子表格、媒体中心甚至是游戏;也可以拿它来当作个人网站的服务器,构建自己的博客;甚至可以用树莓派的硬件资源做各种有趣的硬件项目,等等。

2、树莓派的优势

1、做完小计算机来说它很便宜。价格差不多只有低端计算机的十分之一,作为你的主计算机的一个附件它非常便宜。

2、树莓派是个裸设备。它没有藏在盒子里或者在一个完整的系统中。这意味着你可以自己决定将其做成一个什么系统。你可以将其放到盒子里,也可以就让它裸着运行。

3、树莓派使用Linux——一个类似于Windows或Mac OSX的操作系统。它提供了视窗系统和一个用来操控树莓派的基于文本的命令行接口。

4、树莓派具备直接的外部硬件接口。除了个人电脑具备的音频、视频、USB、蓝牙、WIFI、以太网接口外,树莓派还具有摄像头、支持各种功能的GPIO硬件接口,可以方便的实现与硬件结合的功能。
链接:https://blog.csdn.net/exile_Ming/article/details/133275023

 

 

 

 

 

==========================================