Nucleo-L031K6评测(1)
一、硬件分析1.1 老生常谈之一触即发话说三月七号,快递小哥送来了期待已久的小板子。
这是逛ST论坛近一年收到的第一块板子,甚是激动。
先上一张为拆装的图,盒子还是经典的nucleo塑料盒子的包装。甚是简介,可是不知这包装能不能讲解。好歹,咱nucleo也该有几十万套发给用户吧。
包装的大小相对于传统的nucleo64没有太大的变化,后来才发现这样做的原因可能是为了展示外包装上的信息吧。
但还好在评测之前已经提前了解了这块板子,详见我的上一篇帖子【写在评测之前】。
这样我就可以理性的评测这块板子。首先是看看板子的大小。
有人说这笔arduino的nano还小,不行的是我手边是一个国产的nano。请看一下大小,不知道官方的大小如何。
但是,老实说nucleo可是提供仿真调试的好吧。nano只有一个ft232虚拟出来的串口,除了能够烧写似乎没什么用处。
从pcb板子的质量上,nucleo的设计制造难度不是一丁点。
在上一张和硬币比大小的图片,你就看出到底nucleo有多小
。
看见没,比五毛钱小多了。我可没用什么五毛钱的特效。这是货真价实的小。
在盒子的包装上印有mbed或者说arduino nano的接口信息,请看:
我确认是一样的,所以设计者为了兼容简单架构的avr也是蛮拼的。但是这里有一个问题是,为什么非要兼容Arduino的nano呐。
如果你注意瞧,你就会发现D0,D1和D3/4/5...什么的不在一起,而且顺序是反的。想必这也是当年avr为了兼容之前的做出的妥协。咱完全不用这样做。毕竟mbed有笔试Arduino,语法的复杂性和易用性都不在一个档次。
老实说,这些年STM32如果做一个调查就会发现我们使用nucleo板用作mbed的设备比例一定非常少。我们购买或者使用nucleo板子的原因是它便宜,简单易用。就像Discovery的板子,我们使用所谓的蝴蝶接口多吗?
所以说我建议ST不放根据自己芯片和引脚的特色,设定一套自己的板子接口。这样更方便开发者学习和使用。比如nucleo32/64/144的引脚和芯片特点制定三种引脚规则。引脚多的可以兼容引脚少的。使用这样的方式,没准能够更好的让用户掌握STM32独特的接口。怎么使用DMA,怎么使用更复杂的TIM,SDIO,LTDC如何使用。这样开发者会根据接口安排自己的学习路径,会不会更好呐?
上面只是我自己的看法,不知道各位蝴蝶粉没有何看法?
在讲L031K6拿出来的时候遇到点小麻烦,据你所知nucleo64板子比较大,靠两边的卡扣扣着时很容易就能取下。但是nucleo32却不是,需要从板子的后边用力,挤压包装后才能取出。为此我擅做主张给Nucleo发了个红腰带。见下图:
正面
背面
正面是不是也挺好看,背面很实用一拉板子就出来了。【nucleo的设计师别打我:lol】
然后就是连接上电脑了,出现两个相关的设备枚举。对了这次nucleo的USB口换成了micro-B的接口,之前的mini的。micro-B接口的线缆想必大家都不少吧,因为智能手机在type C之前主要就是这种标准的线。(Type A to micro-B)
另外在磁盘中添加了一个40kb的空间,应该是从f103片子的flash里面划出来的。曾经有人写了一篇如何通过编写一个类似nucleo这样的方式烧写程序的文章,大家可以搜索一下。个人觉得这样的方式挺好的。在details的文件中还可以看到板子或者固件烧写的日期。
1.2 板子的设计
下面再来说说板子的设计,老实说我最赞叹的是布线师的技术。自己平时线一多就选择自动布线,然后取消布线根据布线的情况调整原件位置。接着再自动布线,如此反复之后。再手动布置一些主要的线,确认设定的规则之后再自动布线,后期对一些过孔和比较奇特的布线手动做一些调整。总感觉这样的方法很不专业。不知道nucleo的设计师是如何搞得。起初我还以为他们会用六层板什么的,后来才发现他们用的是四层板。在官方的PCB图纸上给出了明确的解释,请看。
如果你看原理图还会发现在电源层还根据电源的不同做出了一些分割。我觉得那些想学习绘制板子的,可以从这张图开始。
图纸给的是用Altium Designer绘制的,这也是许多朋友最初学习绘制板子时用的软件。PCB板子或者说PCB工程做的非常专业,必须多大学老师用的正规的多。这套图的原理图分成了三张,第一张是总图用于将两块原理图连接成一张大的原理图。同时也让接口关系更加明显。
电源的设计也很专业,朋友们注意一下官方对于电源的划分和规则,在上一篇文章中我做了梳理,希望能帮到你。
另外BOM表原件也很全,官方实际上提供给大家一个设计参考的示例。
这里提供官方资料的下载,为了下到最新的资料,其实建议大家到官方搜索下载,这样可以download一些自己需要的。
1.3 芯片架构的变化(相对于自己熟悉的F401)
STM32L031K6是Cotex-M0+的架构,而F401是Cotex-M4F架构。两者有区别是正常的。但是抛开内核不说外围的变化还是很显著的。下面提供两两张来自官方文档上的架构图,你会看出一些明显的区别。在下面给给出自己看到的区别,朋友们还可以给点指点,让我们找出一些其它的变化。
F401框图
F103框图
L031框图
仔细观察三幅框图会发现GPIOA/B...等几个接口在三种架构上的位置不同。
F401在AHB1总线上,F103在APB2上,L031在内核上直接相连。这三种连接方式有何区别,请高手给一个解释。
我猜测直接将L系列单独将GPIO摘出来是低功耗的考虑。我私下里看了一下L476和L162的框图,发现这两者的GPIO端口都很独特。请高手给指教一下架构设计的要点和作用。
1.3 ADC变化说明在后面的实验中我会用到ADC来做两个实验,所以先要了解一下ADC的架构。忽然发现这里ADC的架构还是有些变化的。
在L031中ADC可以配置两个时钟,一个来自PCLK,被称作同步模式,另一个时钟源来自HSI,称为异步模式。两者的时钟源都可以分频,见下图方便理解。
这两个时钟源的作用在参考手册中有介绍,大致的意思是:
1> 同步模式下ADC模块的时钟是有APB驱动的,在定时器timer触发时可以保证时钟的同步。
2> 异步模式下,不能保证于触发源时钟的同步,但是可以获得更高的时钟频率。
1.4 低功耗部分
在外围接口中有两个比较明显的低功耗接口,那就是LPUART和LPTIM接口。此外M0+的多种工作模式也保证了低功耗。
这里列举一下L031为了保证低功耗采取的策略。
1、采用动态的电压定标策略:
1> VDD在 范围,CPU运行频率高达32MHZ
2> VDD在 范围,高达16MHZ频率
3> VDD在 范围,高达4.2MHZ频率
2、支持七种低功耗模式:
1> sleep mode :CPU停止,外围可以继续工作,也可以唤醒CPU。
2> Low-Power run mode:
3> Low-Power sleep mode:
4> Stop mode with RTC
5> Stop mode without RTC
6> Standby mode with RTC: standby mode是功耗最低的模式
7> Standby mode without RTC
这几种模式的介绍可以看STML031手册的第16页。
再来谈一谈LPUART和LPTIM吧。首先看上面的框图可以了解,两者都挂在APB1上。在这个时钟源下还挂有RTC和IWDG。
LPUART可以在stop模式下唤醒CPU,在32.768khz时仍然能够提供高达9600的波特率,这种模式在低功耗通讯时尤其重要。
LPTIM也可以在stop模式下唤醒设备。
其余的不同需要再细细研究一下。
因为本篇篇幅太长,后面还有一篇评测从软件和实验上做一些评测。
请看下篇:Nucleo-L031K6评测(2)
相关推荐
STM32单片机官方开发工具一览
STM32评估开发板列表
ARM Cortex-M内核STM32 单片机产品全览
STM32微控制器参考设计
本帖最后由 watershade 于 2016-3-14 12:11 编辑
这一篇是简单的一些关于板子的梳理,不涉及板子的使用环节。但毕竟是评测吗,由浅入深,由表及里。后面还会有至少一篇评测。
页:
[1]