今天来聊一下stm32和树莓派,stm32我用了几年,树莓派我对它的理解仅限于理论层面。
自己并没有用树莓派做过产品,但是这个理论足以让大家对这两个平台有初步的了解。
很多人新手会去比较,stm32和树莓派哪个好,我该学哪一个?
我们要想搞清楚这个问题,先要搞明白他们的一个区别。
一、 stm32和树莓派的区别?
Stm32和树莓派是两个不同的领域,从性能上来看,stm32是MCU,树莓派是MPU。
MCU和MPU的区别简单来说就是:
MPU适合做需要复杂运算的大型程序,这种一般需要外挂RAM和ROM。
MCU适合做一些运算比较简单的中小型程序,一般用来用于硬件管理和控制,所以这一般不需要外挂RAM和ROM,都集成在芯片内部,也称为单片机。
stm32之前大多数型号属于Cortex-M系列的单片机,树莓派一般是Cortex-A系列处理器。
除了Cortex-M以外,还有Cortex-M、Cortex-A、Cortex-R架构的处理器。
当然, STM32现在也出了基于Cortex-A架构的STM32MP157处理器。
那3种架构之间有什么区别?
Cortex-M版本:
性能最低配,更细分的版本有M0、M0+、M3、M4等等。
Cortex-M大家可以理解成微控制器,一般功耗和成本比较低,但性能也有限,应用领域有智能家居、无人机、智能穿戴、汽车电子(安全气囊等)之类的产品。
Cortex-R版本:
性能中配,更细分的版本有R4、R5、R7、R8等等。
一般用来做工业高性能实时应用,比如说汽车制动系统,发动机控制,打印机、硬盘控制器等。
Cortex-A版本:
性能高配,更细分的看下图:
这种一般用于高端产品,像平板电脑、手机,这个相信大家即使不懂技术也很熟悉了。
Ok,如果上面这些看的有点抽象,那下面讲点接地气的。
1.stm32
Stm32主要用来采集传感器数据,把数据进行解析,再进行逻辑功能处理,最后控制输出设备完成相应的功能,比如说驱动电机、控制LCD屏显示、控制数码管显示等等。
这种产品一般不需要复杂的运算,一般是裸机编程,或者跑个RTOS系统。
所以,单片机比较适合做数据采集控制,它的优势在于实时性高,不需要等待操作系统启动过程,一上电马上就能开始跑程序,这就是为什么有些导弹上面要用单片机的原因。
2.树莓派
树莓派的”身份”和arduino有点相似,都是开源硬件平台,在博通的芯片上运行Linux操作系统。
强大的芯片性能让树莓派更适合做运算,比如说一些图像采集,处理,深度学习和识别等等。
这种加了Linux系统的,一般实时性没单片机这么高。
树莓派大多数也是给创客学习用,如果用来开发产品的话成本太高。
而stm32的实用性就强很多,很多商用产品都是用它做的。
从上面的区别可以看得出来,stm32主要是偏向硬件控制,树莓派是偏向纯软件,两者方向不一样。
可能很多小伙伴会问,那树莓派一定比stm32难吗?
其实不一定,很多人的误区就是我做单片机开发,主要就是学习单片机。
实际上不是的,如果从事stm32的产品开发,涉及的知识面比较多,如果你做汽车电子的产品,你需要去学习汽车的相关知识,如果你做无人机,你还需要了解空气动力学的知识。
不同行业的产品,它的标准、方案都不一样,如果你不熟悉这些程序都没法写。