打印
[STM32F1]

拇指兄弟的比拼战——Arduino AVR VS Arduino STM32

[复制链接]
2700|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2016-4-22 21:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
拇指兄弟的比拼战——Arduino AVR VS Arduino STM32

万事开头难,写一篇测评也是如此,大家都知道,这开头是废话,但是也是主题,不说不可。于是我根据这次要说的总体风格,就模仿一下鲁迅先生的开头吧。

我手里有两块开发板,一块是Arduino开发板,还有一块也是Arduino开发板。

Arduino一般是一个带有AVR单片机的完整系统板(一般的,也有Arduino用arm处理器,比如用STM32)。Arduino更倾向于创意,它弱化了具体的硬件的操作,它的函数和语法都非常简单,而且非常“傻瓜”。因此,Arduino在创客的世界是一个非常方便轻松实现“想法”的神器。

俗话说“够用就好”,而大多数应用环境并不是要求十分高大上的,而且高大上是有成本代价的,据说各种火星探测器(比如说勇气号和好奇号)的处理器性能都没有从前的诺基亚板机处理性能高。因此我们这里选择两块非常“下里巴人”级别的Arduino来一睹Arduino的魅力,并有意选择了搭载AVR单片机和搭载STM32单片机的Arduino来用心把玩。

经过笔者一阵搜刮,找到了两块拇指型的Arduino来把玩,这样也更加经济实惠,更贴合初学者以及学生,好用不贵。

这两款Arduino开发板就是:搭载ATtiny85的Digispark和搭载STM32F103的Maple mini。

我们先来看看两只靓仔的靓照吧,素颜的。

是不是以为很大呢,非也非也,我们把这俩宝贝放到笔记本键盘上看看就知道了。如下图所示,素颜实拍。

看出来了吧,拿自己的小拇指跟笔记本键盘的空格键比较一下,是不是两个中比较大的Maple mini 还没有你的小拇指长呢。我们再来对比一下搭载的两个单片机的主要参数。

根据基本的配置和封装来看两者相差十万八千里的。而又具备外观上的共同点:小巧。那么开发上都是基于Arduino标准的,会是一样吗?接下来我们一起分别讨论一下开发过程与开发环境。

Digispark(ATtiny85)软件开发流程

先来介绍一下AVR:AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片机。AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。 1997年,由Atmel公司挪威设计中心的A先生和V先生,利用Atmel公司的Flash新技术,共同研发出RISC精简指令集高速8位单片机,简称AVR。至今,AVR将近20岁。

Digispark是一款以ATtiny85为主控MCU的Arduino开发板,不过属于第三方的,因此官方出品的Arduino开发软件是不提供该开发板的支持的,因此需要我们对Arduino IDE进行改造,安装额外的支持包。

下载并安装完成Arduino1.6.8版本后,启动程序:

1.单击“文件—>首选项—>附加开发板管理器网址:”输入

htp://digistump.com/package_digistump_index.json

如下图所示,然后单击“好”。

2.单击“工具—>开发板(开发板管理器)”,弹出管理器选项卡,等待更新索引完成后,类型选择“贡献”,如下图所示,选择Digistump AVR Boards by Digistump后点击安装。

等待完成后,我们开发环境也就搭建好了,接下来进行安装驱动DigisparkWindowsDriver 。下载地址附在测评最后。

在正确安装驱动程序后,在设备管理器会多出一个新的设备:

libusb-win32 Usb Devices/Digispark BootLoader

接下来断开开发板与PC机USB连接线,我们马上开始编程操作。

打开Arduino软件,单击工具—>开发板—>Digispark(Default – 16.5mhz),如下图所:

编程器选项我们不用管,默认就行,这个不影响后面的操作。

接下来单击 文件—>示例—>第三方库示例—>Digispark_Examples—>Start

这样就新建好了一个示例的工程,如下图

程序有了,那么符合电路图吗?我们再来看看电路原理图。

我们看到程序中,对端口0和1配置的高低电平交替并延时,也就是如果接LED的话表现为闪烁。那么电路原理图中给出的只有端口1(PB1)连接了LED,且高电平点亮。我们权且不动这个代码。接下来编译烧录测试。




沙发
gaoyang9992006|  楼主 | 2016-4-22 21:09 | 只看该作者

我们这个时候还是不应该把开发板连接到PC的USB接口的,我们要先进行编译并上传,如下图所示。

按下上传选项或按钮后,系统即对代码进行编译,编译后出现如下图提示信息,要求连接设备的提示。

根据提示连接开发板和电脑USB接口,在等待几秒后,完成代码上传到MCU,即出现如下提示的成功消息。

