RP2040(Raspberry Pi Pico) 개발 환경은 여러가지가 있지만 가장 쉽고 간편한 Arduino IDE로 해 보자
우선 보드 매니저 파일 URL을 설정 하고 보드 파일을 설치 한다.
https://github.com/earlephilhower/arduino-pico
보드 파일 설치 후 필수 핀 정의 파일은 아래와 같다.
// LEDs
#define PIN_LED (25u)
// Serial
#define PIN_SERIAL1_TX (0u)
#define PIN_SERIAL1_RX (1u)
#define PIN_SERIAL2_TX (8u)
#define PIN_SERIAL2_RX (9u)
// SPI
#define PIN_SPI0_MISO (16u)
#define PIN_SPI0_MOSI (19u)
#define PIN_SPI0_SCK (18u)
#define PIN_SPI0_SS (17u)
#define PIN_SPI1_MISO (12u)
#define PIN_SPI1_MOSI (15u)
#define PIN_SPI1_SCK (14u)
#define PIN_SPI1_SS (13u)
// Wire
#define PIN_WIRE0_SDA (4u)
#define PIN_WIRE0_SCL (5u)
#define PIN_WIRE1_SDA (26u)
#define PIN_WIRE1_SCL (27u)
그리고 Arduino 환경에서 RP2040이 실행 되는 main.c 를 확인하면 아래와 같다.
extern "C" int main() {
#if F_CPU != 125000000
set_sys_clock_khz(F_CPU / 1000, true);
#endif
mutex_init(&_pioMutex);
initVariant();
#ifndef NO_USB
#ifdef USE_TINYUSB
TinyUSB_Device_Init(0);
#else
__USBStart();
#ifndef DISABLE_USB_SERIAL
// Enable serial port for reset/upload always
Serial.begin(115200);
#endif
#endif
#endif
#if defined DEBUG_RP2040_PORT
DEBUG_RP2040_PORT.begin(115200);
#endif
#ifndef NO_USB
if (setup1 || loop1) {
rp2040.fifo.begin(2);
multicore_launch_core1(main1);
} else {
rp2040.fifo.begin(1);
}
rp2040.fifo.registerCore();
#endif
setup();
while (true) {
loop();
#ifdef USE_TINYUSB
yield();
#endif
if (arduino::serialEventRun) {
arduino::serialEventRun();
}
if (arduino::serialEvent1Run) {
arduino::serialEvent1Run();
}
if (arduino::serialEvent2Run) {
arduino::serialEvent2Run();
}
}
return 0;
}
몇 번 동작 했는데..
어느 순간 다운로드가 안된다
아래 에러를 출력한다.
드라이버를 인식 하지 못하는 현상인데... 왜 그럴까?
스케치는 프로그램 저장 공간 58848 바이트(2%)를 사용. 최대 2093056 바이트.
전역 변수는 동적 메모리 11228바이트(4%)를 사용, 250916바이트의 지역변수가 남음. 최대는 262144 바이트.
Resetting COM9
Converting to uf2, output size: 131072, start address: 0x2000
No drive to deploy.
스케치를 업로드 하는 동안 에러가 발생하였습니다.
가끔 이동식 디스크로 인식을 못하는 현상이 발생 한다.
한가지 해결책으로 바이너리 파일로 만들어 다운로드 하면 잘 동작한다.
PC소프트웨어 문제인듯...
반응형