标签 MKR Zero 下的文章

Arduino MKR Zero 上手笔记

前言:

笔者最近参与了 DigiKeyB站的Arduino盘点抽奖活动,有幸获得了一块Arduino MKR ZERO开发板。与复制品很常见的UNO和Mega2560不同,MKR ZERO使用的是 Microchip 的 SAMD21处理器 ,内核为32位的ARM Cortex-M0+ ,而前两者是8位的 AVR内核。这种原版的开发板我是万万买不起的,这次既然有幸得到,自然要点灯为敬。

Arduino MKR Zero——DigiKey零件页面

以上得捷页面提供了部分信息,话说看其价格也许比某宝便宜一些?(但不知道加上运费怎么样?

简介:

Arduino MKR ZERO 开发板在较小的尺寸上提供了不错的性能。MCU采用 32 位 ARM Cortex® M0+ 内核,且内有DAC。开发板提供了Micro USB & 电池双供电以及电池充电电路,且板载使用SPI接口的MicroSD连接器和一枚ECC508加密IC。如此,该开发板可以在不添加其他硬件的情况下播放音频文件。

警告:与大多数Arduino和Genuino板不同,MKRZero的运行电压为3.3V。I/O引脚可以承受的最大电压为3.3V。对任何 I/O 引脚施加高于 3.3V 的电压可能会损坏电路板。

技术信息:

技术信息
微控制器 SAMD21 Cortex‐M0+ 32bit low power ARM MCU
开发板供电电源 5V Max Micro USB
支持的电池 单节 Li-Po,3.7V ,至少700mAh容量
3.3V最大输出 600mA
5V最大输出 600mA
IO工作电压 3.3V Max
数字I/O数量 22
PWM引脚 12 (0, 1, 2, 3, 4, 5, 6, 7, 8, 10, A2 - or 18-, A4 - or 19)
串口数量 1
SPI数量 1
I2C数量 1
模拟输入引脚数量 7 (ADC 8/10/12 bit)
模拟输出引脚数量 1 (DAC 10 bit)
外部中断引脚 8 (0, 1, 4, 5, 6, 7, 8, A1 ‐or 16‐, A2 ‐ or 17)
单个 I/O 最大电流 7 mA
容量 256K Flash (8K Bootloader),32K SRAM,NO EEPROM
时钟频率 48MHz (Main),32.768kHz(RTC)
板载LED引脚 32 (PB08) LED_BUILTIN suggested

开发资料:

开发环境部署:

Arduino MKR Zero 是Arduino官方出品的开发板,其使用的开发环境自然是Arduino IDE。

首先到 Arduino IDE下载页 下载Arduino最新的Arduino 1.8,并按提示完成安装,安装路径建议不要有空格或中文。

安装完成后打开Arduino IDE,接下来要安装SAMD Core。点击 工具 > 开发板: > 开发板管理器... , 在弹出的窗口中将显示所有可用的开发板。

在搜索框中以 samd 为关键词搜索,在搜索结果中找到Arduino SAMD Boards (32-bits ARM Cortex-M0+) 并点击安装,安装期间若有驱动安装提示请允许,否则无法正常上传固件。若安装有困难,可能需要使用代理。

点击 工具 > 开发板: > Arduino SAMD Boards (32-bits ARM Cortex-M0+ > Arduino MKRZERO 选择开发板型号,点击 工具 > 端口 > COMxx(Arduino MKRZERO) 选定开发板串口。这时点击 工具 > 取得开发板信息 可以读到开发板信息即表示通信正常。

点灯:

点击 文件 > 示例 > 01.Basics > Blink ,打开闪灯示例程序,为了与出厂预置闪灯程序区分,将delay延时函数的参数改为250(代码如下),然后点击 上传 ,此时Arduino IDE会开始编译,编译完成后自动上传。等待其成功上传后观察板载LED闪烁速度,变快了便是成功了。

void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(250);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(250);                       // wait for a second
}

参考: