毕业设计项目学习笔记(1)——STM32介绍及其最小系统组成

毕业设计项目学习笔记(1)——STM32最小系统

今年是本人专科大三毕业季,因此就需要进行毕业设计,想到自己已经大三即将毕业,因此,想着借此机会,把自己这两年所学完整的融汇一番,做一个项目。本系列博文相关内容的学习笔记。放出来,便于保存。

如何学习STM32处理器之个人经验

面对一个新的处理器,尤其是这么一款外设颇多,让人感觉一时无法上手的处理器,我个人觉得最重要的,应该是依靠官方资料。因为靠二手资料,虽说可能因此降低入手难度,但是二手资料更新缓慢,若是遇到了一款全新的处理器,难道还要等几年,直到有所谓的第二方教程吗?显然,这是不合适的,因此,我找到了如下几个资料用来学习STM32。

  1. STM32F40XX参考手册——这个有个优点在于它有中文版,它是ST官方通用参考手册,绝对意义上的第一手资料,其内容丰富翔实,唯一缺点在于缺少实例。
  2. 固件库中的官方文档或者HAL库中的官方文档——这个资料或者说这个库,弥补了参考手册中没有实例的不足,遇到编程难题的话,这个资料的帮助或许比参考手册更大。唯一有些可惜的是,这类文档是全英文的,可能需要在使用的时候搭配上翻译软件,个人推荐是有道翻译,翻译后自动加单词本,顺便学个英文。
  3. STM32F407 Datasheet——学习电子类专业,怎么能不看Datasheet呢?更何况,一个开发板也好,还是自己搞的项目也好,总要涉及到硬件电气属性,因此,datasheet的重要性不言而喻。
  4. STMF3与F4系列Cortex M4内核编程手册——重点在于Cortex M4内核的汇编指令的使用以及内核相关寄存器的使用上。
  5. Cortex M3与M4权威指南——Cortex M3与M4内核架构介绍以及一些简单的实例。
    有了这些手册之后,大概就踏上了漫漫学习的长路,但是却会摸不着头脑,因为资料太多,然而却不知从何开始。这时候,我觉得最基本的,就是从画一块STM32最小系统板开始。因为,项目中肯定需要这么一块处理器,与其最后才搞,不如提前搞好它。然后,慢慢根据项目需求增加外设,总比一次性搞要好很多。

STM32F407ZGT6介绍

首先,STM32F4系列处理器是一款高性能通用处理器,而F407则是其中的基础款,它的特点是更多的连接性(集成更多通讯类外设)和安全性。
先来介绍一下datasheet上写的相关外设与特性,并介绍一些基本的术语:

  • 集成了FPU(浮点运算单元)和DSP(数字信号处理)指令
  • 192KB SRAM(静态随机存取存储器)、1024KB FLASH(闪存)
  • 12个16位定时器、2个32位定时器
  • 2个DMA(直接存储器访问)控制器(共16个通道)
  • 3个12位ADC(模数转换器)、2个12位DAC(数模转换器)
  • 1个RTC(带日历功能的实时时钟)
  • 1个SDIO(安全数字输入输出卡)接口、1个FSMC(可变静态存储控制器)接口、1个10/100M以太网MAC(多址接入信道)控制器、1个摄像头接口、3个SPI(串行外设接口)、2个全双工IIS(集成电路内置音频总线)、3个IIC(集成电路总线)、6个串口、2个USB(支持HOST/SLAVE)、2个CAN(控制器域网)
  • 1个硬件随机数生成器
  • 112个通用I/O口

STM32F407最小系统板(基于官方开发板与文档设计)

ST公司官网上有这么三块开发板:NucleoBoard、DiscoveryKit、EvaluationBoard。本最小系统就是参考NucleoBoard来设计的。

最小系统,一般包括:电源电路时钟电路复位电路以及调试电路

  • 电源电路
    • 作用:为整个电路系统提供所需的工作电压
    • 一般情况下STM32F407ZGT6需要3.3V工作电压,可以通过USB供电也可以通过外接电源的形式供电。
  • 时钟电路
    • 作用:为MCU提供所需的时钟信号
    • 时钟电路设计方法:
      • 震荡模式(下图都为震荡模式)
      • 旁路模式
    • 时钟源:
      • LSI:内部低速时钟。由芯片内部RC振荡器提供,用于驱动看门狗,默认值为32kHz

      • HSI:内部高速时钟。由内部芯片RC振荡器提供,默认16MHz

      • LSE:外部低速时钟。通过在OSC32_IN和OSC32_OUT引脚接入32.768kHz的晶振实现。32.768kHz时钟接法

      • HSE:外部高速时钟。通过在OSC_IN和OSC_OUT引脚接入晶振实现,频率范围是4-26MHz。也可以直接接入外部时钟信号,频率范围是1MHz-50Mhz。需要注意的是,电容应该选择MΩ级,而电容需要选择pF级。典型时钟电路

  • 复位电路
    • 作用:为MCU提供统一的初始状态
    • 复位的类型:系统复位、电源复位、备份域复位
    • 一般使用阻容复位电路,复位信号持续时间可通过下列公式计算 t = 1.1 R C t=1.1RC t=1.1RC其典型电路为NRST引脚典型电路
  • 调试电路
    • 作用:为MCU提供程序下载和调试所需的接口
    • 一般建议使用SWD接口,因为所需引脚少
    • STM32支持两种调试电路,分别是JTAG接口和SWD串行调试。
引脚名称 JTAG调试接口 SWD调试接口 引脚分配
JTMS/SWDIO 测试模式选择 串行数据输入输出 PA13
JTCK/SWCLK 测试时钟 串行时钟 PA14
JTDI 测试数据输入 —— PA15
JTDO/SWO 测试数据输出 调试信息输出 PB3
NJTRST 复位MCU —— PB4
  • MCU部分
    • MCU电源部分需要使用电感和零欧电阻作为电桥,实现模数分离。
  • BOOT启动模式
BOOT0 BOOT1 启动模式 自举空间
0 x 主FLASH 选择主FLASH作为自举空间
0 1 系统存储器 选择系统存储器作为自举空间
1 1 嵌入式SRAM 选择嵌入式SRAM作为自举空间

画好的电路板

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述