Adafruit Feather M0 Adalogger:一款强大的一体化数据记录开发板
在电子开发领域,拥有一款功能强大且易于使用的开发板至关重要。Adafruit Feather M0 Adalogger就是这样一款值得关注的开发板,它为开发者提供了丰富的功能和便捷的使用体验。
文件下载:2796.pdf
一、概述
Adafruit Feather M0 Adalogger是Adafruit推出的一款“一体化”Cortex M0数据记录器(或数据读取器),内置USB和电池充电功能。其核心是ATSAMD21G18 ARM Cortex M0处理器,时钟频率为48 MHz,采用3.3V逻辑,与新的Arduino Zero使用的芯片相同。这款芯片拥有256K的FLASH和32K的RAM,还内置USB,具备USB - 串口编程和调试能力,无需FTDI类芯片。
规格参数
- 尺寸:未焊接引脚时,尺寸为2.0" x 0.9" x 0.28"(51mm x 23mm x 8mm)。
- 重量:仅5.3克,非常轻便。
- 处理器:ATSAMD21G18 @ 48MHz,3.3V逻辑/电源。
- 存储:256KB的FLASH + 32KB的RAM。
- 电源:3.3V稳压器,峰值电流输出500mA。
- 接口:支持USB原生,带有USB引导加载程序和串口调试功能;拥有20个GPIO引脚,支持硬件串口、硬件I2C、硬件SPI;8个PWM引脚,10个模拟输入。
- 其他:内置100mA锂聚合物充电器,带有充电状态指示灯LED;引脚#13连接红色LED,用于通用闪烁;具备电源/使能引脚、4个安装孔和复位按钮。此外,还额外增加了MicroSD卡插槽和绿色LED。
二、引脚布局
1. 电源引脚
- GND:所有电源和逻辑的公共接地。
- BAT:连接可选锂聚合物电池的JST插孔的正电压。
- USB:如果连接,为微型USB插孔的正电压。
- EN:3.3V稳压器的使能引脚,上拉,连接到地可禁用3.3V稳压器。
- 3V:3.3V稳压器的输出,可提供500mA峰值电流。
2. 逻辑引脚
逻辑引脚为微控制器的通用I/O引脚集,所有逻辑均为3.3V,几乎所有引脚都可进行PWM输出,所有引脚都可作为中断输入。例如,引脚#0 / RX既是GPIO #0,也是Serial1的接收(输入)引脚,还可作为模拟输入;引脚A0既是模拟输入,又因带有DAC(数模转换器)可作为模拟输出。
3. Micro SD卡 + 绿色LED
- #4:用作MicroSD卡的CS(芯片选择)引脚。
- #7:用作MicroSD卡的CD(卡检测)引脚,通过配置为上拉输入,可检测卡的插入和移除。
- #8:连接到绿色LED,可在读写有效数据或进行用户提醒时闪烁。
4. 其他引脚
- RST:复位引脚,连接到地可手动复位AVR并手动启动引导加载程序。
- ARef:模拟参考引脚,通常参考电压与芯片逻辑电压相同(3.3V),若需要替代模拟参考,可连接到该引脚并在固件中选择外部AREF,但电压不能高于3.3V。
- SWCLK & SWDIO:底部的焊盘用于对芯片进行编程,也可连接到SWD调试器。
三、组装
Adafruit Feather M0 Adalogger发货时已完全测试,但未安装引脚,这为用户提供了多种选择。
1. 引脚选项
- 普通公引脚:可将开发板插入无焊面包板。
- 母引脚插座:虽不能插入面包板,但便于连接Feather扩展板。
- “超薄”母引脚:更短,使外形更紧凑。
- 堆叠引脚:结合了插入无焊面包板和连接Feather扩展板的功能,但体积稍大。
2. 焊接步骤
普通公引脚焊接
- 准备引脚条:必要时将引脚条裁剪至合适长度,将长引脚插入面包板,便于焊接。
- 安装 breakout 板:将 breakout 板放在引脚上,使短引脚穿过焊盘。
- 焊接:确保焊接所有引脚,以实现可靠的电气连接。
母引脚焊接
- 固定引脚:用胶带将引脚固定,防止翻转电路板时掉落。
- 定位焊接:翻转电路板后,焊接每个引脚条的一两个点,固定引脚。
- 完成焊接:焊接所有引脚,确保电气连接可靠。
四、电源管理
1. 电池 + USB 电源
Feather M0 Adalogger有两种供电方式:通过USB电缆连接,开发板会将5V USB电压调节至3.3V;连接4.2/3.7V锂聚合物(LiPo/LiPoly)或锂离子(LiIon)电池到JST插孔,可使用可充电电池供电。当USB供电时,开发板会自动切换到USB电源,并开始为电池充电(如果连接了电池)。
2. 电源供应
开发板提供了多种电源供应选项,包括BAT引脚(连接锂聚合物JST连接器)、USB引脚(连接USB时的+5V)和3V引脚(3.3V稳压器的输出)。使用500mA峰值稳压器,但不能连续从5V获取500mA电流,否则会使稳压器过热。
3. 电池测量
为了方便测量电池电压,开发板在BAT引脚连接了一个双100K电阻分压器,并连接到D9(模拟#7 A7)。通过读取该引脚的电压并乘以2,即可得到电池电压。
4. 使能引脚
通过将EN引脚连接到地,可关闭3.3V稳压器,但BAT和USB引脚仍会供电。
5. 替代电源选项
- 永久安装:使用5V 1A USB墙式适配器,通过USB电缆提供可靠电源。
- 移动使用:使用USB电池组。
- 高电压电源:使用5V降压转换器,并连接到USB电缆的5V和GND输入。
需要注意的是,不要使用碱性或NiMH电池连接到电池端口,也不要使用7.4V RC电池,否则会损坏开发板。
五、Arduino IDE设置
1. 下载Arduino IDE
需要下载最新版本的Arduino IDE,版本需为1.8或更高。
2. 添加URL
在Arduino IDE的偏好设置中,添加URL:https://adafruit.github.io/arduino-board-index/package_adafruit_index.json 。
3. 安装支持包
- 安装SAMD支持:在Board Manager中安装最新的Arduino SAMD Boards(版本1.6.11或更高)。
- 安装Adafruit SAMD:安装Adafruit SAMD包,添加开发板文件定义。
4. 安装驱动(仅适用于Windows 7 & 8)
下载并运行Adafruit驱动安装程序,选择要安装的驱动。
5. 上传第一个闪烁程序
将M0或M4开发板插入电脑,选择匹配的开发板,加载Blink示例程序并上传。
6. 常见问题解决
- 编译问题:确保安装了Arduino SAMD和Adafruit SAMD板包。
- 手动引导加载:如果引导加载器出现问题,双击RST按钮进入引导加载模式。
- Ubuntu & Linux问题:按照说明安装Adafruit的udev规则。
六、使用SD卡
1. 准备工作
确保Adafruit SAMD板包版本为1.6.2或更高,许多默认示例已将CS引脚设置为4。
2. 示例代码
可以使用CardInfo示例开始,上传并打开串口控制台,获取文件列表。也可以使用Datalogger示例将模拟数据保存到SD卡,使用Dumpfile示例读取SD卡中的数据。
3. 注意事项
为了节省电源,数据会进行缓冲,每50个数据点(共512个字符)才会真正保存到SD卡。如果需要确保每个数据点都保存,可以使用logfile.flush(),但会增加功耗。
七、适配M0 & M4的草图
1. 模拟参考
如果使用ARef引脚进行非3.3V模拟参考,使用analogReference(AR_EXTERNAL)。
2. 引脚输出和上拉
对于M0 & M4开发板,使用pinMode(pin, INPUT_PULLUP)设置引脚为上拉输入。
3. 串口与SerialUSB
在Adafruit M0/M4核心中,Serial连接到USB。如果使用官方Arduino SAMD核心,需要使用SerialUSB进行USB通信。
4. 模拟写入/PWM
Feather M0中部分引脚的PWM功能与SAMD21芯片的多路复用表有所不同,需要注意相关引脚的配置。
5. 其他问题
- 缺少头文件:对于不支持M0核心的库,可以使用#ifdef进行条件编译或直接删除相关行。
- 引导加载器启动:M0/M4需要双击复位按钮进入引导加载模式。
- 对齐内存访问:在32位平台上,使用memcpy进行数据复制。
- 浮点转换:M0运行时库没有dtostrf函数,可参考相关线程找到可用的实现。
- RAM可用量:可以使用特定函数跟踪RAM使用情况。
- 数据存储在FLASH:在ARM中,在变量名前添加const即可将数据存储在FLASH中。
- 寄存器打印:可以使用相关库打印SAMD21的寄存器信息。
6. M4性能选项
- CPU速度(超频):可调整微控制器核心时钟,但可能会导致代码锁定或部分代码库不兼容。
- 优化:提供“Small”“Fast”和“Here be dragons”三种优化选项,不同选项对代码大小和速度有不同影响。
- 缓存:默认启用,可提高性能,若遇到问题可禁用。
- Max SPI和Max QSPI:通常保持默认设置,特殊情况下可进行调整,但可能会导致SPI读取失败。
- 启用M4板的降压转换器:部分M4板可通过代码切换到1.8V降压转换器,节省功耗,但会使ADC/DAC读取噪声增加。
Adafruit Feather M0 Adalogger为电子工程师提供了一个功能强大、易于使用的开发平台。通过了解其特点、引脚布局、组装方法、电源管理、Arduino IDE设置、SD卡使用以及适配M0 & M4的草图等方面的知识,开发者可以充分发挥其优势,实现各种创意项目。你在使用这款开发板的过程中遇到过哪些问题呢?欢迎在评论区分享你的经验和见解。