以Arduino之名—NuMaker UNO开发板评测

不看不知道,看了吓一跳啊!

另一方面,各厂商推出的各种嵌入式开发板,无不以兼容Arduino接口为荣,虽然各厂商力推自己的接口,但仍然为Arduino保留了一份兼容接口。


此次新唐科技推出的NuMaker UNO则更直接,在软件与硬件两方面直接以Arduino为原型,用自家的NUC131SD2AE打造了一款全新的开发板,硬件以Arduino UNO R3为参考,软件也是直接使用Arduino IDE来进行开发。

下面实际领略下这款以Arduino之名发布的评估板。

使用可回收塑料包装,看到产品型号为NK-UNO-131,NuMicro家族新产品,取名很明了,NK就是NuMaker,UNO应该就是Arduino UNO吧,131表明MCU用的是NU131的MCU。

包装背面列出了快速上手指南及开发板的一些主要特性,如硬件特性及软件环境等,为用户指明从哪里开始。

PCB设计风格及外观与ST的NUCLEO64类似,总体分两大块,左边部分是MCU及引出的接口,右边是新唐的Nu-Link-Me,兼有供电/下载/调试的功能。

背面除了一些丝印标记,没有其他任何元器件,NuMaker UNO本身元器件并不多。

NuMaker UNO内部与Arduino却是大大的不同。因为NuMaker UNO使用的是新唐自己的MCU,另外在硬件接口方面也融入了自己的设计理念。

NuMaker UNO上使用的MCU型号是NUC131SD2AE,该MCU基于32位ARM® Cortex™-M0内核,32位MCU已成现代MCU的主流,传统的8位和16位虽还在使用,但已有慢慢淡出江湖的趋势。

NUC131SD2AE是新唐NUC131家族中的高端产品,最高工作主频50MHz,内置68KB Flash存储器,8KB的SRAM,可工作于2.5V~5.5V电压下。


NUC131SD2AE内部包含丰富的片上设备,主要包括:


  • 高达8路ADC通道,12位分辨率,采样率最高达1MSPS;

  • 24路PWM输出或4路互补PWM输出功能,支持捕获中断功能,可以用来控制电机等;

  • 1组CAN接口,1组SPI接口,2组I2C接口及6路UART接口。


NUC131SD2AE的封装形式为LQFP 64pin,大小约为7x7mm。NUC131SD2AE主要面向工控、通信子系统及电机控制等领域。


NUC131SD2AE内部逻辑框图功能如下。

Arduino UNI R3上使用的ATmega328P规格为:5V,8-bit, 16Mhz,FLASH及SRAM的大小分别为32KB及1KB,其它资源如PWM/ADC等也相对较少,比较而言,NUC131SD2AE在硬件资源上要胜出太多。

除了MCU的差异,NuMaker UNO在硬件设计上也有自己的理念。下面是NuMaker UNO开发板正面的元器件位置分布,使得NuMaker UNO在兼容Arduino接口的同时又具备了自己的设计特色。

特色之一是供电设计,NuMaker UNO提供了三种供电方式。第一种方式通过Nu-Link-Me来供电,通过LDO输出3.3V电压,通过JPR1可以调整VDD的值是5V还是3.3V,默认值为5V。这种方式兼顾了Nu-Link-Me与开发板的供电,当为首选。


第二种方式是通过开发板上的JP1来实现,通过外部的2.5V~5.5V直接给VDD提供输入源。最后一种方式是通过板载的DC-IN接口,使用7V-12V的外部电源,经转换后输出5V电压,这种方式供电的话需要短接J2,参见下面的电路图

另一个特色是开发板上集成的Nu-Link-Me下载/调试器,同时具备供电/下载/调试的功能,与ST的ST-LINK一样,各领风骚。


一方面,Nu-Link-Me可以通过ICE_VCC给开发板供电,免去了需额外给开发板供电的麻烦。如果要启用该功能,需要将SW2的ICE_VCC拔码开关置于ON的位置,默认处于ON状态。


另外Nu-Link-Me也提供了VCOM即虚拟串口的功能,虚拟串口将USB的RX/TX与MCU的TX/RX连接,MCU可以通过USB与外部设备如PC进行通信,极大方便了下载及调试。

要启用VCOM功能,也要通过SW2上的拔码开关来实现,将SW2上的VCOM_En,VCOM_TX及VCOM_RX均置于ON的位置,默认均已置于ON的位置。

另外开发板也将MCU的所有接口均引出到PCB板上,预留了焊盘,只是没有焊接排针,如果用户需要,可自行焊接,使用标准2.54mm间距接插件即可。

NuMaker UNO不仅仅在硬件上实现了与Arduino的兼容,在软件上亦与Arduino实现了一致,即提供了基于Arduino IDE的开发方式。

接下来体验原汁原味的Arduino开发模式,从arduino.cc下载最新的Arduino IDE, 本文使用的是V1.8.1版本。


