1、RP2040的丰富开发环境中,Arduino是一个不可缺少的选择。因为采用了独特的bootloader,所以和其他的arduino兼容开发板稍微有些不同。在开始之前,首先要下载安装Arduino,最新的Arduino已经切换到了2.x的版本,原来的1.x版本都还正常,这个2.x版本采用了新的框架,和VScode有相似的地方,不过,看起来就不是很传统和舒服,而且编译速度好像也有些慢。不过,跟紧潮流还是要用最新的。
然后需要安装开发板支持环境,首先需要设定,开发板的源
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
然后就可以在开发板的Board manager管理器中找到RP2040选项,安装即可。可以看到,支持的衍生类型非常多
2、连接开发板
在Arduino中连接开发板有3个选项,genetic,pico-probe,pico-debug。如果不是特殊需要调试的功能,选择genetic通用的 就可以的。
这次是一次成功,直接把arduino的范例程序编译后的二进制文件直接下载到RP2040,所以显示成功,没有报错。但是,实际上,总是有很大概率不成功的。对此,官网有个解决方法。
就是依次选择Sketch>Export Comile Sketch,这样就生产了标准的二进制文件,在Sketch>Show Sketch Folder ,打开所在目录,这里出现了其他arduino目录不曾出现的build目录
build目录下有多个格式的二进制文件,RP2040使用的是uf2格式的,
在不能直接下载成功的情况下,就需要手动按boot键,进入boot模式,把这个uf2文件拖曳进去,就可以起到下载的作用、
这个流程其实最主要的是展示了RP2040的编译过程,就是对于C++ 语言,就是编译成uf2格式的二进制文件,然后用内部的软指令,启动一个boot模式的下载过程,然后自举重启,实现了自动执行的过程。
3、关于使用arduino的开发
因为RP2040开放的是标准的UART,PIO,SPI,I2C接口,因此,所有的开发代码,都可以从MicroPython逐行对照翻译过去,实现相同的功能。基本上不需要特殊的代码库,也不需要MicroPython所需要的Machine Class 类,用Arduino的底层驱动可以直接完成。
使用基本的UART访问控制代码
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
}
显示下载成功
4、 通过上述的操作,可以用更普及的Arduino进行开发,实现更多的功能。不过,其中关于thread访问双核的功能就无法实现的。因为暂时,还没有支持双核的库。这样的过程,可以用arduino开发出兼顾开发便捷和编译效率的代码。