嵌入式wifi 芯片 推荐_聊聊我们常用的嵌入式芯片

平时在基地里,我们最常用的芯片当然是STM32系列的。意法半导体的芯片对于我们平时的开发来说的确是很香,但是它也有自身的一些缺陷。同时,完全局限于STM32也会让我们的视野变得狭隘起来。于是今天我们来具体聊一聊一些常用嵌入式芯片的优劣和适用场景。推荐一些有特点有优势的芯片给大家。

首先还是先说说我们最喜欢的STM32系列。STM32到底有啥优势才使它如此“炙手可热”?又有啥不足之处呢?其实在芯片市场上,有成千上万种的芯片可由我们选择,这么多年来,它在通用嵌入式市场里能占有这么高的份额必定有它独到之处。在我看来其实就是两大点。首先是全能性。STM32不是一个具体的单片机型号,而是意法半导体基于ARM内核推出的多个系列集合,也可以说是一个成系统的庞大的家族。

2843f0122de15595cb3eb556aff31b40.png

图 1 STM家族族谱

其成员包含了不同定位、不同方向的多款产品。有面向低功耗的L系列,有高性能的F2和F4系列,有低价的F0系列,有高速的F7系列,也有平时我们用的最多的F103系列等等。

对于用户来说就是,你有什么需求基本就能选择到对应的产品,这是STM32霸占市场的一个很大的原因,同时全能性不止包括了他的选择多,他在价格上也很“能”,性价比相当不错,足够低廉。

但换一个角度来说全能也是平庸,每个方向认真去寻找也是能找到(或许更好的)替代品的,所以第二个优点才是他能立足通用市场榜单前几名的根本原因:它的推广和生态实在做的太好了。首先是不得不提到的库函数,在现在这个相对比较浮躁的社会,已经很多人不想去钻研什么寄存器了,而由于其他厂家的芯片基本配套这个高一层次的库文件不够完善,所以,对于需要较短开发周期的项目来说,STM32的确是一个很好的选择。接着就是文档了,由于推广的好,用户群体相当庞大,构成的一个非常好的生态,资料可以各种共享,遇到问题也能很快的解决。这里又必须提到正点原子,没有它的推动,STM32的发展肯定没有当前那么繁荣,优秀的代码样例,众多的免费资料实在让广大用户感到的舒适。

72374bf80aef73a643d0fbe7b0e0bbb4.gif

说完STM32系列,剩下的芯片我们从性能的弱到强来讲。

首先是,当前对于完全新手小白来说,最容易入手的当然是Arduino。

Arduino用的是Atmel的芯片。它可以说生态环境比STM32还要好。由于Arduino是起步比较早的开源硬件项目。各种开源项目目前已经得到广泛的认可和大范围的应用。它的硬件电路和软件开发环境都是完全公开的,在不从事商业用途的情况下,任何人都可以使用、修改和分享它,构成的生态环境已经成熟无比。同时Arduino编程起来非常简单,甚至可以说是相当的无脑了。在资料无比丰富的情况下,开发周期可以缩短到相当的短。

但是它也有其避免不了的“硬伤”:它的性价比实在太差了!真的是贵!很多功能也不够多。同时由于上层完成的比较好,对于底层的东西,学习起来可能稍微困难一些。所以它的定位是给完全新手小白入门,或者不想深入学习者一个实现控制的一个优秀的平台,甚至只把它当成一个玩具。

a1d03d0236c8730986d8fd035fa53d2d.png

图 2 Arduino开发板

接着要说到的是电子组进入基地学习,考核所用的51单片机。

51单片机在零几年可是很火很火的存在。虽然现在逐渐跟不太上发展的潮流了,但也还是应用最广泛的8位单片机,当然也是初学者们最容易上手学习的单片机。最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。由于多年以来的积累,它的资料也是非常的丰富,方便学习,特别适合入门单片机的同学比较系统的了解单片机的知识。作为8位的处理器缺点当就是运算能力比较差了。

所以,目前在教学场合和对性能要求不高的场合大量被采用。这也是我们选择51单片机作为大家考核学习的目标的原因。