打开Arduino IDE之前,先得安装Nu-Link-Me的驱动,安装过程赘述,安装好后的设备管理器应该这个样子。

视频将会同时使用AD09、AD18版本进行操作,对比式的教学,提高软件学习能力。视频中通过基础入门级51单片机开发系统为例进行教学,课程与实际项目相结合,穿插电路设计以及制作工艺等内容,最终绘制出51单片机开发系统套件,输出51单片机开发系统PCB,并且搭配相关元器件,完成最终实物的制作,输出有效的实战项目。后期还会推出关于软件代码设计、单片机开发等相关视频,也是基于此51单片机开发系统,所以是一系列的课程,是本课程最大的特点。

启动Arduino IDE,为IDE准备好硬件平台方面的支持,启动Arduino IDE,选择菜单File/Preferences,在弹出的对话框窗口中红框标注片输入——


https://raw.githubusercontent.com/OpenNuvoton/NuMaker-UNO/master/package_nuvoton_index.json


如下图

该设置为Arduino IDE添加NuMaker UNO硬件支持,然后在Tools菜单下添加开发板支持,在BoardsManager对话框中最下部安装NuMaker UNO的支持包,如下图所示

配置过程还没有结束,接下来还要选择NuMaker UNO作为当前硬件平台,配置通信用的串口名称,如下图


配置部分就算完成了,现在可以新建一个简单的LED测试程序,代码如下

等待编译及下载完成,如下图

应该能看到开发板上的LED灯开始以1HZ的频率开始闪烁!

由于新唐提供了完善了Arduino软件包支持,在Arduino IDE上对NuMaker UNO进行编程非常容易,不过只拿Cortex-M0来点个灯太浪费了,接下来玩一个高档一点的东西,使用定时器结合Arduino的Serial Plotter画点有趣的东西来玩。


上关键代码

使用Timer1来实现定时功能,将时钟频率初始化为12Mhz,不分频,定时周期为1毫秒,然后添加一个中断函数timer_ISR,最后就是启动定时器来实现定时功能。


中断函数的代码如下

void timer_ISR(uint8_t num)

{

count1 ++;

count2 ++;

if(count1 == 499) {

count1 = 0;

digitalWrite(ledPin, level);

level = !level;

}

if(count2 == 49) {

count2 = 0;

flag = true;

}

}

在中断函数里,对两个变量进行自增操作,count1用来点灯(还是点灯!),每500毫秒翻转一次;另一个变量count2用来输出绘制的数据,50毫秒绘制一次。

得到的结果如下

要想更好的了解这些隐藏在Arduino API背后的细节,还是有必要去挖一挖底层的代码,官方的安装脚本将这些底层支持库放在用户的appdata\local目录下,这个目录默认是隐藏的,需要手工输入其位置才能找到,里面包含了CMSIS及其它硬件相关的C库文件,如下

有兴趣的话不妨去挖一挖这些代码,也许会有意想不到的收获呢。

当然,新唐也为NuMaker UNO提供了基于KEIL及IAR相关的开发支持包及例程,从附录给出的NUC131 SDK位置下载为KEIL及IAR准备的例程,官方用户手册也给出了使用方法,这里就不一一介绍了。

总结来说,NuMaker UNO开发板只是以Arduino之名,却行自己设计理念之实,也算是为Arduino家族添加了一款可玩度极高的开发板。


不过从前面二者的硬件比较可以看出,基于ARM Cortex-M0的NuMaker UNO却将之带到了一个全新的高度,最高50Mhz的MCU主频、更大的存储空间及更多更全面的片上外设,同时集成了Nu-Link-Me调试器,再加上与Arduino在软件及硬件方面的全面兼容,广大热爱Arduino的创客及爱好者又多了一个新的选择!

另外,NuMaker UNO开发板的官方报价为72RMB,值得入手!

欢迎点击阅读原文

查看2017 Mouser 智造创新论坛活动


哦对了,关于idea的话嘛建议找找自己生活的痛点,最好还能沾上点人文关怀神马(比如你家里老人或者一些社会残疾人的痛点)。(当然,实际也没必要一定非要沾上单片机神马,没记错某年看到过漏勺加隔档,让一次舀上来的馄饨数目刚好是6个也可以作为一个课题,或者马桶座垫加气弹簧让老人坐便起立更方便也能当课题。)然后切记soopat之类的专利网站别忘了搜下查重,毕竟有些金点子前人指不定就已经想出来过了。

生成海报
点赞 0

thePro

我还没有学会写个人说明!

相关推荐

基于Arduino的显示测量环境数据设计

题目: 基于Arduino的显示测量环境数据设计 目录 基于Arduino的显示测量环境数据设计... 3 第一章 课题任务... 4 1.1课题任务... 4 1.2任务分工... 4 1.3设计条件... 4 第