完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 正点原子运营官 于 2020-4-7 12:06 编辑
1)实验平台:正点原子STM32mini 开发板 2)摘自《正点原子STM32 不完全手册(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子 第二章 实验平台硬件资源详解 本章,我们将节将向大家详细介绍 ALIENTEK MiniSTM32 开发板各部分的硬件原理图, 让大家对该开发板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为 后面的学习做好准备。 本章将分为如下两节: 2.1,开发板原理图详解; 2.2,开发板使用注意事项; 2.3,STM32 学习方法; 2.1 开发板原理图详解 2.1.1 MCU ALIENTEK MiniSTM32 V3.0 版开发板选择的是 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 部 分的原理图如图 2.1.1.1(因为原理图比较大,缩小下来可能有点看不清,请大家打开开发板光 盘的原理图进行查看)所示: 图 2.1.1.1 MCU 部分原理图 上图中中上部的 BOOT1 用于设置 STM32 的启动方式,其对应启动模式如下表所示: 表 2.1.1.1 BOOT0、BOOT1 启动模式表 按照表 2.1.1.1,一般情况下(即标准的 ISP 下载步骤)如果我们想用用串口下载代码,则必须先配置 BOOT0 为 1,BOOT1 为 0,然后按复位键,最后再通过程序下载代码,下载完以 后又需要将 BOOT0 设置为 GND,以便每次复位后都可以运行用户代码。可以看到,这个标准 的 ISP 步骤还是很繁琐的,跳线帽跳来跳去,还要手动复位,所以 ALIENTEK 为 STM32 的串 口下载专门设计了一键下载电路,通过串口的 DTR 和 RTS 信号,来自动控制 RST(复位)和 BOOT0,因此不需要用户来手动切换状态,直接串口下载软件自动控制,可以非常方便的下载 代码,这是其他开发板所不具备的。 P3 和 P1 分别用于 PORTA 和 PORTB 的 IO 口引出,其中 P1 有部分用于 PORTC 口的引出。 PORTA 和 PORTB 都是按顺序排列的,这样设计的目的是为了让大家更方便地与外部设备连接。 P2 连接了 DS18B20 的数据口以及红外传感器的数据线,它们分别对应着 PA0 和 PA1,只 需要通过跳线帽将 P2 和 P3 连接起来就可以使用了。这里不直接连在一起的原因有二:1,防 止红外传感器和 DS18B20 对这两个 IO 口作为其他功能使用的时候的影响;2,DS18B20 和红 外传感器还可以用来给其他板子提供输入,等于我们的板子为别的板子提供了红外接口和温度 传感器,在调试的时候,还是蛮有用的。 P4 口连接了 CH340G 的串口输出,对应着 STM32 的串口 1(PA9/PA10),在使用的时候, 也是通过跳线帽将这两处连接起来。这样设计有两个好处:1,使得 PA9 和 PA10 用作其他用途 使用的时候(比如串口 1 连接其他串口设备),不受到 CH340G 的影响。2,USB 转串口可以用 作他用,并不仅限这个板上的 STM32 使用,也可以连接到其他板子上,这样 ALIENEK MiniSTM32 开发板就相当于一个 USB 转 TTL 串口。 P5 口是另外一组 IO 引出排针,将 PORTC 和 PORTD 等的剩余 IO 口从这里引出。在此部 分原理图中,我们还可以看到 STM32F103RCT6 的各个 IO 口与外设的连接关系,这些将在后 面给大家介绍。 这里 STM32 的 VBAT 采用 CR1220 纽扣电池和 VCC3.3 混合供电的方式,在有外部电源 (VCC3.3)的时候,CR1220 不给 VBAT 供电,而在外部电源断开的时候,则由 CR1220 给 VBAT 供电。这样,VBAT 总是有电的,以保证 RTC 的走时以及后备寄存器的内容不丢失。 该部分还有 JTAG,JTAG 部分电路如下图: 图 2.1.1.2 JTAG 原理图 这里采用的是标准的 JTAG 接法,但是 STM32 还有 SWD 接口,SWD 只需要最少 2 跟线 (SWCLK 和 SWDIO)就可以下载并调试代码了,这同我们使用串口下载代码差不多,而且速 度更快,能调试。所以建议大家在设计产品的时候,可以留出 SWD 来下载调试代码,而摒弃 JTAG。STM32 的 SWD 接口与 JTAG 是共用的,只要接上 JTAG,你就可以使用 SWD 模式了 (其实 SWD 并不需要 JTAG 这么多线),JLINK V8/JLINK V7/ULINK2 以及 ST LINK 等都支持 SWD。这里,我们推荐使用 SWD 模式,不推荐 JTAG 模式。 2.1.2 EEPROM ALIENTEK MiniSTM32 开发板自带了 24C02 这颗 EEPROM 芯片,该芯片的容量为 2Kbit, 也就是 256 个字节,对于我们普通应用来说是足够了的。你也可以选择换大的芯片,因为在原 理上是兼容 24C02~24C512 全系列的 EEPROM 芯片的。其原理图如下: 图 2.1.2.1 EEPROM 原理图 这里我们把 A0~A2 均接地,对 24C02 来说也就是把地址位设置成了 0 了,写程序的时候 要注意这点。IIC_SCL 接在 MCU 的 PC12 上,IIC_SDA 接在 MCU 的 PC11 上,这里我们并没 有接到 STM32 内部的 IIC 上,因为 STM32 的硬件 IIC 十分不好用,而且不稳定!如果你想在 开发板上使用硬件 IIC,那么也是可以的,你只需要设置 PC11 和 PC12 为浮空输入,然后把 PB10 和 PB11(IIC2)或者 PB6 和 PB7(IIC1)通过飞线连接到 PC11 和 PC12 上就可以使用硬件 IIC 了。 2.1.3 温度传感器 温度传感器我们使用的是 DS18B20,其原理图如下: 图 2.1.3.1 温度传感器原理图 DS18B20 的数据脚(18B20_DQ)接 P2 的第一脚,并没有直接连接到 MCU,至于为什么, 前面已有介绍。要使用 18B20 的时候,我们用跳线帽把 PA0 和 P2-1 连接起来就可以了。 2.1.4 按键 ALIENTEK MiniSTM32 开发板总共有 3 个按键,其原理图如下: 图 2.1.4.1 按键输入原理图 KEY0 和 KEY1 用作普通按键输入,分别连接在 PC5 和 PA15 上,其中 PA15 和 JTDI 共用 了,所以,在使用 KEY0 和 KEY1 的时候,就不能使用 JTAG 来调试了,但是可以用 SWD 调 试,这点在使用的时候要注意。KEY0 和 KEY1 还和 PS/2 的 DAT 和 CLK 线共用。 WK_UP 按键连接到 PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外,还可 以用作 STM32 的唤醒输入。该按键是高电平触发的。由于 PA0 还是 DS18B20 的输入引脚,而 18B20 是有上拉电阻的,所以在使用 WK_UP 按键的时候,请一定要断开 PA0 和 DS18B20 的 跳线帽。 2.1.5 液晶显示模块 ALIENTEK MiniSTM32 开发板载有目前比较通用的液晶显示模块接口,还有其比较有特色 的兼容性接口,不仅支持 ALIENTEK 各种尺寸(2.4、2.8、3.5、4.3、7 寸等)的 TFTLCD,还 支持 OLED 显示器。同时,该接口支持电阻触摸屏以及电容触摸屏等不同类型的触摸屏接口, 其原理图如下: 图 2.1.5.1 液晶显示模块原理图 TFT_LCD 是一个通用的液晶模块接口。OLED 是一个给 OLED 显示模块供电的接口,它 和 TFT_LCD 拼接在一起。当使用 TFTLCD 时,我们接到 TFT_LCD 上(靠右插)就可以了, 而当我们使用 ALIENTEK 的 OLED 模块时,则接 OLED 排针做电源,同时会连接到 TFT_LCD 上(靠左插)的部分管脚,从而实现 OLED 与 MCU 的连接。ALIENTEK MiniSTM32 的 LCD 接口兼容 ALIENTEK 各种尺寸的 TFTLCD 模块,包括:2.4 寸(320*240,电阻屏)、2.8 寸(320*240, 电阻屏)、3.5 寸(480*320,电阻屏)、4.3 寸(800*480,电容屏)、7 寸(800*480,电容屏) 等,同时还兼容 ALIENTEK 的 0.96 寸 OLED 模块。 这些引脚与 MCU 的连接关系我们在这里就不一一列出了,大家可以从 MCU 的原理图上 找到。 2.1.6 红外接收头 ALIENTEK MiniSTM32 开发板载有红外接收传感器 HS0038,原理图如下: 2.1.6.1红外接收传感器 HS0038原理图 第二脚,也没有直接接在 MCU 的 IO 口上,目的也是防止 IO 口在 做其他功能使用的时候,收到红外信号的干扰。 2.1.7 PS/2 接口 ALIENTEK MiniSTM32 开发板载有 PS/2 接口,有了该接口,我们就可以用来连接外部标 准的 PS/2 鼠标键盘了,也就大大的扩展了开发板的输入。原理图如下: 图 2.1.7.1 PS/2 接口原理图 PS_CLK 和 PS_DAT 分别接 PA15 和 PC5,PS/2 的信号线是需要外部提供上拉电阻的,这 里 PS_CLK 与 JTCK 共用一个上拉电阻,而 PS_DAT 则需要使用 STM32 内部的上拉电阻了, 在使用的时候,需要注意,记得开启 PC5 的上拉电阻。 2.1.8 LED ALIENTEK MiniSTM32 开发板上总共有 3 个 LED,其原理图如下: 图 2.1.8.1 LED 原理图 其中 PWR 是开发板电源指示灯,为蓝色。LED0 和 LED1 分别接在 PA8 和 PD2 上,PA8 还可以通过 tiM1 的通道 1 的 PWM 输出来控制 DS0 的亮度。为了方便大家判断,我们选择了 DS0 为红色,DS1 为绿色的 LED 灯。 2.1.9 SD 卡 ALIENTEK MiniSTM32 开发板载有标准的 SD 卡接口(在开发板背面),有了这个接口, 我们就可以外扩大容量存储设备,可以用来记录数据。其原理图如下: 图 2.1.9.1 SD 卡接口原理图 SD 卡我们使用的是 SPI 模式通信,SD 卡的 SPI 接口连接到 STM32 的 SPI1 上,SD_CS 接 在 PA3 上,开发板上的 SPI1 总共由 3 个外设共用,他们分别是:SD 卡、NRF24L01 无线模块、 和 W25Q64,可以通过不同的片选信号来分时复用。 2.1.10 无线模块 ALIENTEK MiniSTM32 开发板板载了 NRF24L01 无线模块的接口。该接口用来连接 NRF24L01 等 2.4G 无线模块,从而实现开发板与其他设备的无线数据传输(注意:NRF24L01 不能和蓝牙/WIFI 连接)。NRF24L01 无线模块的最大传输速度可以达到 2Mbps,传输距离最大 可以到 30 米左右(空旷地,无干扰)。有了这个接口,我们就可以做无线通信,以及其他很多 的相关应用了。这部分原理图如下: 图 2.1.10.1 无线模块接口原理图 NRF_CE/NRF_CS/NRF_IRQ 连接在 STM32F103RCT6 的 PA4/PC4/PA1 上,而另外 3 个 SPI 信号则和 SPI FLASH 共用。 2.1.11 SPI FLASH ALIENTEK MiniSTM32 开发板载有 SPI FLASH 芯片 W25Q64,该芯片的容量为 8M 字节, 其原理图如下: 图 2.1.11.1 W25Q64 原理图 W25Q64 也是共用了 SPI1,F_CS 接在 PA2 上。至此,总共 SPI1 的三个器件都已介绍完毕, 他们的 CS 都接在不同的 IO 口上,所以在使用其中一个器件的时候,要记得禁止其他器件的 CS 脚,否则会有干扰。 2.1.12 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) 共用,这样不但可以同时使用,还可以给系统提供更大的电流。这几个部分的原理图如下: 图 2.1.12.1 USB 串口、USB、电源部分原理图 图中的 Q1 和 Q2 外加几个电阻和一个二极管就构成了开发板的一键下载电路,此电路通过 RST 和 DTR 信号来控制 BOOT0 和 RESET 信号,从而实现一键下载的功能。很多朋友问一键 下载的原理,这里和大家讲一下,先说一个前提:DTR_N 和 RTS_N 的输出和 DTR/RTS 的设 置是相反的。必须先记下这个前提。 一键下载电路的具体实现过程:首先,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 管,用于保护开发板,防止外部高压脉冲/静电损坏开发板上 的元器件,让大家用的更加放心。 2.2 开发板使用注意事项 为了让大家更好的使用 ALIENTEK MiniSTM32 开发板,我们在这里总结该开发板使用的 时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。 1, 开发板一般情况是由 USB_232 口供电,在第一次上电的时候由于 CH340G 在和电脑建 立连接的过程中,导致 DTR/RTS 信号不稳定,会引起 STM32 复位 2~5 次左右,这个现象是正常的,后续按复位键就不会出现这种问题了。 2, 虽说开发板有 500mA 自恢复保险丝,但是由于自恢复保险丝是慢动作器件,所以在给 外部供电的时候,还是请大家小心一点,不要超过这个限额,以免引起不必要的问题 3, SPI1 被多个 SPI 器件共用(SD 卡/无线模块/W25Q64),在使用的时候,必须保证同一 时刻只有 1 个 SPI 器件是被选中的(CS 为低),其他器件必须设置为非选中(CS 为高), 以免互相干扰。 4, JTAG 接口有几个信号(JTDO/JTRST/JTDI 等)和 LCD/KEY1 等共用了,所以在使用 的时候注意,一旦用到这些有冲突的引脚,就不能再用 JTAG 模式仿真/下载代码了, 必须使用 SWD 模式,所以我们极力推荐使用:SWD 模式。 5, 当你想使用某个 IO 口用作其他用处的时候,请先看看开发板的原理图,该 IO 口是否 有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干 扰,先确定无干扰,再使用这个 IO。比如 PA0 如果和 1820 的跳线帽连接上了,那么 WK_UP 按键就无法正常检测了,按键实验,也就没法做了。 6, 当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如还不行, 可以通过串口看看 LCD ID(按一次复位,输出一次)是否正常,再做进一步分析。 7, 当使用液晶模块(16 位模式)的时候,PB0~PB15 都被占用了,可以分时复用,但是 在写程序的时候要注意,这里还有连接到触摸屏的 PC0/PC1/PC2/PC3/PC13 均会存在这 样的问题,在使用的时候要格外注意,看是否会产生干扰。 至此,本手册的实验平台(ALIENTEK MiniSTM32 开发板)的硬件部分就介绍完了,了解 了整个硬件对我们后面的学习会有很大帮助,有助于理解后面的代码,在编写软件的时候,可 以事半功倍,希望大家细读!另外 ALIENTEK 开发板的其他资料及教程更新,都可以在技术论 坛 www.openedv.com 下载到,大家可以经常去这个论坛获取更新的信息。 2.3 STM32 学习方法 STM32 作为目前最热门的 ARM Cortex M3 处理器,正在被越来越多的公司选择使用。学 习 STM32 的朋友也越来越多,初学者,可能会认为 STM32 很难学,以前只学过 51,或者甚至 连 51 都没学过的,一看到 STM32 那么多寄存器,就懵了。其实,万事开头难,只要掌握了方 法,学好 STM32,还是非常简单的,这里我们总结学习 STM32 的几个要点: 1,一款实用的开发板。 这个是实验的基础,有时候软件仿真通过了,在板上并不一定能跑起来,而且有个开发板 在手,什么东西都可以直观的看到,效果不是仿真能比的。但开发板不宜多,多了的话连自己 都不知道该学哪个了,觉得这个也还可以,那个也不错,那就这个学半天,那个学半天,结果 学个四不像。倒不如从一而终,学完一个在学另外一个。 2,两本参考资料,即《STM32 参考手册》和《Cortex-M3 权威指南》。 《STM32 参考手册》是 ST 出的官方资料,有 STM32 的详细介绍,包括了 STM32 的各种 寄存器定义以及功能等,是学习 STM32 的必备资料之一。而《Cortex-M3 权威指南》则是对 《STM32 参考手册》的补充,后者一般认为使用 STM32 的人都对 CM3 有了较深的了解,所以 Cortex-M3 的很多东西它只是一笔带过,但前者对 Cortex-M3 有非常详细的说明,这样两者搭 配,你就基本上任何问题都能得到解决了。 3,掌握方法,勤学慎思。 STM32 不是妖魔鬼怪,不要畏难,STM32 的学习和普通单片机一样,基本方法就是: a) 掌握时钟树图(见《STM32 中文参考手册_V10 版》图 8)。ALIENTEK MiniSTM32 V3.0 开发板教程 24 STM32 不完全手册(HAL 库版) 任何单片机,必定是靠时钟驱动的,时钟就是单片机的动力,STM32 也不例外,通过时钟 树,我们可以知道,各种外设的时钟是怎么来的?有什么限制?从而理清思路,方便理解。 b) 多思考,多动手。 所谓熟能生巧,先要熟,才能巧。如何熟悉?这就要靠大家自己动手,多多练习了,光看/ 说,是没什么太多用的,很多人问我,STM32 这么多寄存器,如何记得啊?回答是:不需要全 部记住。我至今也就只记得 STM32 的 IO 口控制这几个寄存器,因为有规律可循,好记。其他 的一概不记得。学习 STM32,不是应试教育,不需要考试,不需要你倒背如流。你只需要知道 这些寄存器,在哪个地方,用到的时候,可以迅速查找到,就可以了。完全是可以翻书,可以 查资料的,可以抄袭的,不需要死记硬背。掌握学习的方法,远比掌握学习的内容重要的多。 熟悉了之后,就应该进一步思考,也就是所谓的巧了。我们提供了几十个例程,供大家学 习,跟着例程走,无非就是熟悉 STM32 的过程,只有进一步思考,才能更好的掌握 STM32, 也即所谓的举一反三。例程是死的,人是活的,所以,可以在例程的基础上,自由发挥,实现 更多的其他功能,并总结规律,为以后的学习/使用打下坚实的基础,如此,方能信手拈来。 所以,学习一定要自己动手,光看视频,光看文档,是不行的。举个简单的例子,你看视 频,教你如何煮饭,几分钟估计你就觉得学会了。实际上你可以自己测试下,是否真能煮好? 机会总是留给有准备的人,只有平时多做准备,才可能抓住机会。 只要以上三点做好了,学习 STM32 基本上就不会有什么太大问题了。如果遇到问题,可 以在我们的技术论坛:开源电子网:www.openedv.com 提问,论坛 STM32 板块已经有 2.4W 多 个主题,很多疑问已经有网友提过了,所以可以在论坛先搜索一下,很多时候,就可以直接找 到答案了。论坛是一个分享交流的好地方,是一个可以让大家互相学习,互相提高的平台,所 以有时间,可以多上去看看。 另外,很多 ST 官方发布的所有资料(芯片文档、用户手册、应用笔记、固件库、勘误手 册等),大家都可以在 www.stmcu.org 这个地方下载到。也可以经常关注下,ST 会将最新的资料都放到这个网址。 |
|
相关推荐
|
|
830 浏览 0 评论
6169 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2808 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
3099 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
33131 浏览 11 评论
73611 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 09:27 , Processed in 0.616370 second(s), Total 61, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号