020051abec92ce9da7ea975690261d27.png

图 3 51单片机开发板

9b58fdb7540011293e2f4776ce30c6d1.png

再接着是我们今天想要谈的是今天的重头戏,ESP系列的芯片。它的特点肯定是内置了WIFI和BLE模块。在ESP系列中最出名的当然就是ESP8266和ESP32。在很多情况下都是STM32的板上搭载 ESP系列的芯片,让人感觉ESP系列似乎是跟传感器一个级别的。但实际上,我们将价格相仿的ESP32和STM32F407VET6进行对比,可以得到让人惊讶的结果。

  1. 可用GPIO:ESP32有32个,STM32F407VET6有82个,STM32F407VET6胜出。

  2. 主频:ESP32的240MHZ,STM32F407VET6的168MHZ,ESP32胜出。

  3. Flash和RAM:ESP32片内和RAM很大,Flash有448KB,RAM有520KB。而模块上直接挂了一个4MB的flash。STM32F407VET6的Flash512KB,RAM192KB。在Flash上STM32F407VET6略占优势,RAM上看起来EPS就比STM32F407VET6强上不少。

  4. 运算能力:600MIPS的EPS32比210MIPS的STM32F407VET6也是强上很多了

7a313d4751a1fbf71f36e437e15b13f7.png

图 4 ESP32芯片板子

上面单片机很重要的四项参数中,ESP32赢了3项,这样看来ESP32似乎比STM32更强,但是在实际使用上,却不是这样的。

首先要说的是一般来说STM32系列被归为MCU(微控制单元),而ESP32则是SOC(片上系统)。众所周知,有系统的比裸机的稳定性和鲁棒性要更好,但是由于系统会占去大量资源,所以在同样的资源下,有系统的芯片能使用的部分就少了。对于ESP32来说,片上ROM由芯片厂家在芯片里预置一段代码,作为第一步启动执行的代码。同时WROOM/WROVER 模块里的那片闪存是 SPI 接口的,启动时需要先将软件读入 SRAM,方可继续运行,否则CPU 再高的指令执行能力也会被 SPI所拖累。那么大的 SRAM 要被软件代码和常量数据(const)占去一块。

再加上厂家(乐鑫)编写的SDK库被隐藏了,并不可见,但他写的SDK库还存在许多值得优化的地方,尤其是在空间分配和异常处理上,考量不足。这对于用户的开发,不仅对寄存器隔离,甚至对中间层也隔离,若出了意外,用户的调试定位将会很困难。而且乐鑫的SDK库不仅有一些隐藏的BUG,同时也占用了大量的内存空间。它的SDK库里占用了大量的iram1和dram0,而且越新的SDK库占用越多。这导致留给真正的用户程序的这部分iRam和drom0空间严重不足。导致一些用户稍微多做一些功能,就会遇到编译或应用的空间不够。

这些都导致了ESP看起来光鲜的硬件配置实际上水分很大,实际使用性能还没有STM32F407VET6的性能好,而且用户开发起来也很容易出现问题。但是他就这样被否定了吗?并不是!它可是内置了WIFI和BLE模块的芯片,同时由于他是片上系统,而且开始时推荐使用的是 FreeRTOS 为基础的 IDF 框架,这对于一些已经调试好的功能程序,鲁棒性是比较高的,同时也非常好移植的,这就出现了我们在ESP系列芯片上经常做的一件事情——烧固件!将别人已经写的相当完善直接使用,这在大大缩短了开发时间的同时,能用更少的资源去完成一些复杂的事情。

所以经过对比,你会发现ESP32和STM32F407VET6基本是有各自不同的定位。ESP32偏向体积小巧,内置WIFI和蓝牙,运行速度也快,专门为物联网而生,在工作不复杂的情况下,单独使用就可以很好的完成项目;而STM32偏向管脚丰富、功能全面,虽然没有wifi和蓝牙,速度也没有ESP32快,但是可以通过网口接入网络,可以控制更多的外设,为消费电子和工业控制而生。而在相对比较复杂,需要完成比较多功能的项目里(需要用到WIFI或蓝牙),ESP系列的芯片可以与STM32系列的芯片配合使用,发挥各自优势,更好的完成任务。

