1.
本文为微信群管理员小磊投稿作品,作者计划编写一系列文章,该篇为第一篇,如果有做STM32的同学这将是一个非常好的系列教程,欢迎关注。我15年刚建立了一个BLE的QQ群,很有幸认识了小磊同学,一个非常踏实的技术型男,当然还有好几个非常不错的管理员,在QQ群里嗨得飞起,后面因为公司原因不能在公司登录QQ,我就基本很少在QQ群露面,里面的管理都是让这几位哥们打理了。最近小磊说他也很喜欢写技术文章,所以就有了下面这篇开头,一个好的开头是成功的一半,大家拭目以待吧,觉得不错,请帮忙转发支持一下,谢谢。
2.【作者简介】
各位攻城狮朋友,大家好,我是小磊,苏州人,工作也在苏州。不知不觉入行嵌入式已经若干年了,嵌入式这个行业是我始终热爱的事业并且为之不知疲倦地学习和工作。我的工作岗位是苏州某公司的嵌入式部门主管,本身是硬件工程师,但是一直都是软硬件工作都做,甚至软件比硬件做的都多。
嵌入式的书面定义为:“嵌入式系统是以应用为中心、以计算机技术为基础,软、硬件可裁剪,适应于应用系统对功能、可靠性、成本、体积、功耗等方面有特殊要求的专用计算机系统”。在不断地实践中,我深刻体会到另一句比较抽象的话:“硬件是基础,软件是灵魂”。
明明毕业好多年,但仍似学生,这大概是对嵌入式人的很形象的描述了。从事这个行业,似乎是永远到不了登峰造极这么一种境界,也是这种情况,吸引了无数人不断探索、砥砺前行。
再来说说《和我一起探索嵌入式》,这是我利用闲暇时光,记录和分享有关嵌入式专业技术的系列文章的总称。在其下,我将会不定期写下各篇文章,类型不定,各篇文章之间没有关联性。文章的主要方向包括:软硬件体验、技术探索、经验分享、教程等。所有文章均为本人原著文章,不会有任何抄袭,也不会转载或引用其他人的文章给大家看。由于时间关系,所有文章将以连载的形式出现。
在此声明,欢迎大家转载分享我的文章,但请一定要注明我使用的名字和邮箱。
我使用的名字:小磊
我使用的邮箱:j9tanke@live.com
3.【01硬件介绍】
一、前言
STM32系列芯片在嵌入式行业的流行程度堪比肯德基在中国的流行程度。STM32系列芯片是很多嵌入式人入门的必学芯片,甚至有人跳过51直接学STM32。STM32的流行是不无道理的,其有着良好的稳定性、广泛的适用性、友好的开发环境、丰富的开发资源和不错的价格优势。
当然,其流行的同时,和肯德基一样有“富贵病”。怎么理解这个问题呢?简单来说,就是芯片价格比较昂贵,很多型号数量稀少,批量供货不稳,目前国内已经有很多更高性价比的替代方案。
在机缘巧合下,我买到了一块价格不错的全新Discovery开发板,这是我第一次买这种原厂板子,芯片是STM32L496AGI6。写这篇文章的目的在于和大家一起体验一下这块板子,顺便分享我写的一种手环系统框架。开发板使用的这款芯片是没有机会实现在产品上量产的,所以请大家跟我一起来学习体验即可。
本篇文章整体安排如下:
01硬件介绍
02软件介绍
03硬件开箱体验
04软件体验
05项目实战—智能手环01
06项目实战—智能手环02
07项目实战—智能手环03
08项目实战—智能手环04
09项目实战—智能手环05
10项目实战—智能手环06
具体如下:
在【01硬件介绍】篇中,我将详细地为大家介绍芯片、开发板以及板载资源。
在【02软件介绍】篇中,我将详细地为大家介绍软件开发环境和软件开发资源。
在【03硬件开箱体验】篇中,我将和大家一起开箱一块全新的开发板。
在【04软件体验】篇中,我将和大家一起体验出厂自带的软件系统。
在【05项目实战】至【10项目实战】篇中,我将分享一种手环系统框架,并将之开源。
二、STM32L496AGI6芯片介绍
STM32L496AGI6这款芯片是意法半导体(ST)推出的一款超低功耗(L系列)微控制器(MCU),其使用了ARM Cortex M4F内核,主频可达到80MHz。其Flash是1MB,SRAM为320kB,且可以外扩RAM。除了MCU常见的外设例如GPIO、TIMER、SPI、USART、IIC、CAN、SDMMC、RTC、ADC、OTG_FS等基本都具备之外,其还具备FSMC、QSPI、DFSDM、ART、DCMI、TSC、SAI等特性,而这些稍微独特的特性中的一部分,导致其特别适合作为可穿戴设备的主控芯片。下面介绍一些关键的特性:
2.1自适应实时内存加速器(ART)
这一功能仅在STM32系列部分M4、M7内核芯片中存在,旨在解决CPU取指快而Flash读取慢这一矛盾。使用这一技术后CPU频率达到80MHz时从Flash取指执行仍能实现0等待。
2.2灵活的静态存储控制器(FSMC)
这一功能在很多引脚较多的STM32系列芯片上都会有,其可以并行访问外部的存储器,包括SRAM、PSRAM、NOR Flash、NAND Flash、LCD等,大幅加快外部设备静态存储器的读写速度。具体地应用在LCD应用场景时,可以减少CPU运算,提高LCD刷新率。
2.3六线SPI(QSPI)
相比于传统的四线SPI(CS、SCK、MISO、MOSI),六线SPI(CS、SCK、IO0、IO1、IO2、IO3)使用并行传输提高了原来四线SPI的读写速度。速度提升比较明显,四线SPI一个时钟周期内只能传输1bit数据,而六线SPI能够传输4bit数据。由于受SPI Flash元器件的影响,这类Flash的写入速度不会提高,但是读取速度会有大幅提高。
2.4低功耗
作为STM32L系列中的一款芯片,STM32L496AGI6同样具有非常优秀的低功耗特性。理论上讲,该芯片在关机模式仅耗电25nA,在等待模式仅108nA,在等待模式同时仅让RTC保持工作仅426nA。当芯片内部电源工作在LDO模式时,具有91uA/MHz的功耗特征,当工作在DCDC模式时,具有37uA/MHz的功耗特征。
虽软这款芯片在性能、功能和低功耗等诸多方面具有不错的特性,但是我们仍然不能将其使用到实际产品中去。我在此提出三点,一是价格,二是供货,三是封装,这三点都是造成不能使用该芯片的原因。前两点很容易理解,第三点具体是这样的,这款芯片是UFBGA169封装,引脚间距0.5mm,除外圈引脚外必须打盘中孔才能扇出,其制板难度已经让很多板厂不能受理,其制板费用已经让很多公司不能接受。
三、开发板介绍
我使用的开发板全称是32L496GDISCOVERY,是意法半导体原厂设计和销售的开发板。其功能十分全面,板级设计还不错(如果像我一样有点强迫症,可能觉得很糟糕),可拓展的功能也较多,更重要的是使用很方便。
如果您英文阅读没有障碍,请您移步ST官网,亲自去下载开发板相关资料阅读,文档编号是UM2160。如果您英文阅读水平有限,请您看我下文简介,应该也能让您足够了解这款开发板了。
请看下图(开发板功能框图):
下面依次介绍一下这些功能。
3.1调试器ST-LINK
在这块开发板上集成了一个ST-LINK调试器,使用标准的ARM JTAG-SWD协议。他的功能和JLINK是一样的,适用范围没有JLINK广泛,毕竟是意法半导体为自家芯片打造的调试器,没必要强调普适性。使用的芯片是LQFP48封装的STM32F103CBT6,一款销量火爆的芯片,价格便宜,供货量大。调试器与主芯片STM32L496AGI6的连接中有一个拨码开关隔离,通过拨码开关可以完全阻隔调试器与主芯片的连接,方便测量主芯片的功耗。其次,当拨码开关关断时,调试器能够通过一个引出端口给其他板子调试,这样自己又多了一个ST-LINK可以使用了。另外,调试器还有一个串口功能,与主芯片UART2相连,可以方便的输出调试信息。
3.2存储
开发板存储资源丰富,共有三处,一是PSRAM,二是SPI Flash,三是SD卡。
第一处,PSRAM,使用的是ISSI公司的IS66WV51216EBLL-70BLI,1MB空间,48Ball BGA封装。相对于主芯片的宽电压(1.71-3.6V)特性,该PSRAM电压范围仅在2.5-3.3V之间,使用时需要格外注意。
第二处,SPI Flash,使用的是台湾旺宏电子股份有限公司的MX25R6435FM2IL0,8MB空间,SOP8封装。这款Flash也具有宽电压的特性,1.65-3.6V。同时,其支持QSPI接口,实际上与主芯片的连接方法也被设计为QSPI方式连接,所以读取该芯片内存储的数据能够有较快的速度。
第三处,SD卡,使用的是小卡TF卡。SD卡与主芯片通过SDMMC接口连接,其读写速度远超SPI连接方式。
3.3一些有趣的外部设备
开发板上有一些有趣的外设,包括:Joystick(摇杆),LCD,LED,Audio,Microphone。其中,Audio使用的是CS42L51音频编/解码芯片,与主芯片通过IIC和SAI(数字音频接口)接口连接,外部是一个3.5mm通用耳机接口。Microphone部分使用的是意法半导体自家的数字式的全向音频传感器MP34DT01TR,两个MP34DT01TR作为左右通道,且依托主芯片带有的DFSDM(数字滤波器)功能,实现外部音频采集。LCD部分使用的是一块1.54英寸TFT LCD屏幕,屏幕之上有一块电容触摸传感器。
3.4极其丰富的接口
开发板有很多接口,用于拓展各种各样的模块。主要的接口有三种,Arduino、Pmod、STmod+。
Arduino真的是一款风靡全球的开源硬件了,与其搭配的模块也是各种各样层出不穷,WiFi模块、BLE模块、电机驱动模块、温湿度传感器模块、以太网模块等等。在这块开发板上Arduino接口是标准的Arduino UNO接口。
Pmod是Digilent制定的拓展模块接口规范,在国内几乎无人使用。
STmod+是意法半导体自己提出的一种拓展模块的接口规范,在ST官网上能够找到几种模块可以使用,但是价格昂贵。另在国内某些电商平台上你能找到STmod+接口转Arduino UNO接口的模块在销售。
另外,在开发板上还有一个相机接口和一个USB-OTG接口,相机数据线宽度为8bit。
3.5功耗测量
意法半导体的Discovery开发板都带有简单的功耗测量功能,这块板子也不例外。在这块开发板上,ST使用自家的STM32L152CCT6芯片设计了一个简单的功耗测量仪器,能够测量60nA至50mA范围内的电流。如果超过这个测量范围,需要通过外部电流表来测量。
完,各位共勉~
推荐阅读
我就随便BB一下
谁都能看懂的网络模型知识
没有梦想,你跟咸鱼有什么分别?
华为不做黑寡妇,开源编译器,与友商共建安卓性能
C 语言内存分配
继续推荐下我的知识小密圈
我的知识小密圈
