MCU简介和必备开发工具
单片机又名“微控制器”(Micro Control Unit,缩写是MCU),是单个集成电路上的小型计算机。微控制器包含一个或多个 CPU(处理器内核)以及存储器和可编程输入/输出外设。微控制器专为嵌入式应用而设计,与个人计算机或其他由各种分立芯片组成的通用应用中使用的微处理器相反。用现代术语来说,微控制器类似于片上系统(SoC),但不如片上系统(SoC)复杂。SoC 可能包括微控制器作为其组件之一,但通常将其与图形处理单元 (GPU)、Wi-Fi 模块或一个或多个协处理器等高级外围设备集成。微控制器用于自动控制的产品和设备,如汽车发动机控制系统、植入式医疗设备、遥控器、办公机器、电器、电动工具、玩具和其他嵌入式系统。与使用单独的微处理器、存储器和输入/输出设备的设计相比,微控制器减小了尺寸和成本,使更多设备和过程的数字控制变得实用。混合信号微控制器很常见,它集成了控制非数字电子系统所需的模拟元件。在物联网的背景下,微控制器是一种经济且流行的数据收集方式,可作为边缘设备传感和驱动物理世界。常用的单片机(开发板)有以下几种:
一、Arduino系列。Arduino是一家意大利的开源硬件和软件公司,设计和制造微控制器以及相关的配件和软件,还有自己的用户社区。Arduino旗下的经典开发板(UNO R3、NANO、MEGA2560等)基于Atmel的AVR处理器,SRAM从2KB到8KB不等。不过,这些经典开发板的“官方版本”很贵(超过$20一片,不包括山寨版或魔改版),不自带蓝牙和WiFi,性能孱弱(难以使用摄像头模块)。此系列的单片机主要适用于入门教学、个人作品等场景。
二、ESP32系列。ESP32由总部位于上海的乐鑫公司创建和开发,由台积电使用其40纳米工艺制造。ESP32系列采用Tensilica Xtensa LX6/LX7微处理器(ESP32/ESP32-S2/ESP32-S3等)或RISC-V微处理器(ESP32-C3等),SRAM为512KB或更多。包括内置天线开关、功率放大器、低噪声接收放大器、滤波器和电源管理等模块,还支持蓝牙、WiFi、摄像头等模块。此系列的单片机主要适用于智能家居、电子玩具等日常场景。
三、STM32系列。STM32是欧盟STMicroElectronics公司的产品,基于32位ARM处理器内核。STM32最常见的开发板是STM32F103(Cortex-M3内核72MHZ主频、64KB闪存、20KB内存)和STM32F411(Cortex-M4内核100MHZ主频、512KB闪存、128KB内存)。此系列的单片机主要适用于机器人控制、飞行姿态控制等工业和军事场景。
四、Raspberry Pi Pico。Pico由英国树莓派公司/基金会出品,使用RP2040芯片,具有264KB的RAM和2MB的闪存。Pico的特殊之处是具有8个PIO(可编程 I/O)。PIO允许你用极简的指令编写硬件接口逻辑,然后把这些逻辑直接丢给PIO处理,CPU完全不用插手。这让Pico可以模拟出CPU频率根本达不到的高速信号,且完全不会因为运行其他代码而造成时序抖动。截至发帖之日,其他系列MCU都不具备这种“特殊功能”。
除了以上几种单片机,还有“上古时代”的单片机(比如INTEL 8051)、非典型的单片机(比如Raspberry Pi经典版,更像通用计算机)和给儿童当教具的单片机(比如MICRO:BIT)。限于篇幅不再介绍,感兴趣的人可以自行查找资料。
总结:
单片机跟通用计算机不同,它不用于网络游戏、视频播放等日常任务。单片机不需要接入键盘鼠标和屏幕,也不需要安装操作系统,而是根据刷入的固件来循环执行相对简单的特定任务。如果没有给单片机刷入固件,单片机就是一个摆设(没有任何作用)。学习单片机的过程就是学习电路设计和固件编程的过程。如果你对单片机感兴趣,我推荐先购买一份Arduino UNO套装进行学习。因为它最简单,工具链和生态成熟度最高,容易树立起学习的信心。
玩单片机所需的软件:
Arduino IDE:https://www.arduino.cc/en/software
功能强大的IDE和固件写入工具,支持多种开发板(包括非Arduino旗下的开发板)。
Wokwi:https://wokwi.com
在线且免费的电路仿真工具,包含简易的代码编辑器,可以测试四种主流单片机程序的效果。
SimulIDE:https://simulide.com
开源且免费的电路仿真工具,内置简易的代码编辑器,配合Arduino IDE的编译器可以测试单片机程序的效果。
Proteus:https://www.labcenter.com
专业且收费的PCB设计和电路仿真工具,内置代码编辑器和多种编译器,可以测试市面上几乎所有单片机程序的运行效果。
玩单片机所需的硬件:
1、带USB口的电脑(用来写代码和给单片机刷入固件)
2、单片机开发板和各种电子元件(比如电阻、温湿度传感器)
3、面包板和各种跳线(免焊连接单片机和电子元件,方便测试)
4、万用电路板和电烙铁(学习过程中不需要,制成“作品”时才需要) Air001 路过,最便宜的 Arduino 001 SSOP20,7毛多一片,不带USB,基本够用,取代STC足够
32位机8位机价格,现在STC价格有所下降了,最低4毛钱
STM32F103C6T6A SOP48,价格大概 2元一片,不带USB
有USB需求可以C8T6 价格浮动比较大
ESP8266 WIFI
ESP32 蓝牙 WIFI USB
可玩性都比 ATMega328P 强 Arduino框架的好处是:
使用统一的(基本统一)C++接口来开发单片机.
只需要在其IDE里选好开发板,就可以直接写代码,至于开发板本身如何与此框架的C++接口兼容,那是开发板厂家与Arduino的事,不需要用户来管.
使用裸代码开发单片机时,其实大量的时间与工作主要用在了查单片机文档,配置寄存器,初始化各资源,写框架上,实际单片机里的用户逻辑一般不会太过复杂,大量的时间与精力都用到了前面那些工作上.
Arduino解决了这最麻烦与费时间的工作,让使用者可以直接开始写用户逻辑,而无需去关心具体硬件如何驱动.
当然,代价也是有的,那就是Arduino生成的代码非常大,并且执行效率也没有祼代码那么高.
涉及到一些特殊场景(例如要做低功耗,要使用资源非常少的单片机以降低成本等),还是只有老实地写祼代码.
不过那种场景一般都是需要批量生产才遇得到,个人制作一些小玩意时基本不需要考虑这些.
再说使用Arduino来进行产品验证也是非常快速的,验证通过后再使用裸代码来做实际量产开发也是完全没有问题的.
页:
[1]