第一章 实验平台简介
本章,主要向大家简要介绍我们的实验平台:ALIENTEK战舰STM32开发板。通过本章的学习,你将对我们后面使用的实验平台有个大概了解,为后面的学习做铺垫。
本章将分为如下两节:
1.1,ALIENTEK战舰STM32开发板资源初探;
1.2,ALIENTEK战舰STM32开发板资源说明;
1.1 ALIENTEK战舰STM32开发板资源初探
在ALIENTEK 战舰STM32开发板之前,ALIENTEK推出过MiniSTM32开发板,在两年的时间里面,售出8000多套,连续一年多稳居淘宝STM32开发板销量之首。而这款战舰STM32开发板,则是MiniSTM32开发板的超级加强版。下面我们开始介绍战舰STM32开发板。
ALIENTEK战舰STM32开发板的资源图如图1.1.1所示:
图1.1.1 战舰STM32 开发板资源图
从图1.1.1可以看出,ALIENTEK战舰STM32开发板,资源十分丰富,并把STM32F103的内部资源发挥到了极致,基本所有STM32F103的内部资源,都可以在此开发板上验证,同时扩充丰富的接口和功能模块,整个开发板显得十分大气。
开发板的外形尺寸为11.2cm*15.6cm大小,板子的设计充分考虑了人性化设计,并结合广大客户对Mini板提出的改进意见,经过反复修改(在面市之前,硬件就改版了8次之多,目前最新版本为V2.0),最终确了定这样的设计。
ALIENTEK战舰STM32开发板板载资源如下:
- CPU:STM32F103ZET6,LQFP144,FLASH:512K,SRAM:64K;
- 外扩SRAM:IS62WV51216,1M字节
- 外扩SPI FLASH:W25Q64,8M字节
- 1个电源指示灯(蓝色)
- 2个状态指示灯(DS0:红色,DS1:绿色)
- 1个红外接收头,并配备一款小巧的红外遥控器
- 1个 EEPROM芯片,24C02,容量256字节
- 1个重力加速度传感器芯片,ADXL345
- 1个高性能音频编解码芯片,VS1053
- 1个FM立体声收发芯片,RDA5820
- 1个2.4G无线模块接口(NRF24L01)
- 1路CAN接口,采用TJA1050芯片
- 1路485接口,采用SP3485芯片
- 1路RS232(串口)接口,采用SP3232芯片
- 1个PS/2接口,可外接鼠标、键盘
- 1个游戏手柄接口,可以直接插FC(红白机)游戏手柄
- 1路数字温湿度传感器接口,支持DS18B20 /DHT11等
- 1个标准的2.4/2.8/3.5寸LCD接口,支持触摸屏
- 1个摄像头模块接口
- 2个OLED模块接口
- 1个USB串口,可用于程序下载和代码调试(USMART调试)
- 1个USB SLAVE接口,用于USB通信
- 1个有源蜂鸣器
- 1个FM收发天线接口,并配天线
- 1个RS232/RS485选择接口
- 1个CAN/USB选择接口
- 1个串口选择接口
- 1个SD卡接口(在板子背面,支持SPI/SDIO)
- 1个SD卡/网络模块选择接口
- 1个标准的JTAG/SWD调试下载口
- 1个VS1053的IIS输出接口
- 1个MIC/LINE IN选择接口
- 1个录音头(MIC/咪头)
- 1路立体声音频输出接口
- 1路立体声录音输入接口
- 1组多功能端口(DAC/ADC/PWM DAC/AUDIO IN/TPAD)
- 1组5V电源供应/接入口
- 1组3.3V电源供应/接入口
- 1个参考电压设置接口
- 1个直流电源输入接口(输入电压范围:6~16V)
- 1个启动模式选择配置接口
- 1个RTC后备电池座,并带电池
- 1个复位按钮,可用于复位MCU和LCD
- 4个功能按钮,其中WK_UP兼具唤醒功能
- 1个电容触摸按键
- 1个电源开关,控制整个板的电源
- 独创的一键下载功能
- 除晶振占用的IO口外,其余所有IO口全部引出
ALIENTEK战舰STM32开发板的特点包括:
1) 接口丰富。板子提供十来种标准接口,可以方便的进行各种外设的实验和开发。
2) 设计灵活。板上很多资源都可以灵活配置,以满足不同条件下的使用。我们引出了除晶振占用的IO口外的所有IO口,可以极大的方便大家扩展及使用。另外板载一键下载功能,可避免频繁设置B0、B1的麻烦,仅通过1根USB线即可实现STM32的开发。
3) 资源充足。外扩1M字节SRAM和8M字节FLASH,满足大内存需求和大数据存储。板载MP3和FM收发芯片,娱乐学习两不误。板载3D加速度传感器和各种接口芯片,满足各种应用需求。
4) 人性化设计。各个接口都有丝印标注,使用起来一目了然;接口位置设计安排合理,方便顺手。资源搭配合理,物尽其用。
1.2 ALIENTEK战舰STM32开发板资源说明
资源说明部分,我们将分为两个部分说明:硬件资源说明和软件资源说明。
1.2.1硬件资源说明
这里我们首先详细介绍战舰STM32开发板的各个部分(图1.1.1中的标注部分)的硬件资源,我们将按逆时针的顺序依次介绍。
这是开发板外扩的SPI FLASH芯片,容量为64Mbit,也就是8M字节,可用于存储字库和其他用户数据,满足大容量数据存储要求。当然如果觉得8M字节还不够用,你可以把数据存放在外部SD卡。
这是开发板外扩的SRAM芯片,容量为8M位,也就是1M字节,这样,对大内存需求的应用(比如GUI),就可以很好的实现了。
这里是一个由3拍排针(在板上标号[下同]为:P10、P11和P12)组成的复合接口,当不用网络模块的时候,这个组合就变成了SD卡的接口选择接口,可以通过跳线帽选择SDIO/SPI(我们默认是设置在SPI接口的)。但是,如果需要网络模块(网络模块接P12),那么SD卡就只能用SDIO模式了。
4. 引出IO口
这里是一组54个IO口的引出(P5),在它的右侧不远,是另外一组54个IO口的引出(P4),这两组排针引出108个IO,而STM32F103ZET6总共只有112个IO,除去RTC晶振占用的2个IO,还剩下PA9和PA10没有在这里引出(由P6引出)。
这是一个USB/CAN的选择接口(P13),因为STM32的USB和CAN是共用一组IO(PA11和PA12),所以我们通过跳线帽来选择不同的功能,以实现USB/CAN的实验。
这是ALIENTEK战舰STM32开发板板载的20针标准JTAG调试口(JTAG),该JTAG口直接可以和ULINK、JLINK或者STLINK等调试器(仿真器)连接,同时由于STM32支持SWD调试,这个JTAG口也可以用SWD模式来连接。
用标准的JTAG调试,需要占用5个IO口,有些时候,可能造成IO口不够用,而用SWD则只需要2个IO口,大大节约了IO数量,但他们达到的效果是一样的,所以我们强烈建议你的仿真器使用SWD模式!
这是USB串口同STM32F103ZET6的串口1进行连接的接口(P6),标号RXD和TXD是USB转串口的2个数据口(对CH340G来说),而PA9(TXD)和PA10(RXD)则是STM32的串口1的两个数据口(复用功能下)。他们通过跳线帽对接,就可以和连接在一起了,从而实现STM32的程序下载以及串口通信。
设计成USB串口,是出于现在电脑上串口正在消失,尤其是笔记本,几乎清一色的没有串口。所以板载了USB串口可以方便大家下载代码和调试。而在板子上并没有直接连接在一起,则是出于使用方便的考虑。这样设计,你可以把ALIENTEK战舰STM32开发板当成一个USB串口,来和其他板子通信,而其他板子的串口,也可以方便地接到ALIENTEK战舰STM32开发板上。
这是开发板的核心芯片(U5),型号为:STM32F103ZET6。该芯片具有64KB SRAM、512KB FLASH、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接口以及112个通用IO口。
这是开发板板载的一个MiniUSB头(USB),用于STM32与电脑的USB通讯,通过此MiniUSB头,开发板就可以和电脑进行USB通信了。开发板总共板载了2个MiniUSB头,一个用于USB转串口,连接CH340G芯片;另外一个用于STM32内带的USB。
同时开发板可以通过此MiniUSB头供电,板载两个MiniUSB头(不共用),主要是考虑了使用的方便性,以及可以给板子提供更大的电流(两个USB都接上)这两个因素。
10. 后备电池接口
这是STM32后备区域的供电接口,可以用来给STM32的后备区域提供能量,在外部电源断电的时候,维持后备区域数据的存储,以及RTC的运行。
这是开发板板载的另外一个MiniUSB头(USB_232),用于USB连接CH340G芯片,从而实现USB转串口。同时,此MiniUSB接头也是开发板电源的主要提供口。
这是开发板板载的一个OLED/摄像头模块接口(P8),如果是OLED模块,靠左插即可(右边两个孔位悬空)。如果是摄像头模块(ALIENTEK提供),则刚好插满。通过这个接口,可以分别连接2个外部模块,从而实现相关实验。
13. 有源蜂鸣器
这是开发板的板载蜂鸣器(BEEP),可以实现简单的报警/闹铃。让开发板可以听得见。
14. 红外接收头
这是开发板的红外接收头(U14),可以实现红外遥控功能,通过这个接收头,可以接受市面常见的各种遥控器的红外信号,大家甚至可以自己实现万能红外解码。当然,如果应用得当,该接收头也可以用来传输数据。
战舰STM32开发板给大家配备了一个小巧的红外遥控器,该遥控器外观如图1.2.1.1所示:
图 1.2.1.1 红外遥控器
这是开发板的一个复用接口(U13),该接口由4个镀金排孔组成,可以用来接DS18B20/DS1820等数字温度传感器。也可以用来接DHT11这样的数字温湿度传感器。实现一个接口,2个功能。不用的时候,大家可以拆下上面的传感器,放到其他地方去用,使用上是十分方便灵活的。
这是开发板板载的两个LED灯(DS0和DS1),DS0是红色的,DS1是绿色的,主要是方便大家识别。这里提醒大家不要停留在51跑马灯的思维,搞这么多灯,除了浪费IO口,实在是想不出其他什么优点。
我们一般的应用2个LED足够了,在调试代码的时候,使用LED来指示程序状态,是非常不错的一个辅助调试方法。战舰STM32开发板几乎每个实例都使用了LED来指示程序的运行状态。
3. 启动选择端口
这是开发板板载的启动模式选择端口(BOOT),STM32有BOOT0(B0)和BOOT1(B1)两个启动选择引脚,用于选择复位后STM32的启动模式,作为开发板,这两个是必须的。在开发板上,我们通过跳线帽选择STM32的启动模式。关于启动模式的说明,请看2.1.8小节。
4. 复位按钮
这是开发板板载的复位按键(RESET),用于复位STM32,还具有复位液晶的功能,因为液晶模块的复位引脚和STM32的复位引脚是连接在一起的,当按下该键的时候,STM32和液晶一并被复位。
5. 参考电压选择端口
这是STM32的参考电压选择端口(P7),我们默认是接开发板的3.3V和GND。如果大家想设置其他参考电压,只需要把你的参考电压源接到REF-和REF+上即可。
这是开发板板载的4个机械式输入按键(KEY0、KEY1、KEY2和WK_UP),其中WK_UP具有唤醒功能,该按键连接到STM32的WAKE_UP(PA0)引脚,可用于待机模式下的唤醒,在不使用唤醒功能的时候,也可以做为普通按键输入使用。
其他3个是普通按键,可以用于人机交互的输入,这3个按键是直接连接在STM32的IO口上的。这里注意WK_UP是高电平有效,而KEY0、KEY1和KEY2是低电平有效,大家在使用的时候留意一下。
7. 触摸按钮
这是开发板板载的一个电容触摸输入按键(TPAD),用于实现触摸按键。现在触摸按键非常流行,所以我们在开发板上也设计了一个,咱得跟上时代的步伐。
8. 电源指示灯
这是开发板板载的一颗蓝色的LED灯(PWR),用于指示电源状态。在电源开启的时候(通过板上的电源开关控制),该灯会亮,否则不亮。通过这个LED,可以判断开发板的上电情况。
9. 多功能端口
这里大家可别小看这6个排针,这可是本开发板设计的很巧妙的一个端口(由P3和P14组成),这组端口通过组合可以实现的功能有:ADC采集、DAC输出、PWM DAC输出、外部音频输入、电容触摸按键、DAC音频、PWM DAC音频、DAC ADC自测等,所有这些,你只需要1个跳线帽的设置,就可以逐一实现。
这是开发板的板载录音输入口(MIC),该咪头直接接到VS1053的输入上,可以用来实现录音功能。
11. 录音输入接口
这 是开发板板载的外部录音输入接口(LINE_IN),通过咪头我们只能实现单声道的录音,而通过这个LINE_IN,我们可以实现立体声录音。
这是开发板板载录音的接入选择口(P2),如果使用LINE_IN录音的时候,我们把P2断开,以排除来自咪头的干扰信号,从而可以更好的立体声录音。而使用咪头录音的时候,我们短接P2即可。
13. 耳机输出接口
这是开发板板载的音频输出接口(PHONE),战舰STM32开发板有多个音频输出(VS1053/收音机/PWM DAC等),通过74HC4052实现音频选择,输入到TDA1308,再输出到该音频输出口,实现开发板的音频输出。
这是VS1053的IIS输出接口(P1),该接口可以用来连接外部DAC,实现更好的音质输出。其实我觉得VS1053本身的音频DAC已经很好了。这个接口适合发烧友使用。
这是开发板板载的一组5V电源输入输出排针(2*3)(VOUT2),用于给外部提供5V的电源,也可以用于从外部取5V的电源给板子供电。
大家在实验的时候可能经常会为没有5V电源而苦恼不已,有了ALIENTEK战舰STM32开发板,你就可以很方便的拥有一个简单的5V电源(最大电流不能超过500ma)。
这是开发板板载的一组3.3V电源输入输出排针(2*3)(VOUT1),该排针用于给外部提供3.3V的电源,也可以用于从外部取3.3V的电源给板子供电。
同样大家在实验的时候可能经常会为没有3.3V电源而苦恼不已,ALIENTEK充分考虑到了大家需求,有了这组3.3V排针,你就可以很方便的拥有一个简单的3.3V电源(最大电流不能超过500ma)。
这是开发板板载的一个3轴加速度传感器(U11),ADXL345分辨率高(13位),测量范围大(±16g),可以通过SPI/IIC访问,战舰开发板采用IIC访问它。有了这个,大家就可以实现一些比较有意思的应用(比如测量倾角等)
18. 电源开关
这是开发板板载的电源开关(K1)。该开关用于控制整个开发板的供电,如果切断,则整个开发板都将断电,电源指示灯(PWR)会随着此开关的状态而亮灭。
这是开发板板载的一个外部电源输入口(DC_IN),采用标准的直流电源插座。开发板板载了DC-DC芯片(MP2359),用于给开发板提供高效、稳定的5V电源。由于采用了DC-DC芯片,所以开发板的供电范围十分宽,大家可以很方便的找到合适的的电源(只要输出范围在DC6~16V的基本都可以)来给开发板供电。特别注意:如果你使用的是战舰V2.0以前的版本,输入电压建议不要超过9V!切记不能超过12V!战舰V2.0及以后的版本才支持DC6~16V的宽输入范围。
这个是开发板板载FM收发芯片的天线接口(ANT),同时我们安装有天线在这个上面。通过这个天线,可以很好的实现FM收音和FM发射。
这是开发板板载的RS485总线接口(RS485),通过3个端口和外部485设备连接。一 般情况下,只需要连接2个端口即可,即A和B,并不需要连接GND。这里提醒大家,RS485通信的时候,必须A接A,B接B。否则可能通信不正常!
这是开发板板载的RS232/485选择接口(P9),因为RS485基本上就是一个半双工的串口,为了节约IO,我们把RS232和RS485共用一个串口,通过P9来设置当前是使用RS232还是RS485。当然,这样的设计还有一个好处。就是我们的开发板既可以充当RS232到TTL串口的转换,又可以充当RS485到TTL485的转换。(注意,这里的TTL高电平是3.3V)
这是开发板板载的RS232接口(COM),通过一个标准的DB9母头和外部的串口连接。通过这个接口,我们可以连接带有串口的电脑或者其他设备,实现串口通信。
这是开发板板载的EEPROM芯片(U15),容量为2Kb,也就是256字节。用于存储一些掉电不能丢失的重要数据,比如系统设置的一些参数/触摸屏校准数据等。有了这个就可以方便的实现掉电数据保存。
这是开发板板载的一个标准PS/2母头(PS/2),用于连接电脑鼠标和键盘等PS/2设备。
通过PS/2口,我们仅仅需要2个IO口,就可以扩展一个键盘,所以大家不必要对板上只有4个按键而感到担忧。ALIENTEK提供了标准的鼠标驱动例程,方便大家学习PS/2协议。
26. 游戏手柄接口
这是开发板板载的一个9针游戏手柄接口(JOY_PAD),可以用来连接FC手柄(红白机/小霸王游戏机手柄),这样大家可以在开发板上编写游戏程序,直接通过手柄玩游戏了。我们的综合实验提供有一个简单的NES模拟器,大家可以直接从网上下载nes游戏,放到开发板上玩。
这是战舰STM32开发板的又一个特色设计,一个接口,兼容多种模块。如果是OLED模块,请靠左侧插。如果是LCD模块,则靠右侧插。OLED模块支持ALIENTEK的单色/双色OLED模块。LCD模块则支持ALIENTEK的2.4/2.8/3.5寸LCD模块,并且支持触摸屏功能。
这是开发板板载的CAN总线接口(CAN),通过3个端口和外部CAN总线连接。一般情况下,只需要连接2个端口即可,即CANH和CANL,并不需要连接GND。这里提醒大家,CAN通信的时候,必须CANH接CANH,CANL接CANL。否则可能通信不正常!
这是开发板板载的NRF24L01模块接口(U7),只要插入模块,我们便可以实现无线通信,从而使得我们板子具备了无线功能,但是这里需要2个模块和2个开发板同时工作才可以。如果只有1个开发板或1个模块,是没法实现无线通信的。
1.2.2软件资源说明
上面我们详细介绍了ALIENTEK战舰STM32开发板的硬件资源。接下来,我们将向大家简要介绍一下战舰STM32开发板的软件资源。
战舰STM32开发板提供的标准例程多达57个,一般的STM32开发板仅提供库函数代码,而我们则提供寄存器和库函数两个版本的代码(本指南以寄存器版本作为介绍)。我们提供的这些例程,基本都是原创,拥有非常详细的注释,代码风格统一、循序渐进,非常适合初学者入门。而其他开发板的例程,大都是来自ST库函数的直接修改,注释也比较少,对初学者来说不那么容易入门。
战舰STM32开发板的例程列表如表1.2.2.1所示:
表1.2.2.1 ALIENTEK战舰STM32开发板例程表
从上表可以看出,ALIENTEK战舰STM32开发板的例程基本上涵盖了STM32F103ZET6的所有内部资源,并且外扩展了很多有价值的例程,比如:FLASH模拟EEPROM实验、IAP实验、拼音输入法实验、手写识别实验、综合实验等。
而且从上表可以看出,例程安排是循序渐进的,首先从最基础的跑马灯开始,然后一步步深入,从简单到复杂,有利于大家的学习和掌握。所以,ALIENTEK战舰STM32开发板是非常适合初学者的。当然,对于想深入了解STM32内部资源的朋友,ALIENTEK战舰STM32开发板也绝对是一个不错的选择。
这里特别说明一下战舰系统综合实验,这个实验使得ALIENTEK战舰STM32开发板更像一个产品,而不单单是一个开发板了,它拥有目前市面上所有开发板中最复杂,最强大的功能,可玩性极高,它的实现,充分向大家展示了ALIENTEK战舰开发板的优势,同时也证明了STM32的强悍性能。解决了一部分人,STM32能干啥的顾虑。 |