技术栈
1.常用元件分类
1.MCU(微处理器)
MCU芯片是指微控制单元(MicrocontrollerUnit;MCU),又称单片微型计算机或者单片机,是把中央处理器的频率与规格做适当缩减,并将内存、计数器、USB、A/D转换、UART、PLC、DMA等周边接口,形成芯片级的计算机。
常用的MCU列表:STM32F103C8T6,ESP32,Atmega328P
这是三家很典型的MCU
STM32这个系列来自意法半导体(国外),有相对齐全的资料和社区生态,有许多开源项目基于这个芯片,可以使用keil5开发,或者使用厂家提供的Stm32cubeIDE开发,也可以使用Stm32cubeMX来进行图形化配置,再建立keil工程。
ESP32来自乐鑫科技(国内),在去年的Stm32涨价浪潮中,ESP32被许多开发者拿来替代STM32开发项目,除了价格优势,ESP32还拥有Wifi,蓝牙这两种无线通讯能力。可以使用ArduinoIDE开发,或者是其他MicroPython的IDE。
Atmega328P则是很有名的开发板arduino UNO上板载的芯片,使用ArduinoIDE开发,性能并不出众,但是得益于arduino社区的良好生态,有许多库的支持,arduinoIDE集成了代码编写烧录等多种功能,使得开发极其简单。
2.电阻电容
电阻,电容的基础功能不过多描述。
额外添加一个使用比较频繁的电容的滤波(滤除不要的交流信号)和耦合(留下需要的交流信号)功能。此功能的电容通常为100nf的电容,添加在电源输出和输出部分和单片机等其他集成芯片的供电脚附近。
此处顺便介绍贴片封装
封装,就是指把硅片上的电路管脚,用导线接引到外部接头处,以便与其它器件连接.封装形式是指安装半导体集成电路芯片用的外壳。(可以代表这个元件的大小和形状)
从大到小(常规)1206 0805 0603 0402 0201 01005(不常用)
其他芯片也各有封装,但是极好辨认(留到封装部分详细介绍)
3.传感器
待补充
4.晶振
晶振字如其名,就是封装了一块晶体的元件,通上电之后会输出固定频率的信号,单片机需要这个信号作为时钟信号。
晶振分为无源晶振和有源晶振,这里先介绍无源晶振。无源晶振最明显的特征就是两条信号线连接到单片机,剩下的管脚接地,需要两个小容量的电容作为外围元件(也有把电容集成到封装里的晶振)
5.各种接口(Type-C,Micro-USB等等)
各种接口,提供烧录调试供电等功能,大致可以理解为一条单片机与电脑沟通的数据线所需要的端子(当然你手机上也有这个端子)
6.按钮(自锁开关,轻触按钮等等)
普通的开关,不同的机械结构提供了不同的开关效果
7.USB转TTl芯片
uart协议需要使用的芯片。UART串口通信和通过单片机的UART接口给单片机等下载程序等功能。
最常用的就是放在接口与单片机之间,把端子进来的信号进行转换输出给单片机,同样支持反向(单片机发送信号给芯片再通过接口输出到电脑上)
8.电源管理芯片(LDO与DCDC等等)
LDO是线性稳压电源
DCDC是开关电源
待补充
9.各种集成芯片
待补充
2.各种淘宝常见模块介绍
1.开发板
集成了单片机最小系统和一些简单传感器,显示器等功能的板卡。引出了部分单片机io口
2.各种芯片模块
为集成芯片绘制了类似单片机最小系统的PCB,添加上某些外围元件使得集成芯片可以运行,并提供接口供开发者方便使用。
3.单片机外设介绍(基于STM32CubeMX)
单片机:STM32F103C8T6
软件:STM32CubeMX(最新版6.9需要账号)
调试器:STlink
最重要的打开STlink的调试接口
如果未打开调试接口引脚,可能导致单片机锁死,下面介绍解锁方法
BOOT0置为1,BOOT0置为0,按下复位键。
下载正确文件完成后将BOOT0置为0,按下复位键,stm32会从Flash启动,这样就能检测到stm32了。
1.GPIO
GPIO=General Purpose Input Output,通用输入输出。有时候简称为“IO口”。通用,就是说它是万金油,干什么都行。输入输出,就是说既能当输入口使用,又能当输出口使用。
(上拉、下拉、悬空、高阻、开漏、推挽之类的概念待补充)
下图为设置输出模式示例,均使用默认参数。
左键需要使用的GPIO口选择OUT_PUT模式
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET) 修改该引脚的输出电压
参数解释
GPIOA 使用GPIO的A组
GPIO_PIN_8 使用A组8号脚
GPIO_PIN_RESET 输出低电压 0V SET为高电压
2.PWM
利用不同占空比的方波,使得恒为5V输出的电压,在不同的占空比下可以输出类似3v,4v,1v之类的效果,通常有频率,占空比等参数
下图为示例
使用通用定时器TIM1
使用通道1输出普通PWM,默认PA8
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);使能PWM通道
__HAL_TIM_SetCompare(&htim1, TIM_CHANNEL_1, 100); //修改比较值,修改占空比