2w字超详细:MCU开发板的完整电路设计(基于STM32F103ZET6的单片机开发板设计)
前言
什么是MCU与其开发板
微控制单元(Microcontroller Unit;MCU) ,也就是我们耳熟能详的单片机,作为芯片级的计算机,其上整合了诸如内存、计数器、UART等丰富的资源。为了充分利用这些资源,就需要外接额外的设备,再将这些设备与芯片都整合在一块板子上,就组成了大家所熟知的MCU开发板。
STM32F103ZET6简介
本文所选用的MCU为STM32F103ZET6,作为意法半导体(STMicroelectronics)旗下的ARM微控制器,其硬件资源包括64KB SRAM、 512KB FLASH、 2 个基本定时器、 4 个通用定时器、 2 个高级定时器、 2 个 DMA 控制器(1个7通道,1个5通道)、 3 个 SPI、2 个 IIC、 5 个串口、 1 个 USB、 1 个 CAN、 3 个 12 位 ADC、 1 个 12 位 DAC、 1 个 SDIO 接口、1 个 FSMC 接口以及 112 个通用 IO 口。并且还有FSMC(关于FSMC的概念 我们在后文中再详细介绍)可用于外接SRAM等。
本文内容概述
在本文中,我们将对STM32F103ZET6各个引脚的功能、定义以及其电路连接方式逐一进行分析,并对芯片所具有的硬件资源进行相应的配置,讲解并带领大家对该MCU芯片的外围电路进行设计,最终完成MCU开发板电路设计的全流程。
在设计过程中所用到的封装文件、数据手册、设计原文件等也都整合上传了,需要的读者可以自行下载。下面就让我们正式开始。
一、封装与Symbol的获取
在原理图的绘制过程中,元件的Symbol当然必不可少,然而我们选择的STM32F103ZET6为LQFP-144封装,也就是说具有144个引脚,这种时候自己画元器件就显得比较费时费力。
为了节省时间,我们可以直接在Mouser(贸泽电子)上下载所需的PCB符号和封装文件。例如在下方链接中,我们就可以下载到STM32F103ZET6的封装文件等。
注:在该网站上下载文件需要注册账号
贸泽电子网站中的STM32F103ZET6详情页
https://www.mouser.cn/ProductDetail/STMicroelectronics/STM32F103ZET6?qs=tZXS5FmuAdl%252BxDVKlk7lAA%3D%3D
为了将文件的格式转换为自己所使用的设计软件(如本文所使用为Orcad_Capture17.4)相对应的格式,我们还需要下载LIBRARY LOADER,下载方式已在上图中标明。其具体使用方法(包括Orcad中.xml文件的导入)在CSDN中也有相应的文章介绍,本文中就不再一一赘述了。在后文中,我们所使用的元器件相应封装文件等也都来自于该网站。
导入完成后我们在Capture中放置出来的STM32F103ZET6就如下图所示,现在我们就可以对照着其数据手册中引脚定义表的部分来对它的引脚逐一进行分析与配置连接了。
二、STM32F103ZET6引脚解析
对STM32F103ZET6的引脚分析工作,我们就对照着意法半导体官方的数据手册按顺序来进行。根据数据手册中的引脚定义图可知,PE2到PE6的复用功能(Alternate Functions)为TRACE和FSMC。由于我们没有使用TRACE功能,就仅仅简单引入一下其概念——TRACE是一种用于调试和分析系统的接口,可以帮助开发者更好地掌握系统的运行状况,感兴趣的读者可以自行了解。 重点在于我们接下来会使用到的FSMC功能。
FSMC
FSMC:Flexible Static Memory Controller,可变静态存储控制器,可以用来扩展外设SRAM和连接TFT-LCD等。FSMC相关引脚在STM32F103ZET6的引脚中占了相当大一部分,搞懂这些引脚的功能就相当于解决了这个MCU的一大部分引脚。FSMC主要具有四个模块:AHB总线(包含FSMC配置寄存器);HCLK时钟;NOR闪存和PSRAM控制器;NAND闪存和PC卡控制器。下面我们先来看一下FSMC的模块框图
这幅图很好地展现了FSMC各引脚的功能。首先是通用的信号:
FSMC_A[25:0] 、FSMC_D[15:0] 分别为地址引脚和数据引脚,用于与外接的设备(例如NOR FLASH、NAND FLASH等)上对应的地址引脚和数据引脚相连接。
FSMC_NOE、FSMC_NWE 分别为输出使能(读使能)和写使能,NOE与外接设备上的OE/RE引脚(也就是输出使能/读使能)相连接,NWE则与对应的WE引脚相连接。
FSMC_NWAIT 是NOR FLASH要求等待信号引脚,用于与FLASH设备上的RY/BY引脚相连,RY/BY是一种专用的开漏引脚,用于指示嵌入式算法是否正在进行或已完成。其需要接上拉电阻才能正常工作。
介绍完通用信号,下面我们来介绍NOR FLASH/PSRAM的专用信号:
FSMC_NE[4:1] 是片选地址,与外部设备上的CS(Chip Select 片选)或CE引脚相连接,需要接上拉电阻保证正常工作。
FSMC_NBL[1:0] 为数据掩码信号,NBL0和NBL1分别用于连接LB和UB引脚分别控制低位字节访问和高位字节访问。
FSMC_CLK 当然是时钟信号了,在同步突发模式下会使用。
FSMC_NL(NADV)则是当地址和数据线复用时,用作访问地址和数据的区别信号。
NAND的专用信号也大同小异:
FSMC_NCE[3:2]也是片选信号,用于NAND FLASH的片选,引脚连接方式和NE相同。
FSMC_INT[3:2]则是闪存繁忙信号,用于与NAND FLASH上的R/B引脚相连接,也需要接上拉电阻。
最后是PC卡的接口,由于我们没有选用PC卡,就直接将FSMC_INTR、NIORD、NIOWR、NREG、CD当做普通I/O口使用,用来给我们的开发板接上5个LED。还有FSMC_NIOS16也是PC卡的接口,对应的PF11引脚我们就用来给RS485传输RS485_DIR信号。
至此,FSMC相关的引脚就全部介绍完了,为了发挥FSMC的作用,我们选用了一个NOR FLASH,一个异步NOR FLASH,一个NAND FLASH,还有一个TFT-LCD屏。关于这些设备的具体事项我们先按下不表,在后文中还会再提到它们。现在我们就先将目光移回到STM32F103ZET6的引脚定义表上。
在介绍完FSMC相关内容后,我们已经知道PE2到PE6都是FSMC的地址引脚了,目前我们只需要给他们分配好对应的网络标签,为之后与相关外设连接做好准备即可(当然,后面再连也可以),后续跟FSMC相关的引脚也都是如此。那么再往下看,就来到了VBAT引脚。
VBAT
VBAT其实非常好理解,就是备用电源,也就是我们在开发板上所看到的纽扣电池。当VDD没有供电时,芯片就会从VBAT上取电,用于保证电源中断时RTC和备份寄存器能维持工作。如果没有使用外接备用电池,就需要把VBAT引脚通过一个100nF的电容接到VDD上。该引脚的具体接法可以参考这篇文章。STM32 VBAT外围电路接法详解
https://blog.csdn.net/qq_27016651/article/details/80328964?ops_request_misc=&request_id=&biz_id=102&utm_term=VBAT%E8%AE%BE%E8%AE%A1&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-80328964.142^v102^pc_search_result_base4&spm=1018.2226.3001.4187
TAMPER-RTC
RTC(Real Time Clock)实时时钟,这是一个独立的定时器,可以用作时钟日历。TAMPER则是入侵检测,当TAMPER引脚上的信号发生变化,就相当于检测到了入侵事件,入侵检测可以用于配置检测到入侵事件时清除RTC备份寄存器等功能,用于防止黑客入侵。该引脚也可以用作I/O口,但数据手册中标明了:在同一时间,PC13,PC14,PC15中只有一个可以用于输出。
根据所配置功能的不同,PC13(也就是我们的TAMPER-RTC引脚)的连接方式也有所不同,下面我们来介绍其中几种,我们在设计中可以根据需求的不同选择不同的连接方式。
①:直接悬空处理。 最简单粗暴的处理方式,由于PC13具有内部上拉/下拉电阻 ,并且不是关键的系统引脚等原因,官方允许该引脚直接悬空。这种处理方式适用于不需要RTC和TAMPER功能,并且可以简化PCB设计。(在这种情况下PC13还可以通过软件配置为用作输入)
②:使用RTC但是不使用TAMPER功能。 这种处理方式也只需要将PC13悬空或者用作普通I/O口即可,但是由于使用了RTC功能,所以需要配置备用电源VBAT来保证其运行(刚才就讲了VBAT可以用于保证电源中断时RTC和备份寄存器维持工作)。
③:需要TAMPER功能。 为了使用TAMPER入侵检测功能,我们就需要为其配置传感器或者外部TAMPER开关等,同时还需要连接外部上拉电阻。具体连接则需根据功能设计。
PC13的连接方式到此也告一段落。接下来我们来连接上文中提到的PC14和PC15。
OSC_IN/OUT & OSC32
前文中我们提到的PC14和PC15,官方在数据手册中给他们的功能分别定义为OSC32_IN和OSC32_OUT,也就是单片机上外部32.768 kHz低速晶体振荡器的输入和输出引脚。注意我们加粗的字体,OSC32是低速晶体振荡器的引脚, 那是不是还有高速晶振的引脚呢?没错,在我们的STM32F103ZET6上还有PD0和PD1引脚,分别为OSC_IN和OSC_OUT引脚,他们可以用于连接外部的高速晶振。至于为什么会区分有高速晶振和低速晶振,当然是因为他们功能的不同。
高速外部晶体振荡器(或者说常规晶振)通常用于提供单片机的主时钟信号。主时钟信号是单片机内部各个模块和外设进行同步操作的基准时钟。通过连接外部晶体振荡器,可以获得更高的时钟精度和稳定性,适用于需要高精度时钟的应用场景。
低速外部晶体振荡器,也就是32.768 kHz晶体振荡器通常用于RTC实时时钟和低功耗模式下的时钟源。它用于提供较低频率的时钟信号,适用于需要长时间运行、低功耗和精确时间计量的应用场景。(不用RTC功能的话其实也可以不用连接OSC32_IN / OSC32_OUT)
至于这两种晶振的连接方式,官方也在数据手册中给出了参考
其中电容和电阻的数值选择官方也给出了参考
我们可以注意到表格中的RS,这指的是晶振的动态等效电阻。至于REXT则是用于对晶振功率进行限制的电阻,这是因为晶振的功耗必须限制在一定范围内,否则石英晶体可能会由于过度机械振动而导致不能正常工作。前面的典型应用电路图中也给出了REXT=5~6RS。对于晶振电路的元器件选型,我们最好是根据晶振的数据手册来选择。同时,我们也不妨来看看专业的晶振科技公司是怎么设计的。
晶诺威科技给出的说明极具参考价值。结合上述各种资料,本文的器件选型为:8MHz晶振,RF=1MΩ,CL1、CL2=20pF,REXT取消不使用。各位也可以根据所选晶振情况来自行选择。
结束了晶振部分,接下来的PF0~PF5则是前文早已说过的FSMC引脚,像前面一样处理即可(后面的FSMC相关引脚也都一样)。那么我们的目光继续向后望去,略过之前决定用于连接LED的PF6~PF10,来到了NRST引脚。
NRST
NRST是异步复位脚,用于连接RESET电路。当NRST输入低电平的时候,MCU进入复位状态,重设所有的内部寄存器。对于这个引脚的连接,我们直接参考官方给出的推荐连接方式即可。
我们可以看到,RESET电路只需要连接一个并联着0.1uF电容的按钮开关即可,另外还需要一个上拉电阻来使其保持高电平。至于上拉电阻的阻值直接选择数据手册中推荐的40KΩ即可。
ADC_IN、DAC_OUT
ADC(Analog-to-Digital Converter 模数转换器)是将模拟信号转换为数字信号的关键模块。STM32 系列微控制器集成了高性能的 ADC,广泛应用于电压采样、传感器读取、温度测量等场景。与之对应的还有DAC(Digital-to-Analog Converter数模转换器)。
PC0~PC3都属于ADC_IN引脚,对于ADC引脚的命名规则,ADC123_IN0表示ADC1、ADC2、ADC3都有通道IN0。 ADC12_IN4表示只有ADC1、ADC2有通道IN4,而ADC3没有通道IN4。我们的开发板上一共为ADC配置了PC0、PC1、PC2三个IO口(也就成了我们的AIN0、1、2信号),它们对应的ADC通道分别是ADC1、2、3的10、11、12通道。
至于DAC_OUT则是DAC的输出通道,也就是PA4和PA5引脚,在我们的开发板上,它们不止用作DAC输出通道,还复用了SPI相关功能,在后面的SPI部分中我们会提到。
另外,ADC的触发方式包括软件触发和硬件触发。硬件触发可以是定时器(TIM)触发、外部引脚(EXIT)触发。在我们的开发板上,我们选择用TIM配置PWM来触发ADC(TIM引脚配置PWM我们在后文中会提到),PWM用于ADC控制的优点在于:可以实现采样与功率周期的严格同步,同时硬件联动的效率远高于软件触发。下面是两张ADC模块的框图,可以帮助我们理解。
VSS、VDD、VREF+/-、VSSA、VDDA
VSS和VDD自然无需多言,接地和接电源输入即可,我们在这选择3.3V的VDD,供电方式为USB提供5V,通过LDO(低压差线性稳压器,这个真的需要介绍吗?)输出3.3V。USB供电电路的设计我们先按下不表。现在我们先来关注一下VREF+、VREF-、VSSA、VDDA这四个引脚,这些引脚都是为单片机内部的ADC所服务的,下面先介绍一下它们的基本概念。
VDDA和VSSA分别是芯片的模拟正电压和负电压,其中的A指的是Analog模拟。它们主要用于供单片机内部模拟电路和模块,例如ADC(Analog-to-Digital Converter 模数转换器)、DAC(Digital-to-Analog Converter数模转换器)。为了减少数字和模拟电路之间的相互干扰,单片机上往往需要独立的引脚和电源给ADC供电和接地(也就是VDDA和VSSA)。
VREF -(ADC基准负电压)需要和VSSA相连来确保共地,VREF+(ADC基准正电压)是ADC测量电压的标准。下面我们来看看官方给的电源电路是怎么样的。
根据官方给出的参考电路,我们可以发现为了给VDD供电,一共要接11个100nF的电容外加1个4.7uF的电容,其中4.7uF的电容用于连接VDD3。至于VDDA、VREF+、VREF-、VSSA的连接,我们也直接参考官方给出的电路。
至此,数据手册中第一页的引脚就已经全部连接完毕,我们先放一个参考图看看。
现在让我们跟随数据手册,进入到第二部分引脚的连接
WKUP
WKUP引脚,即为WAKEUP功能引脚,作用为从低功耗/休眠状态下唤醒MCU,让MCU进入正常的工作状态。至于其电路连接,只需要连接一个按钮开关和上拉或者下拉电阻即可(根据上拉或者下拉在程序中进行不同配置)。
USART
UART(通用异步收发器)与USART(通用同步/异步收发器)都是单片机上的串口通信,从名字上不难看出他们的区别:USART在UART基础上增加了同步收发功能。这个增加的同步收发功能可以用来驱动同步通信,比如SPI设备就可以用USART来驱动。
当USART用于异步通信时,它等效于UART。我们可以通过USART来使用RS232、RS485通信协议,只需要用USART外接RS232接口IC和RS485接口IC即可。同时由于RS232和RS485只需要用到RX、TX和GND,我们只需要配置RX和TX就可以了,像USART_CTS和USART_RTS都可以另作他用(比如我们的PA0和PA1)。在本文的开发板上,我们使用了U1TX,U1RX,U2TX,U2RX,U3TX,U3RX来连接总共两个RS232接口,一个RS485接口。至于连接的电路图和使用的IC型号,我们依旧放到后面跟其他外接设备一起。
SPI
SPI(Serial Peripheral Interface,串行外围设备接口)是一种高速、全双工、同步通信总线。SPI 通讯协议的优点是支持全双工通信,且数据传输速率较快;缺点是没有指定的流控制,没有应答机制,在数据可靠性上有所欠缺。为了使用SPI通讯协议,我们需要有以下信号,也就是我们的PA4~PA7引脚的功能,其中PA4和PA5我们在前面也提到过,它们还复用了DAC输出:
MISO ( Master Input Slave Output ) : 主设备数据输入,从设备数据输出;
MOSI ( Master Output Slave Input ) : 主设备数据输出,从设备数据输入;
SCLK ( Serial Clock ) : 时钟信号,由主设备产生;
CS/SS ( Chip Select/Slave Select ) : 从设备片选信号,由主设备控制,通常低电平有效。
在我们的开发板上,我们使用SPI配置了一个SPI_FLASH,这种FLASH的优点为可以节省成本、同时封装尺寸小。至于其电路连接方式和型号我们照例放在后面一起讲。
TIM引脚配置PWM控制
PWM(Pulse Width Modulation)是一种脉宽调制技术,用来调节信号波形的高电平时间(脉冲宽度)的比例,从而改变有效值。PWM技术常见于电子电路中,这项技术被广泛应用于各种领域和设备中,例如电机控制、电源调节、LED灯控制、还有我们前文中提到的ADC触发等。我们可以使用单片机上具有TIM定时器功能的引脚来配置PWM。
在我们的STM32F103ZET6单片机上一共有8个定时器,其中的TIM1、TIM8 为高级定时器,每个可以产生7 路 PWM 信号,从 7 个 IO 口同时输出。TIM2-TIM5 为通用定时器,每个可以产生 4 路 PWM 信号。基本定时器TIM6、TIM7 无法产生 PWM 信号。在这里我们选择用PB0和PB1引脚来作为PWM引脚,用于触发ADC。
BOOT
STM32的BOOT引脚主要用于控制启动模式和引导加载程序。在STM32F103ZET6上一共有两个BOOT引脚,分别为BOOT0和BOOT1(PB2)。BOOT0一般用于指示微控制器是否进入系统模式,在系统模式下可以通过串口或其他通信接口下载应用程序。BOOT1引脚的状态则决定了从哪个存储器中加载程序,它可以根据所使用的储存器类型设置为高电平或低电平。对于这两个BOOT引脚的连接,只需要分别连接到一个单刀双掷开关用于切换高低电平即可。但是需要注意的是BOOT0和BOOT1都需要串接一个10K电阻后再连接到开关,这个电阻起到限流的作用,可以保护IC的内部电路,从而极大的延长使用寿命。也可以使用3x2的Header来接BOOT电路。
到这里为止,第二页的引脚也都处理完毕了,再来看看第三页的引脚
这一页大部分的引脚都是前面说过的FSMC引脚,剩下的PB10、PB11是我们前面提到的U3TX和U3RX,PB12~PB15都是具有SPI功能的引脚,但是我们已经配置了一个SPI_FLASH了,所以这些引脚我们就留作普通的I/O口使用。那么第三页的引脚就这样迅速结束了,我们再来看第四页。
这一页前面的引脚基本也都是我们的老熟人FSMC,但是从PC6开始,就出现了新朋友——具有SDIO功能的引脚,它们将会帮助我们实现SDCard接口的设计。下面就让我们正式引入SDIO的概念。
SDIO、SDCard
SDIO(Secure Digital Input and Output) 安全数字输入输出接口是由SD演化而来的。SDIO可以用来连接SDCard,也可以用来连接SDIO Card(例如GPS卡,WIFI卡等功能卡)。其传输方式分为SPI、1BIT、4BIT,其中我们为了配置一个SDCard连接器需要4BIT传输模式,因此我们需要SDIO_D0~SDIO_D3一共四个数据传输引脚(SDIO_D4、5、6、7可以作为普通I/O口或其他用途)。另外还需要SDIO_CLK(PC12)用作时钟信号,SDIO_CMD(PD2)用于双向传输命令和应答。下图是我们所用到的SD卡连接器数据表的一部分,我们可以在这看见它的引脚连接方式。
USB
STM32F103ZET6上的PA11和PA12分别具有USBDM和USBDP的功能,这意味着这两个接口可以用于USB数据传输。前面在VDD部分我们也提到过,我们的开发板选用USB供电,因此需要安装一个USB连接器在开发板上。下图就是一个USB2.0 Type-A连接器的Symbol、封装和3D模型,其中1号引脚为USB_VBus用于输入5V,2号和3号引脚分别用于连接USBDM(PA11)、USBDP(PA12)来进行数据传输,4、5、6号引脚接地。
USB还分为A型、B型、C型。下面是USB-typeA和USB-typeB的图片,至于USB-TypeC就是我们生活中常常见到的手机充电头。
更多有关USB的类型、协议标准、引脚分布、架构、时序和数据格式等内容各位可以自行学习。
JTAG
介绍完PA11和PA12,我们可以看到PA13的功能描述是JTMS-SWDIO,也就是TMS(测试模式选择)功能。这是用于JTAG协议的功能,下面我们就来介绍一下JTAG是什么。JTAG(Joint Test Action Group,联合测试行动小组)是一种用于系统仿真、调试及芯片内部测试的标准测试协议,也可以用于给芯片烧录程序。它具有14针和20针两种连接标准,这里我们选择20针的标准接口。下面这张引脚定义图来自于站内大神 学海无涯_come on的文章JTAG各类接口针脚定义、含义以及SWD接线方式。
TDI、TMS、TCK、TDO、NTRST分别对应单片机上的PA15、PA13、PA14、PB3、PB4,需要特别注意的是:在实际的电路连接中还需要为这些引脚配置上拉电阻来保证他们处于高电平状态。
JTAG的电路连接我们也放到第三章,现在引脚定义表的第五页也已完成,那么接下来就到了我们引脚表的最后一页。
在最后一张引脚定义图中,我们可以看到PB5~PB7是具有I²C(IIC)功能的引脚,PB8~PB9是具有CAN通讯功能的引脚,这些就是我们仅剩的尚未配置的引脚了。
IIC(I²C)
I2C总线(Inter-Integrated Circuit)是一种广泛应用于嵌入式系统的双线串行通信协议,主要用于低速率数据传输场景。它通过两条信号线——SDA(Serial Data Line,串行数据线)和 SCL(Serial Clock Line,串行时钟线),实现主机与从机之间的高效通信。我们在开发板上用I2C总线配置了一个EEPROM。
EEPROM (Electrically Erasable Programmable read only memory)带电可擦除可编程只读储存器可以通过I2C总线进行数据传输,支持字节写入和读取,以及连续读取等功能。EEPROM的工作只需要SDA和SCL即可,I2C_SMBA是I2C的从机地址检测信号输入引脚,用于检测 I2C 总线上是否有从机设备连接。当 I2C 总线上的从机设备连接或断开时,会产生一个 SMBus警告中断,通过检测SMBus的电平变化来检测从机设备的连接状态,在此我们并不需要,所以直接把PB5用作普通I/O口。
CAN
CAN(Controller Area Network),是 ISO国际标准化的串行通信协议。CAN传输的是差分信号,通过两根信号线的电压差CANH和CANL来表示总线电平,具有抗干扰能力强,能有效抑制外部电磁干扰,并且能够检测出产生的错误等优点,这些优点也使得CAN常常被用于板间通信。同时CAN总线通信是半双工的,不能同时发送和接收。在多个节点竞争总线进行发送时,通过ID的优先级进行仲裁。CAN还具有无时钟信号的特点。
为了在我们的开发板上使用CAN进行通信,我们需要用到CAN收发器来与总线进行数据收发,下图就是TI公司的3.3V CAN收发器数据手册的截图。
到这里为止,STM32F103ZET6上引脚的功能和定义我们已经全部了解了,下面就开始正式为前文中提到的硬件资源进行连接。
三、各硬件资源的电路连接
NOR&NAND FLASH
对于开发板上所使用的NOR FLASH和NAND FLASH,我们选择了一个128MB的NOR FLASH,一个8MB的异步NOR FLASH和一个2GB的NAND FLASH。这是由于当容量大于128MB时,NOR FLASH的性价比会急剧下降,所以对于大容量的储存我们选用NAND FLASH。NOR FLASH的优势在于支持按字节随机访问和XIP(就地执行)能力,这对嵌入式启动代码至关重要,而异步NOR FLASH的接口简单直接, 时序控制逻辑简单,无需复杂的时钟同步电路,同时异步接口的开销较小,延迟也基本可以确定。
①MT28EW128ABA1LJS-0SIT TR ---128MB NOR FLASH 56PIN
根据数据手册中的资料,我们可以对其引脚进行连接。
A0~A22、DQ0~DQ15分别与我们MCU上的FSMC_A0~A22/D0~D15相连即可,由于我们选用的FLASH为128MB的,所以A23(仅256MB及以上使用)、A24(仅512MB及以上使用)、A25(仅1GB及以上使用)视作RFU引脚
CE、OE、WE分别对应片选信号FSMC_NE2、读使能信号FSMC_NOE、写使能信号FSMC_NWE,连接时要特别注意片选信号需要接上拉电阻
WP是写入保护引脚,当其处于低电平时写保护第一个或者最后一个块,因此需要接上拉电阻保持其高电平
BYTE引脚用于选择数据总线位宽x8和x16工作模式,这里我们为其接上拉电阻来选择x16工作模式
RST则是RESET功能引脚,我们将其与MCU上的RESET相连即可
RY/BY(Ready/Busy)当输出低电平时表示器件在进行写入或擦除工作,当输出高电平时表示器件已准备就绪,该引脚用于与FSMC_NWAIT相连接,并且也需要接上拉电阻
注意VCC和VCCQ都需要分别在VSS之间连接一个0.1uF和0.01uF的电容
RFU(Reserved For Future Use)引脚翻译过来就是“保留以备将来使用”,这是生产厂家为未来其他功能所预留的引脚,与NC、DNU(Do Not Use禁止使用)引脚相同处理,直接nc掉即可。连接完成的电路图可以参考下图(由于一共有两个NOR FLASH和一个NAND FLASH,推荐使用总线来连接会更便利)。
②IS61WV51216EEBLL-10TLI-TR ---8mb NOR FLASH ASYNC 10ns 异步NOR_FLASH
异步NOR FLASH的引脚连接与常规的NOR FLASH大同小异,比较特别的是异步NOR FLASH具有LB和UB引脚——它们是数据掩码信号引脚,分别用于控制低位字节访问和高位字节访问,在电路连接时需要将它们分别连接到MCU上的FSMC_NBL0、FSMC_NBL1功能引脚。最后不要忘记给片选信号引脚加上我们的上拉电阻,还有给VDD加上滤波电容。完成后的电路连接如下图所示。
③MT29F2G08ABAEAWP-AATX:E TR ---2G NAND FLASH 256mb x 8
NAND FLASH适合用于大容量储存,因此我们选择256mb x 8 (2Gb)容量的NAND FLASH
对于NAND FLASH,我们需要注意ALE和CLE引脚,它们分别是Address latch enable地址锁存使能和Command latch enable命令锁存使能,由于一共只有8个复用的I/O口来传输信号,所以NAND FLASH需要通过它们来区分数据线上的信号类型,当ALE处于高电平时说明传输的是地址,当CLE处于高电平时说明传输的是命令,当它们都处于低电平说明传输的是数据。在使用FSMC时,CLE与ALE一般默认与FSMC的地址线A16、A17(也就是PD11和PD12)相连接,但是其实也可以与FSMC的其他地址线相连接使用。
RE和WE则是我们熟悉的读使能和写使能,连接FSMC_NOE、NWE。
I/O0~7与FSMC的数据线FSMC_D0~D7相连
R/B(Ready/Busy)我们也在前文提到过。当其输出低电平时表示器件在进行写入或擦除工作,当输出高电平时表示器件已准备就绪,该引脚用于与FSMC_INT(闪存繁忙信号,在引脚解析的FSMC部分我们就提到过)相连接,这里我们直接将其连接到FSMC_INT2。并且由于其是开漏极输出,还需要接上拉电阻。
NAND的片选信号引脚CE,我们将其连接到FSMC_NCE2即可,在最后不要忘记片选信号和写入保护都需要上拉电阻来保持高电平。
连接完成后的电路可以参考下图
RS232&RS485&CAN
为了通过USART来使用RS232协议、RS485协议、CAN协议进行数据传输,我们分别需要RS232接口集成电路、RS485接口集成电路、CAN高速收发器来进行电平和信号的转换。
①ST3232EBDR ---RS-232接口集成电路
ST3232是一款由意法半导体(STMicroelectronics)生产的RS-232收发器芯片,主要用于实现TTL/CMOS电平与RS-232电平之间的转换,我们可以通过它获得两对RS232信号。
具体的电路连接方式可以参考下图
②SN65HVD72DGKR ---RS-485接口集成电路
RS485接口IC是实现该标准的专用芯片,它负责将逻辑电平转换为差分信号。关于它的电路设计,我们需要先来看看数据手册中的引脚定义图和TI官方给出的电路设计参考图。
我们可以看到有一个名为TVS的器件,型号是CDSOT23-SM712,这个器件名叫双向400W瞬态抑制器(Bidirectional 400-W Transient Suppressor)是一种用于保护电子设备免受瞬态电压(如浪涌、静电放电等)损坏的半导体器件,又名ESD保护二极管(或TVS二极管),典型应用有:电源线路保护、通信接口防护、工业设备抵御电压尖峰等,在此处用于保护RS-485免受静电干扰。
DIR是用来控制收发的信号,为高电平时发送,低电平接收,它可以由单片机上的GPIO口传输。在前文FSMC引脚解析部分已经提到过,由于没有使用PC Card,FSMC_NIOS16(也就是PF11)引脚还没有被使用,我们在此直接将其用来传输485_DIR信号。那么我们根据参考电路连接完成后的电路如下图所示。
③SN65HVD232QDRQ1 ---CAN高速收发器
SN65HVD232QDRQ1是一款CAN收发器,它的作用是充当微控制器与CAN总线之间的接口。它的工作原理是将微控制器的数字信号转换为差分信号,通过CAN总线传输并接收总线信号,再将接收到的总线信号转换为数字信号返回给微控制器。下面我们依旧先来看看它的引脚定义。
在CAN收发器的电路设计中,终端电阻是特别需要注意的概念。由于ISO 11898标准指定了CAN网络应使用特性阻抗为120Ω的双绞线(带屏蔽或不带屏蔽)进行互连。为了防止信号反射,应该在电缆的两端使用等于线路特性阻抗的电阻进行终端电阻匹配,终端电阻可以是总线末端的单个120Ω电阻,位于线束上或在一个终端节点中。
关于CAN收发器的电路设计,可以参考一下这张图片。需要注意的是图中的CAN收发器型号与我们所选用的不同,其RS和VREF引脚在我们的收发器上都是NC。
连接完的电路如下图所示
SDCARD
①GSD09002SEU ---SD卡插座
为了在开发板上使用SD卡,我们需要安装一个SD卡插座。我们再来看看前文中展示过的图片。
从图中我们可以得知,SD卡使用9-pin接口通信,其中
SD-CLK: 时钟线,由微控制器输出
SD-CMD: 命令控制线,微控制器通过该线发送命令控制 SD 卡,SD 卡能通过该线传输应答信息
SD-DAT0-3:数据传输线,用于传输读写数据
在SD卡插座的电路设计中,我们需要注意:除了CLK时钟信号外,CMD和DAT0~3都需要接上拉电阻来保持高电平,以保证正常工作。下面是电路连接完成后的样子。
USB&POWER
①GSB12121031EU ---USB插座
②NCP718BSN330T1G ---LDO稳压器 5V-3V3
前文中提到过,我们在开发板上设计使用USB进行5V供电,再将5V通过一个LDO低压差线性稳压器来输出3.3V给MCU。那么为了完成这个供电电路的设计,我们就需要一个USB插座和一个LDO。USB插座的类型、封装、连接等我们在前文USB板块已经介绍过了,现在就介绍一下NCP718BSN330T1G,也就是我们所使用的LDO。
由于我们使用的具体型号是NCP718BSN330T1G,ADJ引脚(通过分压采样电路来调整输出电压的引脚)可以直接NC掉,输出自动就是3.3V,再给EN引脚连接一个RC电路即可。再将USB的VBUS(VCC_5V)与LDO的VIN相连接即可。下面是完成后的电路
SPI FLASH
①AT45DB321E-SHF2B-T ---SPI FLASH
SPI FLASH(串行外设接口闪存)是一种基于SPI协议的闪存存储设备,广泛应用于嵌入式系统、物联网设备和消费电子产品中。其核心特点在于结合了SPI接口的简单性和闪存的非易失性,提供高效、低成本的数据存储方案。
SPI的主要优势在于:其使用串行通信协议,比并行接口节省PCB空间和引脚资源,并且支持全双工通信,允许同时发送和接收数据,提高了数据传输效率。协议简单,易于集成到微控制器(MCU)中,开发门槛低。下面我们来看看AT45DB321E的引脚功能表。
从数据手册给出的表格中我们可以发现,SPI FLASH上有4个主要引脚:SCLK(时钟)、MOSI(主出从入)、MISO(主入从出)和CS(片选),对应着我们单片机上的PA4~PA7引脚。还有值得注意的一点是,对于CS、WP、RESET三个引脚,表格中标注了Asserted State Low,那么我们就来简单解释一下什么是Assert和Deassert。
Assert从英文直译过来有“断言”、“明确肯定”、“有效”等意思。在数据手册中,Assert一般代表“有效”,Asserted State Low则意味着“低电平有效”,对应的,如果出现Deasserted State Low则代表着“低电平无效”。这用于指示我们引脚在什么电平失效/生效。
对于WP,数据手册中指出——这个引脚在内部被置为了高电平,并且在没使用硬件防护控制时可以留着不连接,但是还是推荐尽可能将WP外部连接在VCC上。
RESET引脚在没有被使用时也是推荐在外部将其置于高电平,我们可以直接给它连接一个上拉电阻。
至于CS引脚,我们直接将其与片选信号SPI1_NSS(PA4)相连接即可。连接完成后的电路图如下
IIC EEPROM
①AT24C02D-XHM-T --- I2C EEPROM
EEPROM(电可擦除可编程只读储存器)具备电可擦除性、字节级编程/擦除、非易失性存储、容量小等特点(还有便宜)。其适用于小容量、低频修改的配置存储,例如设备参数存储,MCU程序存储器,加密密钥存储等。下面我们来看看AT24C02D的引脚描述。
在EEPROM上,A0~2是用于和其他IIC EEPROM进行兼容的,它们和WP引脚都在内部被置为了低电平。然而厂商Microchip还是推荐尽可能地把这些引脚连接一个具体的known state(已知状态),因此我们把A0~A2和WP全部接GND。
SDA和SCL是IIC的核心,我们来看看厂家对它们的说明
数据手册说明:SDA是一个开漏(open-drain)双向I/O引脚,用于向设备串行传输或接收数据,并且这个引脚必须通过一个外部上拉电阻(阻值不超过10KΩ)来置于高电平,这是为了利用外部电路的驱动能力来减少IC内部的驱动(或驱动比芯片电源电压高的负载)。
SCL则是串行时钟的引脚,用于提供时钟信号来控制数据流在设备上的传输。这个引脚也需要在外部连接上拉电阻。连接完成的电路如下图
PS:数据手册中还提到了一个词“wire-OR”,翻译过来就是“线或”,与之对应的是“wire-AND” “线与”。但是一般IIC使用"线与"逻辑来在多个主设备同时占用总线时进行仲裁,此处数据手册中说可能会与其他设备线或,不知道是编写错误还是有其他原因。如果有懂的大神可以在评论区指出。
TFT-LCD
TFT-LCD(薄膜晶体管液晶显示器)是一种液晶显示器,通常需要连接到微控制器来显示图像。而当FSMC应用于TFT-LCD时,FSMC可以模拟LCD的并行接口(如8080或6800模式),提供数据、地址和控制信号,从而实现高速数据传输和显示控制。
为了连接LCD,我们需要以下这些引脚
| LCD_REST | 复位引脚,与 MCU的RESET电路相连即可 |
| LCD_CS | LCD 片选,与FSMC片选相连 |
| LCD_RS | LCD 命令/数据线,用于表示当前是读写命令还是数据 |
| LCD_WR | LCD 写使能,与FSMC_NWE相连 |
| LCD_RD | LCD 读使能,与FSMC_NOE相连 |
| LCD_DB0 ~ LCD_DB15 | LCD 数据线,与FSMC_D0~D15相连 |
| LCD_BL | LCD 背光引脚,连接I/O口 |
连接后的电路可以参考
ADC/DAC
ADC的基础概念等前文也已经介绍过,我们在这直接用10PIN的connector来连接相关信号
JTAG
前文解释JTAG引脚的功能时我们已经对JTAG的基本概念以及其各个引脚的功能进行了介绍,在这里就不再重复了,大家可以自己翻回JTAG引脚部分复习一下。下面我们就直接根据下图开始JTAG的电路连接。
在连接完成后不要忘记给TDI、TMS、TCK、TDO、NTRST配置上拉电阻。完成后的电路如下
I/O引出
STM32F103ZET6一共有144个引脚,其中有112个通用I/O口,我们用两个28x2的HEADER把它们全部引出即可。
LED、VCC滤波
在FSMC部分我们曾说过,因为没有使用PC卡,我们将PC卡相关功能的引脚用来连5个LED,下面是LED的电路连接图(还有一个电源指示LED没有画在这边,就不特意放出来了)
至于VCC滤波,在VDD部分我们发现在数据手册中要求每一个VDD需要一个100nF的电容来滤波(100nF一共11个,VDD3还要连接一个额外的4.7uF电容)那么很简单,直接放11个电容出来组成如下的滤波电路即可。
STM32F103ZET6
现在我们的电路已经全部连接完成了,下面是连接完成后的STM32F103ZET6引脚连接情况,以供参考。
注意:本原理图中OFF-PAGE CONNECTORS仅用于跨页连接网络,不用于指示信号传输方向!各位可以自行绘制双向连接符号
四、总览
完成后的原理图一览
由于缩放原因,截图的分辨率只能如此,清晰的原理图可以在文件中找到PDF文件
更多推荐

所有评论(0)