第4章 初识STM32
第4章 初识STM32
全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn
野火视频教程优酷观看网址:http://i.youku.com/firege
本章参考资料:1、《STM8和STM32产品选型手册》2、SetupSTM32CubeMX-4.11.0.exe
4.1 什么是STM32
STM32,从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指ST公司开发的32位微控制器。在如今的32位控制器当中,STM32可以说是最璀璨的新星,它受宠若娇,大受工程师和市场的青睐,无芯能出其右。
4.1.1 STM32诞生的背景
51 是嵌入式学习中一款入门级的精典 MCU,因其结构简单,易于教学,且可以通过串口编程而不需要额外的仿真器,所以在教学时被大量采用,至今很多大学在嵌入式教学中用的还是 51。51 诞生于 70 年代,属于传统的 8 位单片机,如今,久经岁月的洗礼,既有其辉煌又有其不足。现在的市场产品竞争越来越激烈,对成本极其敏感,相应地对 MCU 的性能要求也更苛刻:更多功能,更低功耗,易用界面和多任务。面对这些要求,51 现有的资源就显得得抓襟见肘。所以无论是高校教学还是市场需求,都急需一款新的 MCU 来为这个领域注入新的活力。
基于这样的市场需求, ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 Cortex-M3 微控制器内核。紧随其后,ST(意法半导体)公司就推出了基于 Cortex-M3 内核的MCU—STM32。STM32 凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多 Cortex-M3 MCU 中脱颖而出,成为最闪亮的一颗新星。STM32 一上市就迅速占领了中低端 MCU 市场,受到了市场和工程师的无比青睐,颇有星火燎原之势。
作为一名合格的嵌入式工程师,面对新出现的技术,我们不是充耳不闻,而是要尽快吻合市场的需要,跟上技术的潮流。如今 STM32 的出现就是一种趋势,一种潮流,我们要做的就是搭上这趟快车,让自己的技术更有竞争力。
4.2 STM32能做什么
STM32属于一个微控制器,自带了各种常用通信接口,比如USART、I2C、SPI等,可接非常多的传感器,可以控制很多的设备。现实生活中,我们接触到的很多电器产品都有STM32的身影,比如智能手环,微型四轴飞行器,平衡车、移动POST机,智能电饭锅,3D打印机等等。下面我们以最近最为火爆的两个产品来讲解下,一个是手环,一个是飞行器。
4.2.1 智能手环
图 41 三星 GearFit 智能手环
红圈:STM32F439ZIY6S处理器,2048KB FLASH ,256KB RAM ,WLCSP143封装。
橙圈:Macronix MX69V28F64 16 MB闪存,基于MCP封装的存储器,是一种包含了NOR和SRAM的闪存,这在手环手机这种移动设备中经常使用,优点是体积小,可以减小PCB的尺寸。这个闪存用的439的FSMC接口驱动。
黄圈:InvenSense MPU-6500陀螺仪/加速度计,用439的I2C接口驱动。
绿圈:博通BCM4334WKUBG芯片,支持802.11n,蓝牙4.0+HS以及FM接收芯片,用439的SDIO或者SPI接口驱动。
显示:1.84"可弯曲屏幕(Super AMOLED),432 x 128像素。触摸部分用439的I2C接口驱动,OLED显示部分用LTDC接口驱动。
表格 41 三星Gear Fit 和秉火STM32F429至尊版资源对比
资源 |
三星Gear Fit |
秉火STM32F429至尊版 |
CPU |
STM32F439ZIY6S,WLCSP143封装 |
STM32F429IGT6,LQPF144 封装 |
存储 |
NOR+SRAM 16MB,FSMC接口 |
SDRAM 8MB,FMC接口 |
显示 |
1.84寸的 AMOLED,RGB接口,LTDC驱动 |
5寸电容屏,RGB接口,LTDC驱动 |
陀螺仪 |
MPU6050,I2C接口 |
MPU6050,I2C接口 |
无线通信 |
蓝牙:博通BCM4334,SDIO或者SPI接口 |
WIFI:美满W8782,SDIO接口 |
除了这几个重要资源的对比,我们的429开发板上还集成了以太网,音频,CAN,485,232,USB转串口,蜂鸣器,LED,电容按键等外设资源,可以充分的学习429这个芯片。在板子上面,还可以跑系统ucosiii,学习图形界面emwin。如果功夫所至,学完之后,自己都可以做一个类似Gear Fit这样的手环。可很多人又会说,Gear Fit 涉及硬件和软件,整个系统这么复杂,并不是一个人可以完成的。说的没错,我们可以做不了,但是我们的能力可以无限接近,多学点,技多不压身嘛。
图 42 ucosiii+emwin 做的系统界面(429开发板的开机界面)
4.2.2 微型四轴飞行器
现在无人机非常火热,高端的无人机用STM32做不来,但是小型的四轴飞行器用STM32还是绰绰有余的。如图 43所示飞行器的基本都可以用STM32搞定。
图 43 微型四轴飞行器
上面的是属于产品,如果想自己DIY,可以在入门STM32之后,买一本飞行器DIY的书,边做边学。入门级的书籍推荐《四轴飞行器DIY—基于STM32微控制器》,见图44。
图 44 四轴飞行器DIY —基于STM32微控制器
4.2.3 淘宝众筹
学会了STM32,想自己做产品,如何实现自己的梦想,淘宝众筹吧。做出产品原型,用别人的钱为自己的梦想买单。
淘宝众筹科技类网址:这里面有很多小玩意都可以用STM32实现,只要你的创意到了,就会有人买单,前提是我们要先学会STM32。
https://hi.taobao.com/market/hi/list.php?spm=a215p.1596646.1.8.LbVyJk#type=121288001
图 45 淘宝众筹科技类
4.3 STM32怎么选型
4.3.1 STM32分类
STM32有很多系列,可以满足市场的各种需求,从内核上分有Cortex-M0、M3、M4和M7这几种,每个内核又大概分为主流、高性能和低功耗。具体的见表格 42。
单纯从学习的角度出发,可以选择F1和F4,F1代表了基础型,基于Cortex-M3内核,主频为72MHZ,F4代表了高性能,基于Cortex-M4内核,主频180M。
之于F1,F4(429系列以上)除了内核不同和主频的提升外,升级的明显特色就是带了LCD控制器和摄像头接口,支持SDRAM,这个区别在项目选型上会被优先考虑。
表格 42 STM8和STM32分类
CPU位数 |
内核 |
系列 |
描述 |
32 |
Cortex-M0 |
STM32-F0 |
入门级 |
STM32-L0 |
低功耗 |
||
Cortex-M3 |
STM32-F1 |
基础型,主频72M |
|
STM32-F2 |
高性能 |
||
STM32-L1 |
低功耗 |
||
Cortex-M4 |
STM32-F3 |
混和信号 |
|
STM32-F4 |
高性能,主频180M |
||
STM32-L4 |
低功耗 |
||
Cortex-M7 |
STM32-F7 |
高性能 |
|
8 |
超级版6502 |
STM8S |
标准系列 |
STM8AF |
标准系列的汽车应用 |
||
STM8AL |
低功耗的汽车应用 |
||
STM8L |
低功耗 |
4.3.2 STM32 命名方法
这里我们以秉火F429至尊版用的型号STM32F429IGT6来讲解下STM32的命名方法。
表格 43 STM32F429IGT6命名解释
— |
STM32 |
F |
429 |
I |
G |
T |
6 |
家族 |
STM32 表示32bit的MCU |
||||||
产品类型 |
F表示基础型 |
||||||
具体特性 |
429表示高性能且带DSP和FPU |
||||||
引脚数目 |
I表示176pin,其他常用的为C表示48,R表示64,V表示100,Z表示144,B表示208,N表示216 |
||||||
FLASH大小 |
G表示1024KB,其他常用的为C表示256,E表示512,I表示2048 |
||||||
封装 |
T表示QFP封装,这个是最常用的封装 |
||||||
温度 |
6表示温度等级为A :-40~85° |
有关更详细的命名方法见图 46。
图 46 STM8和STM32命名方法,摘自《STM8和STM32选型手册》
4.3.3 选择合适的MCU
了解了STM32的分类和命名方法之后,就可以根据项目的具体需求先大概选择哪类内核的MCU,普通应用,不需要接大屏幕的一般选择Cortex-M3内核的F1系列,如果要追求高性能,需要大量的数据运算,且需要外接RGB大屏幕的则选择Cortex-M4内核的F429系列。
明确了大方向之后,接下来就是细分选型,先确定引脚,引脚多的功能就多,价格也贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选择FLASH大小,相同引脚数的MCU会有不同的FLASH大小可供选择,这个也是根据实际需要选择,程序大的就选择大点的FLASH,要是产品一量产,这些省下来的都是钱啊。有些月出货量以KK(百万数量级)为单位的产品,不仅是MCU,连电阻电容能少用就少用,更甚者连PCB的过孔的多少都有讲究。项目中的元器件的选型的水深着啊,很多学问。
1. 如何分配原理图IO
在画原理图之前,一般的做法是先把引脚分类好,然后才开始画原理图,引脚分类具体见表格 44。
表格 44 画原理图时的引脚分类
引脚分类 |
引脚说明说明 |
电源 |
(VBAT)、(VDD VSS)、(VDDA VSSA)、(VREF+ VREF-)等 |
晶振IO |
主晶振IO,RTC晶振IO |
下载IO |
用于JTAG下载的IO:JTMS、JTCK、JTDI、JTDO、NJTRST |
BOOT IO |
BOOT0、BOOT1,用于设置系统的启动方式 |
复位IO |
NRST,用于外部复位 |
上面5部分IO组成的系统我们也叫做最小系统 |
|
GPIO |
专用器件接到专用的总线,比如I2C,SPI,SDIO,FSMC,DCMI这些总线的器件需要接到专用的IO |
普通的元器件接到GPIO,比如蜂鸣器,LED,按键等元器件用普通的GPIO即 |
|
如果还有剩下的IO,可根据项目需要引出或者不引出 |
2. 如何寻找IO的功能说明
要想根据功能来分配IO,那就得先知道每个IO的功能说明,这个我们可以从官方的数据手册里面找到。在学习的时候,有两个官方资料我们会经常用到,一个是参考手册(英文叫Reference manual),另外一个是数据手册(英文叫Data Sheet)。两者的具体区别见表格 45。
表格 45 参考手册和数据手册的内容区别
手册 |
主要内容 |
说明 |
参考手册 |
片上外设的功能说明和寄存器描述 |
对片上每一个外设的功能和使用做了详细的说明,包含寄存器的详细描述。编程的时候需要反复查询这个手册。 |
数据手册 |
功能概览 |
主要讲这个芯片有哪些功能,属于概括性的介绍。芯片选型的时候首先看这个部分。 |
引脚说明 |
详细描述每一个引脚的功能,设计原理图的时候和写程序的时候需要参考这部分。 |
|
内存映射 |
讲解该芯片的内存映射,列举每个总线的地址和包含有哪些外设。 |
|
封装特性 |
讲解芯片的封装,包含每个引脚的长度宽度等,我们画PCB封装的时候需要参考这部分的参数。 |
一句话概括:数据手册主要用于芯片选型和设计原理图时参考,参考手册主要用于在编程的时候查阅。官方的这两个文档可以从官方网址里面下载:http://www.stmcu.org/document/list/index/category-150,也可以从我们配置的光盘资料里面找到。
在数据手册中,有关引脚定义的部分在Pinouts and pin description这个小节中,具体定义见表格 46。
表格 46 数据手册中对引脚定义
表格 47 对引脚定义的解读
名称 |
缩写 |
说明 |
① 引脚序号 |
阿拉伯数字表示LQFP封装,英文字母开头的表示BGA封装。引脚序号这里列出了有8种封装型号,具体使用哪一种要根据实际情况来选择。 |
|
② 引脚名称 |
指复位状态下的引脚名称 |
|
③ 引脚类型 |
S |
电源引脚 |
I |
输入引脚 |
|
I/O |
输入/输出引脚 |
|
④ I/O结构 |
FT |
兼容5V |
TTa |
只支持3V3,且直接到ADC |
|
① |
B |
BOOT引脚 |
① |
RST |
复位引脚,内部带弱上拉 |
⑤ 注意事项 |
对某些IO要注意的事项的特别说明 |
|
⑥ 复用功能 |
IO的复用功能,过GPIOx_AFR寄存器来配置选择。一个IO口可以复用为多个功能,即一脚多用,这个在设计原理图和编程的时候要灵活选择。 |
|
⑦ 额外功能 |
IO的额外功能,通过直连的外设寄存器配置来选择。个人觉得在使用上跟复用功能差不多。 |
3. 开始分配原理图IO
比如我们的F429至尊版使用的MCU型号是STM32F429IGT6,封装为LQFP176,我们在数据手册中找到这个封装的引脚定义,然后根据引脚序号,一个一个复制出来,整理成excel表。具体整理方法按照表格 44 画原理图时的引脚分类即可。分配好之后就开始画原理图。
4.3.4 PCB哪里打样
设计好原理图,画好PCB之后,需要把板子做出来,进行软硬件联调。首先得PCB打样,这里我推荐一家我经常打样的厂家,深圳嘉立创(JLC),行业标杆,良心价格,网址:http://www.sz-jlc.com。一块10CM*10CM以内的板子,三天做好,50块就可以搞定,还包邮,简直便宜到掉渣。如果你足够懒,不想自己焊接电阻电容二三极管什么的,嘉立创还可以帮你把PCB样板上的阻容贴好给你,打样贴片一条龙。
样品做好了,软硬件什么都OK,要小批量怎么办?还是找JLC。
第4章 初识STM32的更多相关文章
- 第9章 初识STM32固件库
第9章 初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- 第9章 初识STM32固件库—零死角玩转STM32-F429系列
第9章 初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- 第4章 初识STM32—零死角玩转STM32-F429系列
第4章 初识STM32 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege 本章参考资 ...
- Java 面向对象编程——第一章 初识Java
第一章 初识Java 1. 什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...
- 第二章 初识JSP
第二章 初识JSP 一.JSP简述 1.是JSP JSP是指在HTML中嵌入Java脚本语言.全称(Java Server Pages) 当用户通过浏览器访问Web应用时,使用JSP容器对请求的J ...
- redis实战笔记(1)-第1章 初识Redis
第1章 初识Redis 注:本书在redis3.0版本的,比如redis3.0以后支持服务端集群.3.0之前只能客户端分片. 本章主要内容 1.Redis与其他软件的相同之处和不同之处 2.Re ...
- 第一章 初识shiro
shiro学习教程来自开涛大神的博客:http://jinnianshilongnian.iteye.com/blog/2018936 第一章 初识shiro 简单了解shiro主要记住三张图即可. ...
- Cocos2d-x 3.0 红孩儿私家必修 - 第一章 初识Cocos2d-x 3.0project
第一章 初识Cocos2d-x 3.0project Cocos2d-x 3.0出来了,听说与之前版本号相比修改较大 做为一个游戏开发人员.我们应该欢迎Cocos2d-x持续的更新和强大,Coc ...
- C语言编程入门之--第一章初识程序
第一章 初识程序 导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言 ...
随机推荐
- Python并发编程(守护进程,进程锁,进程队列)
进程的其他方法 P = Process(target=f,) P.Pid 查看进程号 查看进程的名字p.name P.is_alive() 返回一个true或者False P.terminate( ...
- 设计模式(18)--Memento(备忘录模式)--行为型
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.模式定义: 备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式. ...
- equals与hashcode区别
哈希码: hashCode的作用是用来获取哈希码,也可以称作散列码.实际返回值为一个int型数据.用于确定对象在哈希表中的位置. Object中有hashcode方法,也就意味着所有的类都有has ...
- web api 权限控制
https://www.cnblogs.com/landeanfen/p/5287064.html 我只是个搬运工, 我只想存个档
- python学习笔记之——python安装mysqldb后,pycharm导入还是报错问题
在安装mysqldb过程中遇到,本来已经安装了mysqldb了,但是在pycharm中import MySQLdb还是报错找不到该模块的问题.解决方法如下:1.file->settings ...
- 准备开发一个运行在Android上的JavaME模拟器
在一个虚拟机A上运行另外一个虚拟机B看起来是挺不靠谱的一件事,在手机上运行某个虚拟机也不怎么靠谱.并且如果虚拟机A运行在手机上这个听起来就更不靠谱了.但是很多人就在做这样的事.比如在在手机上运行DOS ...
- Flutter 修改TextField的高度,以及无边框圆角
修改TextField的高度可以通过decoration: InputDecoration的contentPadding进行修改,代码如下 new TextField( decoration: Inp ...
- 安卓测试【二】eclipse离线安装ADT
为什么要配置ADT呢?这就相当于在eclipse里插入插件,可以编译android的相关程序. 为什么要离线呢?一个字,快!我在线装了一个下午的ADT,不是报错就是慢的跟头老牛似的. 所以我在网上下了 ...
- Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
此文的代码在Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果代码的基础上进行修改,如果你没有看过本系列的第一篇文章最好先看一看.Co ...
- [Objective-C] 从NSInteger说开去
在iOS开发过程中,我一直习惯于使用C语法里的基本类型,而很少用(除非必须使用)Foundation的数据类型.最近看了一些资料,发现自己这样写可能有风险,虽然目前没遇到过相关的问题,但这是非常需要注 ...