介绍
单片机介绍
学习自正点原子 b站课程。
单片机和电脑的类比:内存是 SRAM,硬盘是 FLASH,主板是外设。
单片机拓展也很方便。可做仪器仪表,家用电器,工业控制,汽车电子。
单片机发展由48→51→MCS96 微控制器阶段→ARM, RISC-V 微控制器全面发展阶段。
应用三阶段,SCM 单片阶段(把微电脑集成在一块芯片上)→MCU 完善控制阶段→SoC 嵌入式系统阶段(软硬件协同设计,单片机里有软件)。
8051,X86 属于 CISC;ARM, MIPS, RISC-V 属于 RISC.
冯诺依曼和哈佛结构的主要区别:程序存储器和数据存储器是否分开存储。不分开是冯诺依曼,分开是哈佛。哈佛执行效率更高,冯诺伊曼资源占据更少。
CORTEX-M 系列介绍
ARM 公司(做精简指令集计算机的)只设计内核架构和授权知识产权,不参与设计芯片,给其他合作公司授权设计芯片。半导体厂商再根据架构完善周边电路并制作芯片。现在95%手机、平板都是 ARM 架构的, ARM 公司是真的牛。
其优点在于低功耗低成本高性能,且支持16/32位双指令集。
ARM 有9个版本,从 v6 开始出现 cortex 的命名。
可以看出 M 主要是单片机使用的。正点原子系列主要是以下3类:
DMIPS 是每1MHz执行多少百万条指令。要 * CPU 主频。
CoreMark 是跑分。
STM32 介绍
ST:意法半导体。
M:MCU/MPU。
32: 32位 CPU。
STM32 是 ST 公司基于 ARM CORE-M 芯片(类似 CPU)开发的32位的单片机,相比8位的51单片机性能更强。(也有 STM8)
STM32 有五大类:高性能类,主流类(我们学习的 F1 就属于主流类),超低功耗类,无线类,以及 MPU 类。
命名规则:
开发选型:建议从性能高到低,闪存从大到小,来挑选刚好满足项目要求的。
原理图设计
查看数据手册
https://www.st.com 可以下载英文数据手册。
https://www.stmcu.org.cn/ 在译文一栏里有中文手册。
本课程学习的是 STM32F103ZE 设备,对应 STM32F103xE 手册。
手册主要看引脚定义和电气特性栏。
JTAG 可以仿真调试下载,但是占了5个IO口。
SWD 可以下载仿真,占了2个 IO 口(推荐使用)。
串口只能下载,占了2个 IO 口。
芯片上有一大一小两个孔。小孔在左下角,大孔在右上角时,小孔上面是144,右边是0,逆时针转。
最小系统
保证 MCU 正常工作的最小电路组成单元。除了芯片,还需要电源电路,晶振电路,下载调试电路,BOOT 启动电路,复位电路。
电源电路:
下图上面的电路是稳压,5V 稳成 3.3V。
下面的电路是方便检修的,当 3.3V 短路时断开这两个0欧电阻,可以判断是 MCU 短路还是其他部分短路。
模拟电源:3.3V 通过低通滤波器调整,过滤掉高频。
参考电压借助模拟电压供电。
RTC 和后备区域充电时由电源供电,断电由纽扣电池供电。
复位电路:
NRST 低电平1~4.5ms即可复位,刚通电时电容充电短路或者按下 reset 接地时都可。
BOOT 启动电路:F1 F4 如图。
中间的部分通过跳线帽选择 BOOT 0/1。
F7如图。
晶振电路:
下载调试电路:
JTMS 模式选择,JTCK 时钟。JTDI 数据输入,JTDO 数据输出。
串口通信:有外部的 USART 连接:
有内部的 USB TTL 转换,交给 USART 内部的 TXD RXD(右图):
左图是正点原子自己设计的用 reset 和 BOOT0 的串口通信。
IO 分配:优先分配特定外设 IO ,再分配通用 IO,最后微调。
IO介绍
开发板引脚连接起来,相比51单片机,既能加深对硬件电路的理解,也能避免引脚焊死的一些问题。比如我的51板子有个电位器拧坏了。现在估计就要整个重买。还有可以自己布局引脚。
当然连线也会有一些新问题。比如电线坏了使得程序跑不了需要排查。
软件开发使用 Keil MDK,这个和 Keil C51不一样。
F1 系列所有的外设(并不是所有芯片都有。比如我们的芯片就只有一部分):
具体有什么可以查数据文档。
STM32:基于 ARM 核心的32位微控制器。
F:通用类型。
103:增强型。
C:引脚数48脚。
8:64K 字节的闪存存储器。
T:采用 LQFP 封装。
6:工业级温度范围 -40~85。
系统结构:
左上角:内核,引出了三条总线。
ICODE DCODE:连接 FLASH 闪存。闪存中存储程序, ICODE 加载程序,DCODE 加载数据。
系统总线:连接 SRAM (存储程序运行时变量)、AHB 系统总线(先进高能总线,挂载最基本的或者性能较高的外设,如 RESET CLK;并通过级联连接性能较低的 APB,用于连接一些重要外设如 ADC。APB2 性能和频率高于 APB1)等。
DMA 可以处理一些辅助 CPU 的工作,如数据搬运。提高 CPU 工作效率。
小黑点代表一号引脚。
红色:电源相关引脚。
蓝色:最小系统相关引脚。
绿色: IO、功能口。
IO 口电平:IO 口最大能容忍的电压。有 FT (Five Tolerate) 的是5V,没有的是 3.3V。
主功能:基本 IO 口,未连接外设可以直接读取高低电平。
默认复用功能:连接外设驱动的功能。
重定义功能:如果想同时用一个引脚的两个功能,可以通过重定义将一个功能映射到其他引脚上。
- VBAT:既能供电,又能作为备用电源。
- 可以作为基本的 IO 口或安全保障的侵入检测。比如产品上可以添加一些防拆触点,强行拆开就会触发侵入信号,进而清空数据。或者做 RTC 时钟相关。
- 34 做基本 IO 口或接 RTC 晶振。
- 34 做基本 IO 口或接 RTC 晶振。
- 56 接系统主晶振。一般是 8MHZ,芯片内部的锁相环电路可以使其倍频,最高 72MHZ,作为系统主时钟。
- 56 接系统主晶振。
- NSRT 系统复位引脚,N 表示低电平复位。
- 89 是内部模拟部分的电源,如 ADC RC 振荡器用。VSSA 负极。
- VDDA 正极。(3.3V)
- 10~19 都是 IO。10号 PA0 还兼具了 WKUP 功能,能唤醒待机状态下的 STM32。
- IO 口或 BOOT1 引脚,BOOT 用于配置启动模式。这个是可能需要配置的 IO 口,优先级没有其他 IO 口高。
- 21 22 IO 口。
- 21 22 IO 口。
- VSS 系统主电源口。负极。
- VDD 系统主电源口。正极。
STM32 分区供电,有许多 VSS VDD 口。
- 25~33 IO 口。
- 34,37~40 IO 口(需要配置)或调试端口,用于调试下载程序支持 SWD JTAG 两种调试方式。
- 41-43 45-46 IO 口。
- BOOT0.
BOOT:程序开始运行的位置。有时需要不在 flash 中开始,以完成某些特殊功能。
若想通过串口下载程序,需要设置 01。比如 34,37~40 都被占用时。或者没有 STLINK JLINK 时。
11 用于程序调试,本课程中不会用到。
要在第四个上升沿前设置 BOOT,之后就没有影响了。
最小系统电路:
主电源和模拟电源都连接了电源。
VCC GND 之间加一个滤波电容,保证电源稳定性。
VBAT 接备用电源,一般接一个 3V 纽扣电池正极即可。
晶振不必多说,如果想有 RTC 功能再加个32.768 MHZ (即 OSC32 )晶振在 34 引脚。
复位电路低电平复位,一开始电容没电,一开始就是低电平。逐渐充满电后变为高电平。或者按下按键电容放电复位。
启动配置通过跳线帽设置 BOOT。
我们的单片机实物还有一些外设:USB 接口,3.3V 恒压芯片,电源和 IO 指示灯,32.768 MHZ 晶振(黑色的)。
软件安装
MDK
安装 MDK。
KEIL5 需要安装器件支持包。没安装选择芯片型号时会找不到我们的芯片。
注册软件,和 51单片机类似的方法。
安装 STLINK 驱动。
安装 USB CH340 驱动,和 51单片机的通用。检测方法:战舰版连接 USB-UART,可见设备管理器里多出来了 CH340。
开发板上是有 CH340 转换电路的,但是 PC 一开始是无法识别的,需要安装虚拟 CH340 串口驱动才能识别协议。
USB 虚拟串口可以当成串口使用,串口1可以下载程序(2不行),可以供电。
串口1就是 PA9 PA10 跳线帽。PA9 相当于 TXD,PA10 相当于 RXD。
串口下载
FLYMCU,是针对 M3M4 的下载程序。通常用串口1下载。
USB 连接到 USB-UART;USART1 跳线帽连上 PA9 PA10 和 RXD TXD;BOOT0 1 都连接 GND;电源打开,PWR 灯常亮。