大家好,今天我跟大家分享一下STM32F103RCT6的板载资源,希望对初学STM32的同学有所启示。当然,本人也是一名初学者,如果有谈论不妥之处,还望您能够批评指正,不吝赐教,本人将非常感激。如果有什么问题,欢迎您到http://www.openedv.com/进行提问与讨论。最后祝您学业有成,工作顺利。
一、MCU
ALIENTEK MiniSTM32 V3 版开发板选择的是 STM32F103RCT6 作为 MCU,它拥有的资源包括:48KB SRAM、256KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、2个 DMA 控制器(共 12 个通道)、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1 个 CAN、3 个 12位 ADC、1 个 12 位 DAC、1 个 SDIO 接口及 51 个通用 IO 口。该芯片性价比极高,MCU 部分的原理图如下图所示:
上图中中上部的 BOOT1 用于设置 STM32 的启动方式,其对应启动模式如下表所示:
一般情况下(即标准的 ISP 下载步骤)如果我们想用串口下载代码,则必须先配置 BOOT0 为 1,BOOT1 为 0,然后按复位键,最后再通过程序下载代码,下载完以后又需要将 BOOT0 设置为 GND,以便每次复位后都可以运行用户代码。可以看到,这个标准的 ISP 步骤还是很繁琐的,跳线帽跳来跳去,还要手动复位,所以 ALIENTEK 为 STM32 的串口下载专门设计了一键下载电路,通过串口的 DTR 和 RTS 信号,来自动控制 RST(复位)和BOOT0,因此不需要用户来手动切换状态,直接串口下载软件自动控制,可以非常方便的下载代码,这是其他开发板所不具备的。
二、EEPROM
ALIENTEK MiniSTM32 开发板自带了 24C02 这颗 EEPROM 芯片,该芯片的容量为 2Kbit,也就是 256 个字节,其原理图如下:
把 A0~A2 均接地,对 24C02 来说也就是把地址位设置成了 0 了,写程序的时候要注意这点。IIC_SCL 接在 MCU 的 PC12 上,IIC_SDA 接在 MCU的PC11 上。这里我没有接到 STM32 内部的 IIC 上,如果你想在开发板上使用硬件 IIC,那么也是可以的,你只需要设置 PC11 和 PC12 为浮空输入,然后把 PB10和 PB11 (IIC2)或者 PB6 和 PB7(IIC1)通过飞线连接到 PC11 和 PC12 上就可以使用硬件 IIC 了。
三、按键
ALIENTEK MiniSTM32 开发板总共有 3 个按键,其原理图如下:
WK_UP 按键连接到 PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外,还可以用作 STM32 的唤醒输入。该按键是高电平触发的。由于 PA0 还是 DS18B20 的输入引脚,而18B20 是有上拉电阻的,所以在使用 WK_UP 按键的时候,请 一定要断开 PA0 和 和 DS18B20 的跳线帽。
KEY0 和 KEY1 用作普通按键输入,分别连接在 PC5 和 PA15 上。
四、LED
ALIENTEK MiniSTM32 开发板上总共有 3 个 LED,其原理图如下:
其中 PWR 是开发板电源指示灯,为蓝色。LED0 和 LED1 分别接在 PA8 和 PD2 上,PA8还可以通过 TIM1 的通道 1 的 PWM 输出来控制 DS0 的亮度。DS0 为红色,DS1 为绿色。绿灯不能实现呼吸灯。
五、SPI FLASH
ALIENTEK MiniSTM32 开发板载有 SPI FLASH 芯片 W25Q64,该芯片的容量为 8M 字节,其原理图如下:
六、USB 串口、USB 、电源
ALIENTEK MiniSTM32 开发板板载了 USB 串口,并且由 USB 提供电源,使得我们只需要一根 USB 线就可以使用 ALIENTEK MiniSTM32 开发板了,包括串口下载代码、供电、串口通信 3 位一体。开发板的供电部分还引出了 5V(VOUT2)和 3.3V(VOUT1)的排针,可以用来为外部设备提供电源或者从外部引入电源。这在很多时候是非常有用的,有时候你突然要一个 3.3V 的电源,但找半天就是没这样的电源,而板子则可直接向外部提供 3.3V 电源,有了它,你就可以给外部设备提供 3.3V、5V 电源了。开发板的 USB 接口(USB)通过独立的 Mini USB 头引出,不和 USB 转串口(USB_232)共用,这样不但可以同时使用,还可以给系统提供更大的电流。
这几个部分的原理图如下:
图中的 Q1 和 Q2 外加几个电阻和一个二极管就构成了开发板的一键下载电路,此电路通过RST 和 DTR 信号来控制 BOOT0 和 RESET 信号,从而实现一键下载的功能。一键下载电路的具体实现过程:首先,mcuisp 控制 DTR 输出低电平,则 DTR_N 输出高,然后 RTS 置高,则 RTS_N 输出低,这样 Q2 导通了,BOOT0 被拉高,即实现设置 BOOT0 为 1,同时 Q1 也会导通,STM32 的复位脚被拉低,实现复位。然后,延时 100ms 后,mcuisp 控制DTR 为高电平,则 DTR_N 输出低电平,RTS 维持高电平,则 RTS_N 继续为低电平,此时 STM32的复位引脚,由于 Q1 不再导通,变为高电平,STM32 结束复位,但是 BOOT0 还是维持为 1,从而进入 ISP 模式,接着 mcuisp 就可以开始连接 STM32,下载代码了,从而实现一键下载。另外,此部分还有一个开关 K1,用来控制整个系统的供电,如果断开则整个系统的 3.3V部分都将断电。而 5V 部分的电源还是开启的。图中 F1 为可恢复保险丝,用于保护 USB。图中的 D4 和D5 这两个 TVS 管,用于保护开发板,防止外部高压脉冲/静电损坏开发板上的元器件。