第二章战舰STM32开发板实验平台硬件资源详解.pdf
-
资源ID:76198263
资源大小:2.45MB
全文页数:22页
- 资源格式: PDF
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
第二章战舰STM32开发板实验平台硬件资源详解.pdf
14 第二章实验平台硬件资源详解本章,我们将节将向大家详细介绍ALIENTEK战舰 STM32 开发板各部分的硬件原理图,让大家对该开发板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为后面的学习做好准备。本章将分为如下两节:1.1,开发板原理图详解;1.2,开发板使用注意事项;2.1 开发板原理图详解2.1.1 MCU ALIENTEK战舰STM32开发板选择的是STM32F103ZETT6作为MCU,该芯片是STM32F103 里面配置非常强大的了,它拥有的资源包括:64KB SRAM、512KB FLASH、2 个基本定时器、4 个通用定时器、2 个高级定时器、3 个 SPI、2 个 IIC、5 个串口、1 个 USB、1个 CAN、3 个 12 位 ADC、1 个 12 位 DAC、1 个 SDIO 接口、1 个 FSMC 接口以及 112 个通用IO 口。该芯片的配置十分强悍,并且还带外部总线(FSMC)可以用来外扩SRAM 和连接 LCD等,通过FSMC 驱动 LCD,可以显著提高LCD 的刷屏速度,更重要的是其价格,23 元左右的零售价,足以秒杀很多其他芯片了。所以我们选择了它作为我们的主芯片。MCU部分的原理图如图 2.1.1.1(请大家打开开发板光盘的原理图查看清晰版本)所示:ALIENTEK 战舰STM32 开发板15 图 2.1.1.1 MCU 部分原理图上图中 U5 为我们的主芯片:STM32F103ZET6。这里主要讲解一下3 个地方:1,后备区域供电脚VBAT 脚的供电采用CR1220 纽扣电池和VCC3.3 混合供电的方式,在有外部电源(VCC3.3)的时候,CR1220 不给 VBAT 供电,而在外部电源断开的时候,则由 CR1220给其供电。这样,VBA T 总是有电的,以保证RTC 的走时以及后备寄存器的内容不丢失。2,图中的R37 和 R38 用隔离 MCU 部分和外部的电源,这样的设计主要是考虑了后期维护,如果 3.3V 电源短路,可以断开这两个电阻,来确定是MCU 部分短路,还是外部短路,有助于生产和维修。当然大家在自己的设计上,这两个电阻是完全可以去掉的。3,图中 P7 是参考电压选择端口。我们开发板默认是接板载的3.3V 作为参考电压,如果大家想用自己的参考电压,则把你的参考电压接入VREF-和 VREF+即可。ALIENTEK 战舰STM32 开发板16 2.1.2 引出 IO 口ALIENTEK战舰 STM32 开发板引出了STM32F103ZET6 的所有 IO 口,如图2.1.2.1 所示:图 2.1.2.1 引出 IO 口图中 P4 和 P5 为 MCU 主 IO 引出口,这两组排针每组引出IO 数位 54 个,共 108 个 IO 从这里引出。STM32F103ZET6 总共有 112 个 IO,除去 RTC 晶振占用的2 个,还剩 110 个,这两组 IO 引出除 PA9 和 PA10 以外的所有IO 口。大家可以通过这两组IO 引出口,方便的扩展自己的外设。(PA9 和 PA10 通过 P6 引出)2.1.3 USB 串口/串口 1 选择接口ALIENTEK战舰 STM32 开发板板载的USB 串口和 STM32F103ZET6 的串口是通过P6 连接起来的,如图2.1.3.1 所示:、图 2.3.1.1 USB 串口/串口 1 选择接口图中 TXD/RXD是相对 CH340G 来说的,也就是 USB 串口的发送和接受脚。而 USART1_RXALIENTEK 战舰STM32 开发板17 和 USART1_TX 则是相对于STM32F103ZET6 来说的。这样,通过对接,就可以实现USB 串口和 STM32F103ZET6 的串口通信了。同时,P6是 PA9 和 PA10 的引出口。这样设计的好处就是使用上非常灵活。比如需要用到外部TTL 串口和 STM32 通信的时候,只需要拔了跳线帽,通过杜邦线连接外部TTL 串口,就可以实现和外部设备的串口通信了;又比如我有个板子需要和电脑通信,但是电脑没有串口,那么你就可以使用开发板的RXD 和 TXD来连接你的设备,把我们的开发板当成USB 串口用了。2.1.4 JTAG/SWD ALIENTEK战舰 STM32 开发板板载的标准20 针 JTAG/SWD 接口电路如图2.1.4.1 所示:图 2.1.4.1 JTAG/SWD 接口这里,我们采用的是标准的JTAG 接法,但是 STM32 还有 SWD 接口,SWD 只需要最少2跟线(SWCLK 和 SWDIO)就可以下载并调试代码了,这同我们使用串口下载代码差不多,而且速度非常快,能调试。所以建议大家在设计产品的时候,可以留出SWD 来下载调试代码,而摒弃 JTAG。STM32 的 SWD 接口与 JTAG 是共用的,只要接上JTAG,你就可以使用SWD模式了(其实并不需要JTAG 这么多线),当然,你的调试器必须支持SWD 模式,JLINK V7/V8、ULINK2和 ST LINK 等都支持SWD 调试。2.1.5 SRAM ALIENTEK战舰 STM32 开发板外扩了1M 字节的 SRAM 芯片,如图2.1.5.1 所示:ALIENTEK 战舰STM32 开发板18 图 2.1.5.1 外扩 SRAM 图中 U6 为外扩的 SRAM 芯片,型号为:IS62WV51216,容量为 1M 字节,该芯片挂在STM32的 FSMC 上。这样大大扩展了STM32 的内存(芯片本身只有64K 字节),从而在需要大内存的场合,战舰STM32 开发板也可以胜任。2.1.6 LCD/OLED模块接口ALIENTEK战舰 STM32 开发板板载的LCD/OLED 模块接口电路如图2.1.6.1 所示:图 2.1.6.1 LCD/OLED模块接口图中 TFT_LCD 是一个通用的液晶模块接口,而OLED 是一个给OLED 显示模块供电的接口,它和TFT_LCD 拼接在一起,组合成一个组合接口。当使用2.4 寸/2.8 寸/3.5 寸的 LCD 时,我们接到TFT_LCD 上就可以了(靠右插),而当我们使用ALIENTEK 的 OLED 模块时,则接ALIENTEK 战舰STM32 开发板19 OLED 排针做电源,同时会连接到TFT_LCD 上的部分管脚(靠左插),从而实现 OLED 与 MCU的连接。TFTLCD 模块也是接在STM32F103ZET6 的 FSMC 上的,相比战舰STM32 开发板,这样可以显著提高LCD 刷屏速度。图中的T_MISO/T_MOSI/T_PEN/T_CS/T_CS用来实现对液晶触摸屏的控制。LCD_BL则控制 LCD 的背光。液晶复位信号RESET 则是直接连接在开发板的复位按钮上,和MCU 共用一个复位电路。2.1.7 复位电路ALIENTEK战舰 STM32 开发板的复位电路如图2.1.7.1 所示:图 2.1.7.1 复位电路因为 STM32 是低电平复位的,所以我们设计的电路也是低电平复位的,这里的 R32 和 C51构成了上电复位电路。同时,开发板把TFT_LCD 的复位引脚也接在RESET 上,这样这个复位按钮不仅可以用来复位MCU,还可以复位LCD。2.1.8 启动模式设置接口ALIENTEK战舰 STM32 开发板的启动模式设置端口电路如图2.8.1.1 所示:图 2.8.1.1 启动模式设置接口上图的 BOOT0 和 BOOT1 用于设置STM32 的启动方式,其对应启动模式如表2.1.8.1 所示:表 2.8.1.1 BOOT0、BOOT1 启动模式表按照表 2.8.1.1,一般情况下如果我们想用用串口下载代码,则必须配置BOOT0 为 1,BOOT1为 0,而如果想让STM32 一按复位键就开始跑代码,则需要配置BOOT0 为 0,BOOT1 随便设ALIENTEK 战舰STM32 开发板20 置都可以。这里ALIENTEK战舰 STM32 开发板专门设计了一键下载电路,通过串口的DTR和 RTS 信号,来自动配置BOOT0 和 RST 信号,因此不需要用户来手动切换他们的状态,直接串口下载软件自动控制,可以非常方便的下载代码。2.1.9 RS232 串口ALIENTEK战舰 STM32 开发板板载的RS232 串口电路,如图2.1.9.1 所示:图 2.1.9.1 RS232 串口因为 RS232 电平不能直接连接到STM32,所以需要一个电平转换芯片。这里我们选择的是 SP3232(也可以用MAX3232)来做电平转接,同时图中的P9 用来实现RS232/RS485 的选择,以满足不同实验的需要。图中USART2_TX/USART2_RX连接在MCU的串口2 上(PA2/PA3),所以这里的RS232/RS485 都是通过串口2 来实现的。图中RS485_TX 和 RS485_RX 信号接在SP3485 的 DI和 RO 信号上。因为 P9 的存在,其实还带来另外一个好处,就是我们可以把开发板变成一个RS232 电平转换器,或者RS485 电平转换器,比如你买的核心板,可能没有板载RS485/RS232 接口,通过连接战舰STM32 开发板的P9 端口,就可以让你的核心板拥有RS232/RS485 的功能。2.1.10 RS485 接口ALIENTEK战舰 STM32 开发板板载的RS485 接口电路如图2.1.10.1 所示:图 2.1.10.1 RS485 接口RS485 电平也不能直接连接到STM32,同样需要电平转换芯片。这里我们使用SP3485 来ALIENTEK 战舰STM32 开发板21 做 485 电平转换,其中R45 为匹配电阻。RS485_RX/RS485_TX连接在P9 上面,通过P9 跳线来选择是否连接在MCU上面,RS485_RE 则是直接连接在MCU 的 IO 口(PG9)上的,该信号用来控制SP3485 的工作模式(高电平为发送模式,低电平为接收模式)。2.1.11 CAN/USB 接口ALIENTEK战舰STM32 开发板板载的CAN接口电路以及STM32 USB 接口电路如图2.1.11.1 所示:图 2.1.11.1 CAN/USB 接口CAN 总线电平也不能直接连接到STM32,同样需要电平转换芯片。这里我们使用TJA1050来做 CAN 电平转换,其中R48 为匹配电阻。USB_D+/USB_D-连接在 MCU 的 USB 口(PA12/PA11)上,同时,因为STM32 的 USB 和CAN 共用这组信号,所以我们通过P13 来选择使用USB 还是 CAN。图中的 USB 端子还具有供电功能,VUSB 为开发板的USB 供电口,通过这个USB 口,就可以给整个开发板供电了。2.1.12 EEPROM ALIENTEK战舰 STM32 开发板板载的EEPROM 电路如图2.1.12.1 所示:图 2.1.12.1 EEPROM ALIENTEK 战舰STM32 开发板22 EEPROM 芯片我们使用的是24C02,该芯片的容量为2Kb,也就是 256 个字节,对于我们普通应用来说是足够了的。当然,你也可以选择换大的芯片,因为我们的电路在原理上是兼容24C0224C512 全系列 EEPROM 芯片的。这里我们把A0A2 均接地,对24C02 来说也就是把地址位设置成了0 了,写程序的时候要注意这点。IIC_SCL 接在 MCU 的 PB10 上,IIC_SDA 接在 MCU 的 PB11 上,这里我们虽然接到 STM32 的硬件 IIC 上,但是我们并不提倡使用硬件IIC,因为 STM32 的 IIC 是鸡肋!请谨慎使用。IIC_SCL/IIC_SDA总线上总共挂了3 个器件:24C02、ADXL345和 RDA5820,后续我们将向大家介绍另外两个器件。2.1.13 游戏手柄接口ALIENTEK战舰 STM32 开发板板载的游戏手柄接口电路如图2.1.13.1 所示:图 2.1.13.1 游戏手柄接口因为很多FC 游戏机(俗称红白机/小霸王游戏机)的手柄都是9 针接口,刚好可以插到9 针的串口公头里面。这里我们使用一个DB9 公头来做FC 游戏手柄接口。JOY_CLK/JOY_LAT/JOY_DAT 分别连接在MCU 的 PC12/PC8/PC9 上,这 3 个信号和SDIO的 SCK/D0/D1 共用,所以他们不能同时使用!这里特别提醒:因为这个DB9 的 2,3 脚直接接在 STM32 的 IO 口,所以,这个口一定不要接RS232 串口!否则可能直接把STM32F103ZET6给烧了。2.1.14 SPI FLASH ALIENTEK战舰 STM32 开发板板载的SPI FLASH 电路如图2.1.14.1 所示:图 2.1.14.1 SPI FLASH 芯片ALIENTEK 战舰STM32 开发板23 SPI FLASH 芯片型号为W25Q64,该芯片的容量为64Mb,也就是8M 字节。该芯片和SD卡、NRF24L01 共用一个 SPI(SPI2),通过片选来选择使用某个器件,在使用其中一个器件的时候,请务必禁止另外两个器件的片选信号。图中 F_CS连接在 MCU 的 PB12 上,SPI2_SCK/SPI2_MOSI/SPI2_MISO则分别连接在MCU的 PB13/PB15/PB14 上。2.1.15 3D 加速度传感器ALIENTEK战舰 STM32 开发板板载的3D 加速度传感器电路如图2.1.15.1 所示:图 2.1.15.1 3D 加速度传感器3D 加速度传感器芯片型号为ADXL345,该芯片具有分辨率高(13 位),测量范围大(16g)的特点,支持多种接口,这里我们使用IIC 接口来访问。同 24C02 一样,该芯片的IIC_SCL 和 IIC_SDA 同样是挂在PB10 和 PB11 上,他们共享一个 IIC 总线。2.1.16 温湿度传感器接口ALIENTEK战舰 STM32 开发板板载的温湿度传感器接口电路如图2.1.16.1 所示:图 2.1.16.1 温湿度传感器接口该接口支持DS18B20/DS1820/DHT11等单总线数字温湿度传感器。1WIRE_DQ是传感器的数据线,该信号连接在MCU 的 PG11 上。2.1.17 红外接收头ALIENTEK战舰 STM32 开发板板载的红外接收头电路如图2.1.17.1 所示:ALIENTEK 战舰STM32 开发板24 图 2.1.17.1 红外接收头HS0038 是一个通用的红外接收头,几乎可以接收市面上所有红外遥控器的信号,有了它,就可以用红外遥控器来控制开发板了。REMOTE_IN为红外接收头的输出信号,该信号连接在MCU 的 PB9 上。2.1.18 无线模块接口ALIENTEK战舰 STM32 开发板板载的无线模块接口电路如图2.1.18.1 所示:图 2.1.18.1 无线模块接口该接口用来连接NRF24L01 等 2.4G 无线模块,从而实现开发板与其他设备的无线数据传输(注意:NRF24L01 不能和蓝牙/WIFI 连接)。NRF24L01 无线模块的最大传输速度可以达到2Mbps,传输距离最大可以到30 米左右(空旷地,无干扰)。NRF_CE/NRF_CS/NRF_IRQ连接在 MCU 的 PG6/PG7/PG8 上,而另外3 个 SPI 信号则和SPI FLASH 共用。2.1.19 LED ALIENTEK战舰 STM32 开发板板载总共有3 个 LED,其原理图如图2.1.19.1 所示:ALIENTEK 战舰STM32 开发板25 图 2.1.19.1 LED 其中 PWR 是系统电源指示灯,为蓝色。LED0 和 LED1 分别接在PB5 和 PE5 上。为了方便大家判断,我们选择了DS0 为红色的LED,DS1 为绿色的LED。2.1.20 按键ALIENTEK战舰 STM32 开发板板载总共有4 个输入按键,其原理图如图2.1.20.1 所示:图 2.1.20.1 输入按键KEY0、KEY1 和 KEY2 用作普通按键输入,分别连接在PE4、PE3 和 PE2 上,这里并没有使用外部上拉电阻,但是STM32 的 IO 作为输入的时候,可以设置上下拉电阻,所以我们使用STM32 的内部上拉电阻来为按键提供上拉。WK_UP 按键连接到PA0(STM32 的 WKUP 引脚),它除了可以用作普通输入按键外,还可以用作 STM32 的唤醒输入。这个按键是高电平触发的。2.1.21 TPAD 电容触摸按键ALIENTEK战舰 STM32 开发板板载了一个电容触摸按键,其原理图如图2.1.21.1 所示:ALIENTEK 战舰STM32 开发板26 图 2.1.21.1 电容触摸按键图中 5.1M 是电容充电电阻,TPAD 并没有直接连接在MCU 上,而是连接在多功能端口(P14)上面,通过跳线帽来选择是否连接到STM32。多功能端口,我们将在2.1.25 节介绍。电容触摸按键的原理我们将在后续的实战篇里面介绍。2.1.22 PS/2 接口ALIENTEK战舰 STM32 开发板板载了一个PS/2 接口,其原理图如图2.1.22.1 所示:图 2.1.22.1 PS/2 接口有了该接口,我们就可以用来连接外部标准的PS/2鼠标或键盘等设备了,也就大大的扩展了 ALIENTEK战舰 STM32 开发板的输入。PS_CLK 和 PS_DAT 分别接 PC11 和 PC10,PS/2 的信号线的上拉电阻我们还是选择STM32 内部的上拉电阻来实现。注意PS/2 接口和SDIO_D2和 SDIO_D3 公用了 IO 口,所以他们不能同时工作。2.1.23 OLED/摄像头模块接口ALIENTEK战舰 STM32 开发板板载了一个OLED/摄像头模块接口,其原理图如图2.1.23.1所示:ALIENTEK 战舰STM32 开发板27 图 2.1.23.1 OLED/摄像头模块接口图中 P8 是接口可以用来连接ALIENTEK OLED 模块或者ALIENTEK 摄像头模块。如果是 OLED 模块,则 FIFO_WEN 和 OV_VSYNC不需要接(在板上靠左插即可),如果是摄像头模块,则需要用到全部引脚。其中,OV_SCL/OV_SDA/FIFO_WRST/FIFO_RRST/FIFO_OE这 5 个信号是分别连接在MCU 的 PD3/PG13/PD6/PG14/PG15 上面,OV_D0OV_D7则连接在PC07 上面(放在连续的IO 上,可以提高读写效率),FIFO_RCLK/FIFO_WEN/OV_VSYNC这 3 个信号是分别连接在MCU 的 PB4/PB3/PA8 上面。其中PB3 和 PB4 又是 JTAG 的 JTRST/JTDO 信号,所以在使用OV7670 的时候,不要用JTAG 仿真,要选择SWD 模式(所以我们建议大家直接用SWD 模式来连接我们的开发板,这样所有的实验都可以仿真!)。2.1.24 有源蜂鸣器ALIENTEK战舰 STM32 开发板板载了一个有源蜂鸣器,其原理图如图2.1.24.1 所示:图 2.1.24.1 有源蜂鸣器有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而如果是无源蜂鸣器,则需要外加一定频率(25Khz)的驱动信号,才会发声。这里我们选择使用有源蜂鸣器,方便大家使用。ALIENTEK 战舰STM32 开发板28 图中 Q1 是用来扩流,R60 则是一个下拉电阻,避免 MCU 复位的时候,蜂鸣器可能发声的现象。BEEP 信号直接连接在MCU 的 PB8 上面,PB8 可以做 PWM 输出,所以大家如果想玩高级点(如:控制蜂鸣器“唱歌”),就可以使用PWM 来控制蜂鸣器。2.1.25 SD 卡/以太网模块接口ALIENTEK战舰 STM32 开发板板载了一个SD 卡(大卡/相机卡)接口,但是并没有板载以太网,不过我们板载了以太网模块接口,通过外部模块扩展以太网,其原理图如图2.1.25.1所示:图 2.1.25.1 SD 卡/以太网接口图中 SD_CARD 为 SD 卡接口,该接口在开发板的底面,这也是战舰STM32 开发板底面唯一的元器件。在开发板的PCB 上 P10/P11/P12 组合在一起,构成一个SD 卡接口方式选择接口,可以用来设置 SD 卡是工作在SDIO 模式,还是工作在SPI 模式。同时P12 兼具以太网模块接口功能(因为 ALIENTEK网络模块接口和P12 接口一模一样,我们只需要拿一组排线把他们对接即可实现以太网与开发板的连接),这里需要注意以太网模块除SD_CS 信号外,其余信号都是使用无线模块的。使用以太网模块的时候,SD 卡就只能工作在SDIO 模式了,同时无线模块也将无法使用。ALIENTEK 战舰STM32 开发板29 SD_DT0SD_DT3 分别连接在PC8PC11 上面,他们和游戏手柄和PS/2 接口信号共用IO,所以在使用SDIO 模式的时候,手柄和PS/2 设备将不能使用。SD_SCK 和 SD_CMD 则分别连接在 PC12 和 PD2 上,而 SD_CS 和 SD_CMD 一样,也是连接在PD2 上的,而SD_CS 则是网络模块的INT 信号,所以当不适用INT 信号的时候,网络模块和SD 卡可以同时工作,而当要用 INT 的时候,SD 卡将不能和网络模块一起使用,这点大家在使用上要稍加注意。P12 的其余信号都是和无线模块共用,前面已经有介绍了,这里我们就不再介绍了。2.1.26 多功能端口ALIENTEK战舰 STM32 开发板板载的多功能端口,是由 P14 和 P3构成的一个6PIN 端口,其原理图如图2.1.26.1 所示:图 2.1.26.1 多功能端口从上图,大家可能还看不出这个多功能端口的全部功能,别担心,下面我们会详细介绍。首先介绍左侧的P14,其中 TPAD 为电容触摸按键信号,连接在电容触摸按键上。STM_ADC和 STM_DAC则分别连接在PA1 和 PA4 上,用于ADC 采集或 DAC 输出。当需要电容触摸按键的时候,我们通过跳线帽短接TPAD 和 STM_ADC,就可以实现电容触摸按键(利用定时器的输入捕获)。STM_DAC 信号则既可以用作DAC 输出,也可以用作ADC 输入,因为STM32的该管脚同时具有这两个复用功能。我们再来看看P3,PWM_DAC连接在 MCU 的 PB6,是定时器4 的通道 1 输出,后面跟一个二阶 RC 滤波电路,其截止频率为33.8Khz。经过这个滤波电路,MCU 输出的方波就变为直流信号了。PWM_AUDIO是一个音频输入通道,它连接到74HC4052,再进入到TDA1308 进行输出缓冲,最终输出到耳机。单独介绍完了P3 和 P14,我们再来看看他们组合在一起的多功能端口,如图 2.1.26.2 所示:图 2.1.26.2 组合后的多功能端口ALIENTEK 战舰STM32 开发板30 图中 AIN 是 PWM_AUDIO,PDC 是滤波后的PWM_DAC信号。下面我们来看看通过1 个跳线帽,这个多功能接口可以实现哪些功能。当不用跳线帽的时候:1,AIN 和 GND 组成一个音频输入通道。2,PDC 和 GND 组成一个 PWM_DAC输出;3,DAC 和 GND 组成一个DAC 输出/ADC 输入(因为DAC 脚也刚好也可以做 ADC 输入);4,ADC 和 GND 组成一组ADC 输入;5,TPAD 和 GND 组成一个触摸按键接口,可以连接其他板子实现触摸按键。当使用 1 个跳线帽的时候:1,AIN 和 PDC 组成一个MCU 的音频输出通道,实现 PWM DAC播放音乐。2,AIN 和 DAC 同样可以组成一个MCU 的音频输出通道,也可以用来播放音乐。3,DAC 和 ADC 组成一个自输出测试,用MCU 的 ADC 来测试 MCU 的 DAC 输出。4,PDC和 ADC,组成另外一个子输出测试,用MCU 的 ADC 来测试 MCU 的 PWM DAC 输出。5,ADC 和 TPAD,组成一个触摸按键输入通道,实现MCU 的触摸按键功能。从上面的分析,可以看出,这个多功能端口可以实现10 个功能,所以,只要设计合理,1+1是大于 2 的。2.1.27 音频选择ALIENTEK战舰 STM32 开发板板载了多个音频输出设备,所以需要一个音频选择电路,来实现不同音频的切换,这里我们使用74HC4052 模拟开关来实现音频切换,其原理图如图2.1.27.1 所示:图 2.1.27.1 音频选择电路74HC4052 是一个双4 路模拟开关,工作电压可以低至2V,这里我们选择该模拟开关来做音频切换。图中 MP3_LEFT/MP3_RIGHT连接在 VS1053 的音频输出端。RADIO_L和 RADIO_R是RDA5820 的音频输出端。A_OUTR 和 A_OUTL 连接到 TDA1308 的输入端,最终输出到耳机。而 OUTL 和 OUTR 则还连接到了RDA5820 的音频输入端,所以开发板的所有声音,其实都可以通过 FM 发射出去,大家可以在收音机里面听到来自开发板的声音。PWM_AUDIO则是来自外部音源输入(我们提供的USB 声卡实验,就需要用到这个通道)。ASEL_A 和 ASEL_B 直接连接在 MCU 的 PD7 和 PB7 上面,用来控制74HC4052 的通道选择。ALIENTEK 战舰STM32 开发板31 2.1.28 FM 收发ALIENTEK战舰 STM32 开发板板载了一颗FM 收发芯片RDA5820,其原理图如图2.1.28.1所示:图 2.1.28.1 FM 收发电路RDA5820 是一颗立体声FM 收发芯片,该芯片通过IIC 接口控制,可以实现65108MHz的全球 FM 频段接收,同时可以作为FM 发射。RDA5820 接收与发送天线共用,仅需要极少的外围器件即可正常工作。图中 OUTL 和 OUTR 为 FM 发射的音频输入信号,RADIO_L和 RADIO_R 是 FM 接收的音频输出信号,连接到74HC4052。同 24C02 一样,该芯片的IIC_SCL 和 IIC_SDA 同样是挂在PB10 和 PB11 上,他们共享一个IIC 总线。2.1.29 音频输出ALIENTEK战舰 STM32 开发板板载的音频输出电路,其原理图如图2.1.29.1 所示:图 2.1.29.1 音频输出电路图中 PHONE 为立体声音频输出插座,可以直接插3.5mm 的耳机。A_OUTR和 A_OUTL是来自 74HC4052 的音频输出信号,直接输入到TDA1308。图中的 TDA1308 是 AB 类的数字音频(CD)专用耳机功放IC。其具有低电压、低失真、高速率、强输出等优异的性能是以往的TDA2822、TDA7050、LM386等“经典”功放望尘莫及的。同时战舰STM32 开发板搭载了效果一流的VS1053 编解码芯片,所以,战舰STM32 开发ALIENTEK 战舰STM32 开发板32 板播放 MP3 的音质是非常不错的,胜过市面上很多中低端MP3 的音质。2.1.30 音频编解码ALIENTEK战舰 STM32 开发板板载VS1053 音频编解码芯片,其原理图如图2.1.30.1 所示:2.1.30.1 音频编解码芯片VS1053 是一颗单片OGG/MP3/AAC/WMA/MIDI音频解码器,通过plugin 可以实现FLAC的解码,同时该芯片可以支持IMA ADPCM编码,通过plugin 可以实现OGG 编码。相比它的前辈:VS1003,VS1053 性能提升了不少,比如支持OGG 编解码,支持FLAC 解码,同时音质上也有比较大的提升,还支持空间效果设置。VS1053 还支持 IIS 输出,我们在开发板上引出了 IIS 接口(P1),通过这个接口,大家可以在外部接自己的DAC,以达到更好的音质。图中 P2 是 MIC 录音选择接口,这个接口主要在大家选择使用LINE_IN录音的时候,需要用到,断开P2,就可以排除MIC 对 LINE_IN录音的干扰,从而达到更好的效果。默认我们是用跳线帽短接P2的。图中 MP3_LEFT/MP3_RIGHT这两个信号是连接到74HC4052 的,通过模拟开关选择是否输出 MP3 音源。TP1/TP2/TP3 是 3 个测试点,用于测试。VS1053 通过 7 根线连接到MCU,VS_MISO/VS_MOSI/VS_SCK/VS_XCS/VS_XDCS/VS_DREQ/VS_RST这7 根线分别连接到MCU 的 PA6/PA7/PA5/PF7/PF6/PC13/PE6 上,VS1053 通过 STM32 的 SPI1 访问。2.1.31 电源ALIENTEK战舰 STM32 开发板板载的电源供电部分,其原理图如图2.1.31.1 所示:ALIENTEK 战舰STM32 开发板33 图 2.1.31.1 电源图中,总共有 3个稳压芯片:U16/U17/U19,DC_IN 用于外部直流电源输入,经过 U17 DC-DC芯片转换为5V 电源输出,其中 D4 是防反接二极管,避免外部直流电源极性搞错的时候,烧坏开发板。K1 为开发板的总电源开关,F1 为 500ma 自恢复保险丝,用于保护电源。U16 为 3.3V稳压芯片,给开发板提供3.3V 电源,而U19 则是 1.8V 稳压芯片,供VS1053 的 CVDD 使用。这里还有USB 供电部分没有列出来,其中VUSB 就是来自USB 供电部分,我们将在相应章节进行介绍。2.1.32 电源输入输出接口ALIENTEK战舰 STM32 开发板板载了两组简单电源输入输出接口,其原理图如图2.1.32.1所示:图 2.1.32.1 电源图中,VOUT1 和 VOUT2 分别是 3.3V 和 5V 的电源输入输出接口,有了这 2 组接口,我们可以通过开发板给外部提供3.3V 和 5V 电源了,虽然功率不大(最大500ma),但是一般情况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端ALIENTEK 战舰STM32 开发板34 口,也可以用来由外部给开发板供电。2.1.33 USB 串口ALIENTEK战舰 STM32 开发板板载了一个USB 串口,其原理图如图2.1.33.1 所示:图 2.1.33.1 USB 串口USB 转串口,我们选择的是CH340G,我们的 Mini 板之前用的是PL2303HX(后面会改为CH340G),但是问题比较多,这次我们直接使用南京沁恒的CH340G,稳定性经测试还不错,所以还是多支持下国产。图中 Q2 和 Q3 的组合构成了我们开发板的一键下载电路,只需要在mcuisp 软件设置:DTR的低电平复位,RTS 高电平进BootLoader。就可以一键下载代码了,而不需要手动设置B0 和按复位了。其中,RESET 是开发板的复位信号,BOOT0则是启动模式的B0 信号。USB_232是一个 MiniUSB座,提供 CH340G 和电脑通信的接口,同时可以给开发板供电,VUSB 就是来自电脑 USB 的电源,USB_232 是本开发板的主要供电口。2.2 开发板使用注意事项为了让大家更好的使用ALIENTEK战舰 STM32 开发板,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。1,开发板一般情况是由USB_232 口供电,在第一次上电的时候由于CH340G 在和电脑建立连接的过程中,导致DTR/RTS 信号不稳定,会引起STM32 复位 23 次左右,这个现象是正常的,后续按复位键就不会出现这种问题了。2,虽说开发板有500mA 自恢复保险丝,但是由于自恢复保险丝是慢动作器件,所以在给外部供电的时候,还是请大家小心一点,不要超过这个限额,以免引起不必要的问题3,SPI2 被多个 SPI 器件共用(SD 卡/无线模块/网络模块/W25Q64),在使用的时候,必须保证同一时刻只有1 个 SPI 器件是被选中的(CS 为低),其他器件必须设置为非选中(CS 为高),以免互相干扰。4,JTAG 接口有几个信号(JTDO/JTRST)被摄像头模块/OLED 模块占用了,所以在调试这两个模块的时候,请大家选择SWD 模式,其实最好就是一直用SWD 模式。5,当你想使用某个IO 口用作其他用处的时候,请先看看开发板的原理图,该IO 口是否ALIENTEK 战舰STM32 开发板35 有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。比如 PB8 就不怎么适合再用做其他输出,因为他接了蜂鸣器,如果你输出高电平就会听到蜂鸣器的叫声了。6,开发板上的跳线帽比较多,大家在使用某个功能的时候,要先查查这个是否需要设置跳线帽,以免浪费时间。7,当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看LCD ID 是否正常,再做进一步的分析。8,开发板有2 个 DB9 接口,但是请特别注意,只有COM 这个接口(PS/2 右侧的)可以用来连接外部串口,而JOY_PAD 这个接口(PS/2 左侧)是用来接手柄的,不能接串口,否则可能把STM32 给烧了!请大家一定要注意这个问题!至此,本指南的实验平台(ALIENTEK战舰 STM32 开发板)的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于理解后面的代码,在编写软件的时候,可以事半功倍,希望大家细读!另外ALIENTEK开发板的其他资料及教程更新,都可以在技术论坛 下载到,大家可以经常去这个论坛获取更新的信息。ALIENTEK 战舰STM32 开发板