Digispark简单小巧, PWM/ADC/I2C都有, 还能模拟USB, 核心ATTINY85芯片的性能也还过得去, 16MHz的主频, 6kB存储, 就是IO口少的可怜(最多6个, 国产Digispark一般只有5个, P5不能用)以及没有串口.

Digispark兼容大多数Arduino源码, 这里用Arduino IDE为其烧写程序.

OS: Deepin Linux 15.11 Desktop

Arduino IDE configuration for Digispark USB

在Arduino IDE的首选项里附加开发板管理器网址中写入https://raw.githubusercontent.com/ArminJo/DigistumpArduino/master/package_digistump_index.json(对于很旧的使用老版本固件的Digispark, 可能需要更新固件或者使用老本币的管理器网址http://digistump.com/package_digistump_index.json). 然后在工具中找到 开发板... > 开发板管理器, 等待下载好开发板索引后在贡献一项中找到Digistump AVR Boards, 安装就行. 注意下载速度可能很慢, 需要耐心等待/多试几次, 我等了快一天才成功下载安装. 不过里面有丰富的库函数以及示例, 个人觉得比Arduino IDE安装时候自带的那些示例丰富多了, 各种常见的配件都能找到示例改改直接用.

因为Digispark没有重置电路, 所以它每次烧录程序时候需要在点击上传按钮后等到出现提示, 然后重新插入Digispark才行. 同样的, Digispark上电后不会直接跑用户程序, bootloader会等5s, 如果这5s内没有发现烧录程序, 才会转而执行用户代码. 还有, 部分Digispark与USB3.0不兼容, USB3.0口只能给Digispark USB供电.

修改bootloader

上面提到了Digispark在上电时要等5s才会执行用户程序, 只有修改bootloader才能摆脱这一点, 但是这样的话以后就不能用Arduino IDE直接给Digispark烧录程序了, 而且这一操作需要AVRISP之类的硬件工具(除非是更新bootloader版本). 所以作为新手, 不建议这么做.

据说Digispark最新的固件在节省了0.5kB存储空间的同时加入了USB3.0的支持, 我本来满心欢喜地烧录了最新的2.04版固件, 后来发现USB3.0支持是不存在的, 而且最新版的固件Arduino IDE还不支持, 只能用其它工具来烧写程序了.

固件与烧写程序可以在github上找到(名字是micronucleus). 需要下载Releases中对应系统的烧录程序和源码中firmware/releases或者firmware/upgrades下对应芯片的固件hex文件. 写入固件或者用户程序的命令如下:

sudo micronucleus --run hex文件路径

用Arduino IDE给Digispark编译出hex文件

Arduino IDE默认不保存编译出的hex文件. 如有需要, 编辑~/.arduino15/preferences.txt文件, 在其中另起一行写入build.path=用户设定的编译文件存放目录. 重启Arduino IDE后, 在其中点验证的时候就会在这个build.path中hex文件, 将其提取出即可用sudo micronucleus --run *.hex烧录.



Arduino 单片机 hardware

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!