![[memo] RP2040 その2 (Arduino IDE) [memo] RP2040 その2 (Arduino IDE)](https://cdn.snsimg.carview.co.jp/minkara/blog/000/046/278/010/46278010/p1m.jpg?ct=18e4506413ff)
最近、お気に入りなRP2040系マイコン。
中でも、RP2040-zeroがマイブームですね(w
特徴
・Dual Core 32bit ARM Cortex M0+ (~133MHz)
・RAM:264KB FLASH:2MB
・スルーホールピンのGPIO数が豊富(20本→ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,26,27,28,29)
・ハードウェアUART 2チャンネル
・ハードウェアSPI 2チャンネル
・ハードウェアI2C 2チャンネル
・PWM 16ポート(RP2040自体は30ポート全部利用可能)
・ADC 4ポート
・Arduino IDEでも開発できるので、過去の資産が有効利用できる (microPythonが標準的な開発環境?)
・Dual Coreなプログラムも簡単に実装できる
・小さい 18x23.5mm
・安い 800円くらい
など
rp2040のデーターシート
https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf
以下、
前回のメモからの追記です。
■書き込み失敗の件
ボード定義 2.3.3ではかなり安定している。まだ、たまに失敗する。
■GPIO定義の件
基本は、
packages/rp2040/hardware/rp2040/2.3.3/variants/*/pins_arduino.h
で定義されているので、都度確認ですね。
■RP2040のUART/SPI/I2C
それぞれ2チャンネル利用できる。
利用できるGPIOは決まっている。
デフォルトのGPIOは、先のpins_arduino.hで定義されている。
それ以外で利用する場合は、GPIOを個別設定する必要がある。
変更方法
□UART0(Serial1)
Serial1.setTX(pin)
Serial1.setRX(pin)
□UART1(Serial2)
Serial2.setTX(pin)
Serial2.setRX(pin)
□SPI0(SPI)
SPI.setTX(pin) // MOSI
SPI.setRX(pin) // MISO
SPI.setSCK(pin)
□SPI1
SPI1.setTX(pin) // MOSI
SPI1.setRX(pin) // MISO
SPI1.setSCK(pin)
□I2C0(Wire)
Wire.setSDA(pin)
Wire.setSCL(pin)
□I2C1(Wire1)
Wire1.setSDA(pin)
Wire1.setSCL(pin)
使用できるGPIO
□UART0(Serial1)
RX: 1,13,17,29
TX: 0,12,16,28
□UART1(Serial2)
RX: 5,9,21,25
TX: 4,8,20,24
□SPI0 (SPI)
MISO(RX):0,4,16,20
MOSI(TX):3,7,19,23
SCK:2,6,18,22
□SPI1
MISO(RX):8,12,24,28
MOSI(TX):11,15,27
SCK:10,14,26
□I2C0(Wire)
SDA: 0,12,16,20,24,28
SCL: 1,5,9,13,17,21,25,29
□I2C1(Wire1)
SDA: 2,6,10,14,18,22
SCL: 3,7,11,15,19,23,27
■Dual Core (Arduino IDE+earlephilhower版の場合)
https://github.com/earlephilhower/arduino-pico
Core0用コードは、
void setup()
void loop()
でコーディング
Core1用コードは、
void setup1()
void loop1()
でコーディング
以上 ^^
■Software Reset
前回のメモでのコードでは動作しなかった。
別の方法をみつけたのでメモ。
(ハードウェアwatchdog timer機構を利用する方法)
extern "C" {
#include
};
void software_reset(){
watchdog_reboot(0,0,1);
watchdog_enable(1,false);
}
■Software Serial
RP2040では、PIOが8チャンネルあるので、これを利用している。
定義
SerialPIO NAME ( TXpin, RXpin, FIFOサイズ(未指定の場合32バイト) );
TXのみやRXのみの使い方もできる。
その場合は、使わない方の TXpin RXpinのところを、
SerialPIO::NOPIN
にする。
SofSoftwareSerial定義とRX,TXが逆なので注意。
標準のSoftwareSerialは、SerialPIOをwrapしている。
■EEPROM
EEPROMは実装されていないが、プラグラム用フラッシュ領域の最後の4KBくらいをEEPROMエミュレーション用で用意されている。
標準のEEPROMライブラリで利用できる。
■FileSystem
LittleFSやSD(FAT)など、Filesystem利用可能
■RTC
内蔵RTCあるけど、バックアップバッテリー機構がない。
起動時都度時刻設定すれば時計機能が利用できる。
■タイマー割り込み
https://www.arduino.cc/reference/en/libraries/rpi_pico_timerinterrupt/
ブログ一覧 |
マイコンなど | パソコン/インターネット
Posted at
2022/07/28 10:50:18