简介
DFRduino M0是当前唯一一款支持5V标准逻辑电平,采用ARM Cortex-M0内核的Arduino主控板。
当我们使用传统的Arduino UNO来制作项目时,是否会发现UNO的管脚资源太少,处理性能又不够等问题?而Mega系列的主板又太贵,Arduino ZERO系列的主板又不兼容5V的供电设备。这些由于管脚,处理性能,电平差而产生的问题在遇到DFRduino M0之后,都可以迎刃而解。
DFRduino M0采用新唐高性能32位单片机作为处理核心,内置ARM Cortex M0架构,支持5V逻辑电平,拥有1个USB口以及2个硬件串口,拥有31个数字管脚(部分复用)以及6个模拟管脚。兼容Arduino Leonardo管脚封装,并且拥有更多的IO资源和更强大的运算速度。
此外DFRduino M0扩展了一个IIS接口,支持播放录制wav文件。配合高端IIS芯片,可以专业HIFI级的音频体验。
注意:DFRduino M0与官方的Arduino M0并不相同,使用了不同的芯片解决方案,需要独立安装IDE板卡,支持Windows,Linux,MAC全平台,默认1.6.0及以上版本,其他版本IDE可以按照FAQ中的说明自己做一些更改来使用。
产品参数
- 微控制器:Nuvoton NUC123ZD4AN0 (Cortex M0)
- 时钟速度:72MHz
- 工作电压:5V
- 推荐输入电压:7-12V
- 限制输入电压:6-20V
- 数字IO口:31
- 模拟输入:6
- 外部中断:4
- SRAM:20K
- Flash:68K(其中Bootloader占用12K,用户可用代码区占用55K,EEPROM区占用1K)
- EEPROM:1K
- SPI:1个(D14,D15,D16)
- I2C:1个(D2,D3)
- USB串口:1个(Serial)
- 物理串口:2个 Serial1、Serial2
- Serial1 0 (Rx1) 和 1 (Tx1)
- Serial2 24(Rx2) 和 25(Tx2)
- Xbee接口:1个(Serial1)
- 尺寸:68 * 53 mm
- 重量:30g
引脚说明
标号 | 名称 | 功能描述 |
---|---|---|
1 | USB | 供电 & USB串口 |
2 | 电源 | 7-12V外接供电 |
3 | 数字IO 0-13 | 与Leonardo兼容 |
4 | 数字IO 24-31 | 扩展IO与扩展UART |
5 | SPI接口 | D14、D15、D16复用 |
6 | 模拟口 | A0~A5(D18~D23复用) |
7 | MCU | NUC123LD4AN0 |
8 | XBee | Serial1 支持无线下载和无线通信 |
供电
DFRduino M0 Mainboard可以通过USB口和外部电源供电,供电电路可以自己选择使用哪个
接口
我们提供六路A0-A5模拟输入,其他接口兼容官方Leonardo
另外我们还提供了一些扩展接口
这张板子的IO映射表如下
Duino管脚 | 对应的IC管脚 | 复用功能 | 备注 |
---|---|---|---|
D0 | PC4 | RXD1 | INT2 |
D1 | PC5 | TXD1 | INT3 |
D2 | PF2 | SDA | INT0 |
D3 | PF3 | SCL | INT1 |
D4 | PC0 | I2S LRCLK | 无 |
D5 | PC3 | PWM0 | 无 |
D6 | PA13 | PWM1 | 无 |
D7 | PC2 | I2S DI | 无 |
D8 | PC3 | I2S DO | 无 |
D9 | PA14 | PWM2 | 无 |
D10 | PA15 | PWM3 | 无 |
D11 | PB8 | PWM4 | 软件模拟PWM |
D12 | PC1 | I2S BCLK | 无 |
D13 | PB14 | PWM5 | 软件模拟PWM |
D14 | PA10 | SPI MISO | 无 |
D15 | PA11 | SPI SCK | 无 |
D16 | PC11 | SPI MOSI | 无 |
D17 | PB6 | RX LED | 不建议用户使用 |
D18 | PD0 | A0 | 无 |
D19 | PD1 | A1 | 无 |
D20 | PD2 | A2 | 无 |
D21 | PD3 | A3 | 无 |
D22 | PD4 | A4 | 无 |
D23 | PD5 | A5 | 无 |
D24 | PB4 | RXD2 | RX2 |
D25 | PB5 | TXD2 | TX2 |
D26 | PC10 | NULL | 无 |
D27 | PC9 | NULL | 无 |
D28 | PC13 | NULL | 无 |
D29 | PC12 | NULL | 无 |
D30 | PB9 | NULL | 无 |
D31 | PB10 | NULL | 无 |
D32 | PB7 | TX LED | 不建议用户使用 |
让IDE支持DFRduino M0 Mainboard
-
打开arduinoIDE,File->Preferences,,在弹出的对话框中找到Additional Boards Manager URLs。在后面的文本框中填写 https://downloadcd.dfrobot.com.cn/DFRobotDuinoBoard/package_dfrobot_m0_index.json
-
点击OK
-
选择Tools->Board->Boards Manager,arduinoIDE会更新我们的板子信息。
-
在搜索框中输入DFRduino,可以找到下面这个板子。点击Install
- 安装完成后显示为
在IDE中选择M0 MainBoard
- 根据你的系统,完成M0编译链和BSP的安装。再次打开IDE,即可找到对应的开发板DFRobot M0 MainBoard
驱动安装
-
部分Win10电脑会自动安装驱动,不过查看电脑设备管理器会发现是一个通用的COM名称,若系统已安装驱动则可以跳过这一步
-
将标注COM的USB口查到电脑上,会弹出一个未识别的设备,显示如下
- 右击更新驱动程序,选择浏览计算机以查找驱动程序软件
- 选择我们安装的SDK的driver子目录(C:\Users\yourUserName\AppData\Local\Arduino15\packages\nucDuino\hardware\nucDuino\1.0.0\driver)
如果你找不到,从这里下载,(建议使用迅雷新建任务下载,直接点击会变成预览文件状态)
- 选择始终安装驱动程序软件(Win7状态下请选择始终安装该驱动,如遇需要数字签名,请禁用数字签名)
- 安装完成后,效果如图所示
特殊功能使用教程
双物理串口,一个USB串口
- USB串口对应Serial,物理串口1对应Serial1,物理串口2对应Serial2。对于物理串口,用户可以使用usb转串口工具查看打印。
实验代码
void setup() { // put your setup code here, to run once:
Serial.begin(115200);
while(!Serial);
Serial1.begin(115200);
Serial2.begin(115200);
}
void loop() { // put your main code here, to run repeatedly:
Serial.println("I am USB CDC Serial");
Serial1.println("I am Serial 1");
Serial2.println("I am Serial 2");
delay(1000);
}
实验结果
使用USB转串口接口板接收数据,在PC上打开软件观察。在USB 串口,物理串口Serial1和Serial上都可以看到对应的打印输出。
多数字IO
实验代码
int pin;
void setup() { // put your setup code here, to run once:
for(pin=24;pin<32;pin++){
pinMode(pin,OUTPUT);
}
}
void loop() { // put your main code here, to run repeatedly:
for(pin=24;pin<32;pin++){
digitalWrite(pin,HIGH);
}
delay(500);
for(pin=24;pin<32;pin++){
digitalWrite(pin,LOW);
}
delay(500);
}
实验结果
在数字口24-31上,有1HZ的电平跳变输出,接电压表可以看到电压跳变,接led可以看到闪烁。
IIS播放WAV音频
WAV库文件已集成在DFRduino M0 SDK中,无需单独下载。详情可参见Audio Shield WiKi
#include <SPI.h>
#include <Wire.h>
#include <SD.h>
#include <WAV.h>
// set up variables using the SD utility library functions:
Sd2Card card;
const int chipSelect = 4;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("\nInitializing SD card...");
// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.");
}
}
void loop()
{
int ret=WAV_DECODING;
wav.begin("test.wav");
wav.play();
while(ret == WAV_DECODING){
ret = wav.decode();
}
}
测试过的平台
- 目前测试过的平台:
windows : win7 32bit/64bit win8 32bit/64bit win10 32bit
linux :ubuntu 12.04 32bit
mac:
疑难解答
问: Linux下载时显示没有权限操作串口
- 答: 使用sudo usermod -a -G dialout 当前用户名 将当前用户添加到dialout组,然后注销重新登陆即可。
问: 驱动文件找不到
- 答: 在sdk的driver目录下
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!