本章,我们将节将向大家详细介绍ALIENTEK战舰STM32F各部分的硬件原理图,让大家对该开发板的各部分硬件原理有个深入理解,并向大家介绍开发板的使用注意事项,为后面的学习做好准备。
本章将分为如下两节:
2.1,开发板原理图详解;
2.2,开发板使用注意事项;
2.3,STM32F学习方法;
2.1开发板原理图详解
2.1.1MCU
ALIENTEK战舰STM32开发板选择的是STM32FZETT6作为MCU,该芯片是STM32F里面配置非常强大的了,它拥有的资源包括:64KBSRAM、KBFLASH、2个基本定时器、4个通用定时器、2个高级定时器、2个DMA控制器(共12个通道)、3个SPI、2个IIC、5个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口、1个FSMC接口以及个通用IO口。该芯片的配置十分强悍,并且还带外部总线(FSMC)可以用来外扩SRAM和连接LCD等,通过FSMC驱动LCD,可以显著提高LCD的刷屏速度,是STM32F1家族常用型号里面,最高配置的芯片了,所以我们选择了它作为我们战舰板的主芯片。MCU部分的原理图如图2.1.1.1(因为原理图比较大,缩小下来可能有点看不清,请大家打开开发板光盘的原理图进行查看)所示:
图2.1.1.1MCU部分原理图上图中U2为我们的主芯片:STM32FZET6。
这里主要讲解以下3个地方:
1,后备区域供电脚VBAT脚的供电采用CR纽扣电池和VCC3.3混合供电的方式,在有外部电源(VCC3.3)的时候,CR不给VBAT供电,而在外部电源断开的时候,则由CR给其供电。这样,VBAT总是有电的,以保证RTC的走时以及后备寄存器的内容不丢失。
2,图中的R8和R9用隔离MCU部分和外部的电源,这样的设计主要是考虑了后期维护,如果3.3V电源短路,可以断开这两个电阻,来确定是MCU部分短路,还是外部短路,有助于生产和维修。当然大家在自己的设计上,这两个电阻是完全可以去掉的。
3,图中P5是参考电压选择端口。我们开发板默认是接板载的3.3V作为参考电压,如果大家想用自己的参考电压,则把你的参考电压接入Vref+即可。
2.1.2引出IO口
ALIENTEK战舰STM32F引出了STM32FZET6的所有IO口,如图2.1.2.1所示:
图2.1.2.1引出IO口图中P1、P2和P3为MCU主IO引出口,这三组排针共引出了个IO口,STM32FZET6总共有个IO,除去RTC晶振占用的2个,还剩个,这三组主引出排针,总共引出了个IO,剩下的8个IO口分别通过:P4(PA9PA10)、P7(PA2PA3)、P8(PB10PB11)和P9(PA11PA12)等4组排针引出。
2.1.3USB串口/串口1选择接口
ALIENTEK战舰STM32F板载的USB串口和STM32FZET6的串口是通过P4连接起来的,如图2.1.3.1所示:
图2.1.3.1USB串口/串口1选择接口图中TXD/RXD是相对CHG来说的,也就是USB串口的发送和接收脚。而USART1_RX和USART1_TX则是相对于STM32FZET6来说的。这样,通过对接,就可以实现USB串口和STM32FZET6的串口通信了。同时,P4是PA9和PA10的引出口。
这样设计的好处就是使用上非常灵活。比如需要用到外部TTL串口和STM32通信的时候,只需要拔了跳线帽,通过杜邦线连接外部TTL串口,就可以实现和外部设备的串口通信了;又比如我有个板子需要和电脑通信,但是电脑没有串口,那么你就可以使用开发板的RXD和TXD来连接你的设备,把我们的开发板当成USB转TTL串口用了。
2.1.4JTAG/SWD
ALIENTEK战舰STM32F板载的标准20针JTAG/SWD接口电路如图2.1.4.1所示:
图2.1.4.1JTAG/SWD接口这里,我们采用的是标准的JTAG接法,但是STM32还有SWD接口,SWD只需要最少2跟线(SWCLK和SWDIO)就可以下载并调试代码了,这同我们使用串口下载代码差不多,而且速度非常快,能调试。所以建议大家在设计产品的时候,可以留出SWD来下载调试代码,而摒弃JTAG。STM32的SWD接口与JTAG是共用的,只要接上JTAG,你就可以使用SWD模式了(其实并不需要JTAG这么多线),当然,你的调试器必须支持SWD模式,JLINKV7/V8、ULINK2和STLINK等都支持SWD调试。
特别提醒,JTAG有几个信号线用来接其他外设了,但是SWD是完全没有接任何其他外设的,所以在使用的时候,推荐大家一律使用SWD模式!!!
2.1.5SRAM
ALIENTEK战舰STM32F外扩了1M字节的SRAM芯片,如图2.1.5.1所示,注意图中的地址线标号,是以IS61LV16为模版的,但是和XM8A16的datasheet标号有出入,不过,因为地址的唯一性,这并不会影响我们使用XM8A16(特别提醒:地址线可以乱,但是数据线必须一致!!),因此,该原理图对这两个芯片都是可以正常使用的。
图2.1.5.1外扩SRAM图中U1为外扩的SRAM芯片,型号为:XM8A16,容量为1M字节,该芯片挂在STM32的FSMC上。这样大大扩展了STM32的内存(芯片本身有64K字节),从而在需要大内存的场合,战舰STM32F也可以胜任。
2.1.6LCD模块接口
ALIENTEK战舰STM32F板载的LCD模块接口电路如图2.1.6.1所示:
图2.1.6.1LCD模块接口图中TFT_LCD是一个通用的液晶模块接口,支持ALIENTEK全系列TFTLCD模块,包括:2.4寸、2.8寸、3.5寸、4.3寸和7寸等尺寸的TFTLCD模块。LCD接口连接在STM32FZET6的FSMC总线上面,可以显著提高LCD的刷屏速度。
图中的T_MISO/T_MOSI/T_PEN/T_SCK/T_CS连接在MCU的PB2/PF9/PF10/PB1/PF11上,这些信号用来实现对液晶触摸屏的控制(支持电阻屏和电容屏)。LCD_BL连接在MCU的PB0上,用于控制LCD的背光。液晶复位信号RESET则是直接连接在开发板的复位按钮上,和MCU共用一个复位电路。
2.1.7复位电路
ALIENTEK战舰STM32F的复位电路如图2.1.7.1所示:
图2.1.7.1复位电路因为STM32是低电平复位的,所以我们设计的电路也是低电平复位的,这里的R3和C12构成了上电复位电路。同时,开发板把TFT_LCD的复位引脚也接在RESET上,这样这个复位按钮不仅可以用来复位MCU,还可以复位LCD。
2.1.8启动模式设置接口
ALIENTEK战舰STM32F的启动模式设置端口电路如图2.1.8.1所示:
图2.1.8.1启动模式设置接口上图的BOOT0和BOOT1用于设置STM32的启动方式,其对应启动模式如表2.1.8.1所示:
表2.1.8.1BOOT0、BOOT1启动模式表按照表2.1.8.1,一般情况下如果我们想用用串口下载代码,则必须配置BOOT0为1,BOOT1为0,而如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。这里ALIENTEK战舰STM32F专门设计了一键下载电路,通过串口的DTR和RTS信号,来自动配置BOOT0和RST信号,因此不需要用户来手动切换他们的状态,直接串口下载软件自动控制,可以非常方便的下载代码。
2.1.9RS串口/JOYPAD接口
ALIENTEK战舰STM32F板载了一公一母两个RS接口,其中COM3不但可以接RS还可以接游戏手柄(JOYPAD),电路原理图如图2.1.9.1所示:
图2.1.9.1RS串口因为RS电平不能直接连接到STM32,所以需要一个电平转换芯片。这里我们选择的是SP3(也可以用MAX3)来做电平转接,同时图中的P7用来实现RS(COM2)/RS的选择,P8用来实现RS(COM3)/ATK模块接口的选择,以满足不同实验的需要。
图中COM2是母头,COM3是公头,而且COM3可以接RS串口或者接FC游戏手柄(JOYPAD),具体选择哪个功能,则是通过K1开关来切换(请看板载丝印)。使用的时候,要特别注意,K1先设置对了,再去接RS串口/FC游戏手柄。
图中USART2_TX/USART2_RX连接在MCU的串口2上(PA2/PA3),所以这里的RS(COM2)/RS都是通过串口2来实现的。图中RS_TX和RS_RX信号接在SP3的DI和RO信号上。
而图中的USART3_TX/USART3_RX则是连接在MCU的串口3上(PB10/PB11),所以RS(COM3)/ATK模块接口都是通过串口3来实现的。图中GBC_RX和GBC_TX连接在ATK模块接口U5上面。
因为P7/P8的存在,其实还带来另外一个好处,就是我们可以把开发板变成一个RS电平转换器,或者RS电平转换器,比如你买的核心板,可能没有板载RS/RS接口,通过连接战舰STM32F的P7/P8端口,就可以让你的核心板拥有RS/RS的功能。
2.1.10RS接口
ALIENTEK战舰STM32F板载的RS接口电路如图2.1.10.1所示:
图2.1.10.1RS接口RS电平也不能直接连接到STM32,同样需要电平转换芯片。这里我们使用SP3来做电平转换,其中R25为终端匹配电阻,而R22和R19,则是两个偏置电阻,以保证静默状态时,总线维持逻辑1。
RS_RX/RS_TX连接在P7上面,通过P7跳线来选择是否连接在MCU上面,RS_RE则是直接连接在MCU的IO口(PD7)上的,该信号用来控制SP3的工作模式(高电平为发送模式,低电平为接收模式)。
另外,特别注意:RS_RE和DM_RST共同接在PD7上面,在同时用到这两个外设的时候,需要注意下。
2.1.11CAN/USB接口
ALIENTEK战舰STM32F板载的CAN接口电路以及STM32USB接口电路如图2.1.11.1
所示:
图2.1.11.1CAN/USB接口CAN总线电平也不能直接连接到STM32,同样需要电平转换芯片。这里我们使用TJA来做CAN电平转换,其中R30为终端匹配电阻。
USB_D+/USB_D-连接在MCU的USB口(PA12/PA11)上,同时,因为STM32的USB和CAN共用这组信号,所以我们通过P9来选择使用USB还是CAN。
USB_SLAVE可以用来连接电脑,实现USB读卡器或USB虚拟串口等USB从机实验。另外,该接口还具有供电功能,VUSB为开发板的USB供电电压,通过这个USB口,就可以给整个开发板供电了。
2.1.12EEPROM
ALIENTEK战舰STM32F板载的EEPROM电路如图2.1.12.1所示:
EEPROM芯片我们使用的是24C02,该芯片的容量为2Kb,也就是个字节,对于我们普通应用来说是足够了的。当然,你也可以选择换大容量的芯片,因为我们的电路在原理上是兼容24C02~24C全系列EEPROM芯片的。
这里我们把A0~A2均接地,对24C02来说也就是把地址位设置成了0了,写程序的时候要注意这点。IIC_SCL接在MCU的PB6上,IIC_SDA接在MCU的PB7上,这里我们虽然接到了STM32的硬件IIC上,但是我们并不提倡使用硬件IIC,因为STM32的IIC是鸡肋!请谨慎使用。
2.1.13光敏传感器
ALIENTEK战舰STM32F板载了一个光敏传感器,可以用来感应周围光线的变化,该部分电路如图2.1.13.1所示:
图2.1.13.1光敏传感器电路图中的LS1就是光敏传感器,其实就是一个光敏二极管,周围环境越亮,电流越大,反之电流越小,即可等效为一个电阻,环境越亮阻值越小,反之越大,从而通过读取LIGHT_SENSOR的电压,即可知道周围环境光线强弱。LIGHT_SENSOR连接在MCU的ADC3_IN6(ADC3通道6)上面,即PF8引脚。
2.1.14SPIFLASH
ALIENTEK战舰STM32F板载的SPIFLASH电路如图2.1.14.1所示:
图2.1.14.1SPIFLASH芯片SPIFLASH芯片型号为W25Q,该芯片的容量为Mb,也就是16M字节。该芯片和NRF24L01共用一个SPI(SPI2),通过片选来选择使用某个器件,在使用其中一个器件的时候,请务必禁止另外一个器件的片选信号。
图中F_CS连接在MCU的PB12上,SPI2_SCK/SPI2_MOSI/SPI2_MISO则分别连接在MCU的PB13/PB15/PB14上。
2.1.15温湿度传感器接口
ALIENTEK战舰STM32F板载的温湿度传感器接口电路如图2.1.15.1所示:
图2.1.15.1温湿度传感器接口该接口(U6)支持DS18B20/DS/DHT11等单总线数字温湿度传感器。1WIRE_DQ是传感器的数据线,该信号连接在MCU的PG11上。
2.1.16红外接收头
ALIENTEK战舰STM32F板载的红外接收头电路如图2.1.16.1所示:
图2.1.16.1红外接收头HS是一个通用的红外接收头,几乎可以接收市面上所有红外遥控器的信号,有了它,就可以用红外遥控器来控制开发板了。REMOTE_IN为红外接收头的输出信号,该信号连接在MCU的PB9上。
2.1.17无线模块接口
ALIENTEK战舰STM32F板载的无线模块接口电路如图2.1.17.1所示:
图2.1.17.1无线模块接口该接口用来连接NRF24L01或者RFID等无线模块,从而实现开发板与其他设备的无线数据传输(注意:NRF24L01不能和蓝牙/WIFI连接)。NRF24L01无线模块的最大传输速度可以达到2Mbps,传输距离最大可以到30米左右(空旷地,无干扰)。
NRF_CE/NRF_CS/NRF_IRQ连接在MCU的PG8/PG7/PG6上,而另外3个SPI信号则和SPIFLASH共用,接MCU的SPI2。这里需要注意的是PG6还接了DM_INT这个信号,所以在使用NRF_IRQ中断引脚的时候,不能和DM同时使用,不过,如果没用到NRF_IRQ中断引脚,那么DM和无线模块就可以同时使用了。
2.1.18LED
ALIENTEK战舰STM32F板载总共有3个LED,其原理图如图2.1.18.1所示:
图2.1.18.1LED其中PWR是系统电源指示灯,为蓝色。LED0(DS0)和LED1(DS1)分别接在PB5和PE5上。为了方便大家判断,我们选择了DS0为红色的LED,DS1为绿色的LED。
2.1.19按键
ALIENTEK战舰STM32F板载总共有4个输入按键,其原理图如图2.1.19.1所示:
图2.1.19.1输入按键KEY0、KEY1和KEY2用作普通按键输入,分别连接在PE4、PE3和PE2上,这里并没有使用外部上拉电阻,但是STM32的IO作为输入的时候,可以设置上下拉电阻,所以我们使用STM32的内部上拉电阻来为按键提供上拉。
KEY_UP按键连接到PA0(STM32的WKUP引脚),它除了可以用作普通输入按键外,还可以用作STM32的唤醒输入。注意:这个按键是高电平触发的。
2.1.20TPAD电容触摸按键
ALIENTEK战舰STM32F板载了一个电容触摸按键,其原理图如图2.1.20.1所示:
图2.1.20.1电容触摸按键图中1M电阻是电容充电电阻,TPAD并没有直接连接在MCU上,而是连接在多功能端口(P10)上面,通过跳线帽来选择是否连接到STM32。多功能端口,我们将在2.1.25节介绍。
电容触摸按键的原理我们将在后续的实战篇里面介绍。
2.1.21OLED/摄像头模块接口
ALIENTEK战舰STM32F板载了一个OLED/摄像头模块接口,其原理图如图2.1.21.1
所示:
图2.1.21.1OLED/摄像头模块接口图中P6是接口可以用来连接ALIENTEKOLED模块或者ALIENTEK摄像头模块。如果是OLED模块,则FIFO_WEN和OV_VSYNC不需要接(在板上靠左插即可),如果是摄像头模块,则需要用到全部引脚。
其中,OV_SCL/OV_SDA/FIFO_WRST/FIFO_RRST/FIFO_OE这5个信号是分别连接在MCU的PD3/PG13/PD6/PG14/PG15上面,OV_D0~OV_D7则连接在PC0~7上面(放在连续的IO上,可以提高读写效率),FIFO_RCLK/FIFO_WEN/OV_VSYNC这3个信号是分别连接在MCU的PB4/PB3/PA8上面。其中PB3和PB4又是JTAG的JTRST/JTDO信号,所以在使用OV的时候,不要用JTAG仿真,要选择SWD模式(所以我们建议大家直接用SWD模式来连接我们的开发板,这样所有的实验都可以仿真!)。
特别注意:OV_SCL和JOY_CLK共用PD3,OV_VSYNC和PWM_DAC共用PA8,他们必须分时复用。在使用的时候,需要注意这个问题。
2.1.22有源蜂鸣器
ALIENTEK战舰STM32F板载了一个有源蜂鸣器,其原理图如图2.1.22.1所示:
图2.1.22.1有源蜂鸣器有源蜂鸣器是指自带了震荡电路的蜂鸣器,这种蜂鸣器一接上电就会自己震荡发声。而如果是无源蜂鸣器,则需要外加一定频率(2~5Khz)的驱动信号,才会发声。这里我们选择使用有源蜂鸣器,方便大家使用。
图中Q1是用来扩流,R38则是一个下拉电阻,避免MCU复位的时候,蜂鸣器可能发声的现象。BEEP信号直接连接在MCU的PB8上面,PB8可以做PWM输出,所以大家如果想玩高级点(如:控制蜂鸣器“唱歌”),就可以使用PWM来控制蜂鸣器。
2.1.23SD卡接口
ALIENTEK战舰STM32F板载了一个SD卡(大卡/相机卡)接口,其原理图如图2.1.23.1
所示:
图2.1.23.1SD卡接口图中SD_CARD为SD卡接口,该接口在开发板的底面。
SD卡采用4位SDIO方式驱动,理论上最大速度可以达到12MB/S,非常适合需要高速存储的情况。图中:SDIO_D0/SDIO_D1/SDIO_D2/SDIO_D3/SDIO_SCK/SDIO_CMD分别连接在MCU的PC8/PC9/PC10/PC11/PC12/PD2上面。
2.1.24ATK模块接口
ALIENTEK战舰STM32F板载了ATK模块接口,其原理图如图2.1.24.1所示:
图2.1.24.1ATK模块接口如图所示,U5是一个1*6的排座,可以用来连接ALIENTEK推出的一些模块,比如:蓝牙串口模块、GPS模块、MPU模块等。有了这个接口,我们连接模块就非常简单,插上即可工作。
图中:GBC_TX/GBC_RX可通过P8排针,选择接入PB11/PB10(即串口3),详见2.1.9节。而GBC_KEY和GBC_LED则分别连接在MCU的PA4和PA15上面。特别注意:GBC_KEY与PWM_DAC共用PA4,GBC_LED和JTDI共用PA15,在使用的时候,要注意这个问题。
2.1.25多功能端口
ALIENTEK战舰STM32F板载的多功能端口,是由P10和P11构成的一个6PIN端口,其原理图如图2.1.25.1所示:
图2.1.25.1多功能端口从上图,大家可能还看不出这个多功能端口的全部功能,别担心,下面我们会详细介绍。
首先介绍右侧的P10,其中TPAD为电容触摸按键信号,连接在电容触摸按键上。STM_ADC和STM_DAC则分别连接在PA1和PA4上,用于ADC采集或DAC输出。当需要电容触摸按键的时候,我们通过跳线帽短接TPAD和STM_ADC,就可以实现电容触摸按键(利用定时器的输入捕获)。STM_DAC信号则既可以用作DAC输出,也可以用作ADC输入,因为STM32的该管脚同时具有这两个复用功能。特别注意:STM_DAC与摄像头的GBC_KEY共用PA4,所以他们不可以同时使用,但是可以分时复用。
我们再来看看P11,PWM_DAC连接在MCU的PA8,是定时器1的通道1输出,后面跟一个二阶RC滤波电路,其截止频率为33.8Khz。经过这个滤波电路,MCU输出的方波就变为直流信号了。PWM_AUDIO是一个音频输入通道,它连接到TDA和HT的输入,输出到耳机/扬声器。特别注意:PWM_DAC和OV_VSYNC共用PA8,所以PWM_DAC和摄像头模块,不可以同时使用,不过,可以分时复用。
单独介绍完了P10和P11,我们再来看看他们组合在一起的多功能端口,如图2.1.25.2所
示:
图2.1.25.2组合后的多功能端口图中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的音频输出通道,实现PWMDAC播放音乐。2,AIN和DAC同样可以组成一个MCU的音频输出通道,也可以用来播放音乐。3,DAC和ADC组成一个自输出测试,用MCU的ADC来测试MCU的DAC输出。4,PDC和ADC,组成另外一个子输出测试,用MCU的ADC来测试MCU的PWMDAC输出。5,ADC和TPAD,组成一个触摸按键输入通道,实现MCU的触摸按键功能。
从上面的分析,可以看出,这个多功能端口可以实现10个功能,所以,只要设计合理,1+1是大于2的。
2.1.26以太网接口(RJ45)
ALIENTEK战舰STM32F板载了一个以太网接口(RJ45),其原理图如图2.1.26.1所示:
图2.1.26.1以太网接口电路STM32F1本身并不带网络功能,战舰STM32开发板V3板载了一颗DM网络接口芯片,用于给STM32F1提供网络接口,该芯片集成以太网MAC控制器与一般处理接口,一个10/M自适应的PHY和4KDWORD值的SRAM,有了它,战舰V3STM32开发板就可以实现网络相关的功能了。
DM和STM32FZET6的连接通过16位并口连接(FSMC),其中SD0~SD15连接在FSMC_D0~FSMC_D15,DM_RST/DM_INT/FSMC_NE2/FSMC_NWE/FSMC_NOW/FSMC_A7分别连接在PD7/PG6/PG9/PD5/PD4/PF13上。战舰STM32F开发板的FSMC总线上总共挂了3个器件:LCD、XM8A16和DM,他们通过不同片选分时复用,互不影响。
特别注意:DM_RST和RS_RE共用PD7,DM_INT和NRF_IRQ共用PG6,在使用的时候,注意要分时复用。另外,DM的中断引脚,我们加了D9二极管,防止干扰NRF_IRQ,所以,在战舰板上,仅支持低电平有效的中断方式。
2.1.27耳机输出
ALIENTEK战舰STM32开发板板载的音频输出电路,其原理图如图2.1.27.1所示:
图2.1.27.1音频输出电路图中PHONE为立体声音频输出插座,可以直接插3.5mm的耳机。MP3_LEFT和MP3_RIGHT和是VS的左右声道输出信号。另外PWM_AUDIO,则是来自多功能接口P11的PWM音频/外部音频输入,耦合到TDA的一个通道,所以,PWM_AUDIO只可以单声道输出。另外,SPK_IN,则是HT的输入,这个信号最终将通过板载喇叭输出声音,详见2.1.28节。
图中的TDA是AB类的数字音频(CD)专用耳机功放IC。其具有低电压、低失真、高速率、强输出等优异的性能是以往的TDA、TDA、LM等“经典”功放望尘莫及的。同时战舰STM32开发板搭载了效果一流的VS编解码芯片,所以,战舰STM32开发板播放MP3的音质是非常不错的,胜过市面上很多中低端MP3的音质。
2.1.28板载喇叭
ALIENTEK战舰STM32开发板板载了一个小喇叭(扬声器),通过D类功放驱动,其原理图如图2.1.28.1所示:
图2.1.28.1喇叭输出电路HT是一款低EMI,防削顶失真的,单声道免滤波D类音频功率放大器。在6.5V电源,10%THD+N,4负载条件下,输出4.71W功率,在各类音频终端应用中维持高效率并提供AB类放大器的性能。在战舰STM32开发板V3上面,我们采用它来驱动板载的8Ω2W喇叭。
图中SP-和SP+是喇叭焊接焊盘(在开发板底部),开发板板载的喇叭就是焊接在这两个焊盘上。SPK_IN是HT的音频信号输入端,该信号来自MP3_LEFT/PWM_AUDIO(见2.1.27节)。SPK_CTRL则由VS的GPIO4控制(见2.1.29节),当SPK_CTRL为低电平的时候,HT进入关断模式,当SPK_CTRL为高电平的时候,HT正常工作,这里我们加了10K的下拉电阻,所以,默认情况下,HT是关断的,也就是喇叭并不会发声。我们必须在程序上,控制VS的GPIO4输出高电平,才可以使板载喇叭发声。
有了板载喇叭,我们就可以直接通过板载喇叭欣赏开发板播放的音乐或者其他音频了,更加人性化。
2.1.29音频编解码
ALIENTEK战舰STM32开发板板载VS音频编解码芯片,其原理图如图2.1.29.1所示:
VS是一颗单片OGG/MP3/AAC/WMA/MIDI音频解码器,通过patch可以实现FLAC的解码,同时该芯片可以支持IMAADPCM编码,通过patch可以实现OGG编码。相比它的前辈:VS3,VS性能提升了不少,比如支持OGG编解码,支持FLAC解码,同时音质上也有比较大的提升,还支持空间效果设置。
图中MP3_LEFT/MP3_RIGHT这两个信号是VS的音频输出接口,输出到耳机/板载喇叭(详见:2.1.27节)。VS通过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上,VS通过STM32的SPI1访问。
图中的SPK_CTRL连接在VS的GPIO4上面,用于控制HT是否工作,从而控制板载喇叭是否出声,要让板载喇叭发声,必须通过软件控制VS的GPIO4输出高电平,否则板载喇叭关闭。
2.1.30电源
ALIENTEK战舰STM32F板载的电源供电部分,其原理图如图2.1.30.1所示:
图2.1.30.1电源图中,总共有3个稳压芯片:U12/U13/U15,DC_IN用于外部直流电源输入,范围是DC6~24V,输入电压经过U13DC-DC芯片转换为5V电源输出,其中D4是防反接二极管,避免外部直流电源极性搞错的时候,烧坏开发板。K2为开发板的总电源开关,F1为0ma自恢复保险丝,用于保护USB。U12为3.3V稳压芯片,给开发板提供3.3V电源,而U15则是1.8V稳压芯片,供VS的CVDD使用。
这里还有USB供电部分没有列出来,其中VUSB就是来自USB供电部分,我们将在2.1.32节进行介绍。
2.1.31电源输入输出接口
ALIENTEK战舰STM32F板载了两组简单电源输入输出接口,其原理图如图2.1.31.1
所示:
图2.1.31.1电源图中,VOUT1和VOUT2分别是3.3V和5V的电源输入输出接口,有了这2组接口,我们可以通过开发板给外部提供3.3V和5V电源了,虽然功率不大(最大0ma),但是一般情况都够用了,大家在调试自己的小电路板的时候,有这两组电源还是比较方便的。同时这两组端口,也可以用来由外部给开发板供电。
图中D6和D7为TVS管,可以有效避免VOUT外接电源/负载不稳的时候(尤其是开发板外接电机/继电器/电磁阀等感性负载的时候),对开发板造成的损坏。同时还能一定程度防止外接电源接反,对开发板造成的损坏。
2.1.32USB串口
ALIENTEK战舰STM32F板载了一个USB串口,其原理图如图2.1.32.1所示:
图2.1.32.1USB串口USB转串口,我们选择的是CHG,是国内芯片公司南京沁恒的产品,稳定性经测试还不错,所以还是多支持下国产。
图中Q2和Q3的组合构成了我们开发板的一键下载电路,只需要在flymcu软件设置:DTR的低电平复位,RTS高电平进BootLoader。就可以一键下载代码了,而不需要手动设置B0和按复位了。其中,RESET是开发板的复位信号,BOOT0则是启动模式的B0信号。
一键下载电路的具体实现过程:首先,mcuisp控制DTR输出低电平,则DTR_N输出高,然后RTS置高,则RTS_N输出低,这样Q3导通了,BOOT0被拉高,即实现设置BOOT0为1,同时Q2也会导通,STM32F1的复位脚被拉低,实现复位。然后,延时ms后,mcuisp控制DTR为高电平,则DTR_N输出低电平,RTS维持高电平,则RTS_N继续为低电平,此时STM32F1的复位引脚,由于Q2不再导通,变为高电平,STM32F1结束复位,但是BOOT0还是维持为1,从而进入ISP模式,接着mcuisp就可以开始连接STM32F1,下载代码了,从而实现一键下载。
USB_是一个MiniUSB座,提供CHG和电脑通信的接口,同时可以给开发板供电,VUSB就是来自电脑USB的电源,USB_是本开发板的主要供电口。
2.2开发板使用注意事项
为了让大家更好的使用ALIENTEK战舰STM32F,我们在这里总结该开发板使用的时候尤其要注意的一些问题,希望大家在使用的时候多多注意,以减少不必要的问题。
1,开发板一般情况是由USB_口供电,在第一次上电的时候由于CHG在和电脑建立连接的过程中,导致DTR/RTS信号不稳定,会引起STM32复位2~3次左右,这个现象是正常的,后续按复位键就不会出现这种问题了。
2,1个USB供电最多mA,且由于导线电阻存在,供到开发板的电压,一般都不会有5V,如果使用了很多大负载外设,比如4.3寸屏、7寸屏、网络、摄像头模块等,那么可能引起USB供电不够,所以如果是使用4.3屏/7寸屏的朋友,或者同时用到多个模块的时候,建议大家使用一个独立电源供电。如果没有独立电源,建议可以同时插2个USB口,并插上JTAG,这样供电可以更足一些。
3,JTAG接口有几个信号(JTDI/JTDO/JTRST)被GBC_LED(ATKMODULE)/FIFO_WEN(摄像头模块)/FIFO_RCLK(摄像头模块)占用了,所以在调试这些模块的时候,请大家选择SWD模式,其实最好就是一直用SWD模式。
4,当你想使用某个IO口用作其他用处的时候,请先看看开发板的原理图,该IO口是否有连接在开发板的某个外设上,如果有,该外设的这个信号是否会对你的使用造成干扰,先确定无干扰,再使用这个IO。比如PB8就不怎么适合再用做其他输出,因为他接了蜂鸣器,如果你输出高电平就会听到蜂鸣器的叫声了。
5,开发板上的跳线帽比较多,大家在使用某个功能的时候,要先查查这个是否需要设置跳线帽,以免浪费时间。
6,当液晶显示白屏的时候,请先检查液晶模块是否插好(拔下来重新插试试),如果还不行,可以通过串口看看LCDID是否正常,再做进一步的分析。
至此,本手册的实验平台(ALIENTEK战舰STM32F)的硬件部分就介绍完了,了解了整个硬件对我们后面的学习会有很大帮助,有助于理解后面的代码,在编写软件的时候,可以事半功倍,希望大家细读!另外ALIENTEK开发板的其他资料及教程更新,都可以在技术论坛