再来对比一下ESP32和ESP9266的区别。ESP32和ESP8266都是性价比非常高的WiFi模块(其实应该是带WIFI的芯片),非常适合物联网(IoT)领域的DIY项目。两款芯片都属于32位处理器。ESP32是双核160MHz至240MHz CPU,而ESP8266是单核处理器,运行频率为80MHz。ESP32是ESP8266继任者。它增加了额外的CPU内核,更快的Wi-Fi,更多的GPIO,并支持蓝牙4.2和蓝牙低功耗。此外,ESP32配有触摸感应针脚,可用于唤醒ESP32深度睡眠,内置霍尔效应传感器和内置温度传感器。

对于ESP系列的板子的开发,可以使用Arduino IDE编程环境进行编程。另一种对ESP32和ESP8266板进行编程的流行方法是使用MicroPython固件。MicroPython是针对微控制器和嵌入式系统的Python 3的重新实现。MicroPython与常规Python非常相似。因此,如果你已经知道如何使用Python编程,那么你也知道如何在MicroPython中编程。这也是现在缩短开发时间的一个方法吧,毕竟MicroPython中写好的库很多,也是直接调用即可。

另外一个我们平时遇到的比较多的是恩智浦半导体(NXP)的芯片。没错,就是智能车用的。从前的K60到现在的LPC系列都是NXP的芯片。NXP的芯片在汽车行业上占有了很大比重。它有抗干扰能力强,精度相对比较高的特点。或许我们在一般的情况由于他的价格稍微偏贵,开发环境也没有STM32那么舒服,所以不会选择他,但是,当我们需要比较高的精度,比较稳定的状态的时候,可以考虑更靠谱的NXP芯片,当然同样道理的还有德州仪器(TI)的芯片。

1fefb1d1d4cbc766c5d8febe5f877421.png

图 5 NXP芯片

最后再提两个平常用的不多,但是在特殊的情况下会比较有用的芯片。

FPGA芯片。纯粹的硬件运算让他在运算上有着其他芯片不能比拟的速度,因为他可以做到真真正正的并行运算。在对实时性有着很高很高的要求的时候,它是一个很好的选择(当然它还有很多别的优点,比如加速CPU等,但我们用不到暂且不表)。不过,价格有点高,开发起来也费劲,正常不考虑。

K210芯片。这是一个国产芯片,但是他的性价比真的很可怕。20块左右的芯片,也就是上面ESP32的价格,已经很流畅的跑深度学习。Kendryte K210 AI芯片是嘉楠科技自主研发的边缘侧AI芯片,主频400M(可超频至600M),乘法操作算力0.23TOPS,总算力1TOPS,芯片内置多种硬件加速单元(如CNN,FFT,SHA256等),及8M超大高速SRAM,可以方便地实现各类机器视觉/听觉算法。同时功耗也维持在相当低的水平上:它可在0.3W的条件下提供1TOPS的算力支持,充分适配在多数业务场景中低功耗约束下的算力需求。在机器视觉上,芯片基于自主研发的神经网络加速器KPU,可完成基于神经网络的图像分类任务,进行人脸识别与检测,以及实时获被检测目标的分类。在听觉能力上,芯片自带APU语音处理单元,最高可支持8路音频数据及16个方向,无需占用CPU即可实现声源定向、声场成像、波束形成、语音识别与唤醒等功能。可能对于图像识别来说,它只能跑一些比较简单模型,但是对于语音项目的开发来说,它真的是一个福音,MIC通道的数量足够,又有专门对语音的处理器,算力也完全足够,8*8mm的体积对于很多需要语音处理的便携设备就是梦寐以求的东西,希望今后可以以此开发出有意义的设备。

340b75638131036fcf74a4949d857612.png

图 6 K210芯片功能

更高级的芯片,我们用到的机会比较少,篇幅业有限就不继续写下去了,今天就聊到这。

蒙昊天

2020.5.31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值