说明:根据这个例程,我们可以知道在该环境下,端口名字就是:0~5对应P0~P5六个端口。如何重新给该端口起个名字呢?查找例程,可知通过int xxx =###的形式来重新定义端口的名字,如下图所示。

我们按照例子重写刚才的程序测试,如下图,证明这个思路是正确的。

关于管脚复用的其他功能,我们这里不再赘述,请根据相关头文件的配置来使用其他功能,并参考相关的Arduino软件编写相关教程,以及其他的示例程序。

Maple mini(STM32F103)软件开发流程

Maple Mini是Leaflabs推出的Maple的微型版本,其大小相当于一片口香糖。尽管尺寸很小,Maple Mini上还是有一个mini-B型USB接口,有LDO稳压器,可以非常方便的作为一个ARM处理器平台。Maple Mini适用在对空间要求苛刻的场合,也可以插在面包板上做原型开发。

由于官方没有提供移植开发环境至Arduino IDE官方最新版的json文件链,因此我们只能找到Leaflabs移植好的变种Arduino—maple-ide-0.0.12。这也是目前最新的一个版本。经笔者测试兼容Win10,如果使用的是Win8.1或更新版本的Windows系统,在安装驱动前需要禁用驱动程序强制签名。具体步骤请在搜索引擎搜索“禁用驱动程序强制签名”。

下载好Maple IDE后,解压缩,其中drivers文件夹就是所需要的驱动程序,连接PC和Maple mini开发板,打开设备管理器。

选择Maple 003,单击右键手动安装驱动程序,如下图,找到驱动文件夹。

完成后,感叹号消失,表明驱动安装成功。

接下来启动Maple,选择开发板,建立示例程序。

单击:Tools—Board—LeafLabs Maple Mini Rev2 to RAM(或Flash)。注意到这里有两种选择,一个是下载到RAM,一个是把目标代码下载到Flash。有什么区别呢?下载到RAM后运行速度快,断电后呢,程序不保存,下载到Flash断电后程序不消失,重新上电可以继续运行。

接下来选择示例程序。

单击File—Examples—Digital—Button。这里我们选择个按键例程测试,见下图,其他的例程也都是可以的。

之后弹出例程窗口,我们可以看到界面是英文的。

如上图所示,其中向右的箭头就是Upload(上传)按钮,我们现在可以连接Maple mini和PC。单击Upload按钮。

之后在下面绿色消息窗口显示处理进度与内容。

下面我们通过按下开发板的唯一用户按键试试。

我们回过头来再来看代码中的内容,采用了宏定义替代了Arduino惯用的数字编号,那么在哪儿找到这个宏定义的文件呢?答案就在\hardware\leaflabs\cores\maple\maple_mini.h头文件。如下图所示。

如上图所示,根据头文件中的宏定义,可以看出来,按键是在32号管脚,LED是在33管脚,对照开发板上标注的编号,刚好对应。我们根据这个头文件也知道了,如果使用其他编号的管脚,可以使用什么宏定义来替代管脚编码。而对于其他的操作也可以在同一文件夹下的其他头文件中找到,比如isButtonPressde()、toggleLED()等,这些均在io.h文件。

写到这里,大家应该发现了吧,不管Arduino怎么变化,总之都是在Arduino技术规范内的,不管是AVR的八位机,还是ARM的32位机器,只要在这个标准内,都可以用简单的Arduino标准,来操作。





使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2016-4-22 21:09 | 只看该作者

我们也可以清楚的看出,这两个开发板虽然核心千差万别,但是开发流程几乎一模一样,除了Maple mini需要使用变种版的Arduino来实现外,而对于寄存器和外设的处理方式都是符合Arduino标准的。我们唯一要做的就是了解开发板提供了哪些资源,这些资源在Arduino的框架里定义成了什么名字,另外就是根据开发板的原理图,加入自己需要的部分。而对于想全面掌控MCU系统的每个细节的人,还是需要按照传统的方法来做,不过Arduino的确缩减了嵌入式的学习所用的时间成本,以及更加方便的使用体验,更适合要求不是非常非常高的用户和应用的使用。

另外本测评中所选用的开发板上,均是只有一片MCU,无需使用编程器进行烧录,因为他们都内置了Bootloader程序,这也做到了真正的单片机的单片系统应用。

附件:http://pan.baidu.com/s/1c2DdPyK


使用特权

评论回复
地板
天灵灵地灵灵| | 2016-4-24 08:33 | 只看该作者
这么好玩。

使用特权

评论回复
5
天灵灵地灵灵| | 2016-4-24 08:34 | 只看该作者
分享的内容很不错,下载地址里有难以找到的软件,学会怎么通过json安装环境了。

使用特权

评论回复
6
戈卫东| | 2016-4-24 09:20 | 只看该作者
厉害

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1958

主题

15904

帖子

207

粉丝