MO主控板

简介

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

IDE_M0_Mainboard.png

驱动安装

  • 部分Win10电脑会自动安装驱动,不过查看电脑设备管理器会发现是一个通用的COM名称,若系统已安装驱动则可以跳过这一步

  • 将标注COM的USB口查到电脑上,会弹出一个未识别的设备,显示如下

M0_Mainboard_driver_install1.png

  • 右击更新驱动程序,选择浏览计算机以查找驱动程序软件

bluno_M0_driver_install2.png

  • 选择我们安装的SDK的driver子目录(C:\Users\yourUserName\AppData\Local\Arduino15\packages\nucDuino\hardware\nucDuino\1.0.0\driver)

如果你找不到,从这里下载,(建议使用迅雷新建任务下载,直接点击会变成预览文件状态)

bluno_M0_driver_install3.png

  • 选择始终安装驱动程序软件(Win7状态下请选择始终安装该驱动,如遇需要数字签名,请禁用数字签名)

bluno_M0_driver_install4.png

  • 安装完成后,效果如图所示

M0_Mainboard_driver_install5.png

特殊功能使用教程

双物理串口,一个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目录下

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

更多

shopping_car.png DFRobot商城购买链接