이전 포스트에 기록했 듯이 CH32V203 펌웨어 망가뜨려서 다시 공장 초기화함.
포기하지 않고 다시 Blink LED를 도전해 보고자 한다.
초기화 방법도 알았으니 망하면 또 밀면 되니까!
1. CH32V Platform 추가
ESP 시리즈와는 다르게 CH32V 보드는 검색되지 않을 것이다.
그래서 따로 추가를 해 줘야 하는데 PIO CH32V docs를 따라하면 된다.
아래와 같이 "Platforms" → "Advanced Installation"을 누른 후 "https://github.com/Community-PIO-CH32V/platform-ch32v.git"을 주소창에 쓰고 Install 클릭.
위와 같이 뜨면 성공적으로 설치된 것이라고 보면 된다.
그리고 다시 "Platforms" → "Installed" 에 들어가 보면 아래처럼 "WCH CH32V"가 추가된 것을 확인할 수 있다.
하지만 바로 Project를 만드려고 하면 CH32V 보드들이 찾아지지 않을 것이다.
이때는 Visual Studio Code 자체를 껐다가 다시 켜면 뜨니까 너무 걱정하지 않아도 됨.
2. Adafruit QT Py CH32V203 Blink LED 예제 (Arduino framework)
내가 다뤄야 할 Framework는 CH32v003fun이지만, 이거로 잘못 건드렸다가 보드가 뻑났으므로..
만만한 Arduino framework로 재도전한다. ㅜ
ESP32-S2와 마찬가지로 CH32V203을 플래시하려면 BOOT 버튼을 꾹 누른 채로 USB에 연결시켜야 한다.
Reset용 버튼은 바로 옆에 RST라고 표시되어 있으니 이 버튼 옆에 (더 안에 배치된) 것을 누르면 됨.
제대로 연결됐는지 확인하고자 터미널에 ls /dev/cu.* 명령어로 검색하면 아마도 또 보이지 않을 것이다.
(완전 처음 뜯은 보드일 경우에는 뜰 수도 있다. 나도 그랬던 것 같은데 가물가물, 불과 몇 시간 전인데 벌써 까먹음 ㅜ)
그래도 공장 초기화할 때처럼 System Report에서 "Vendor-Specific Device"가 뜨면 괜찮음!
평소처럼 프로젝트를 만들어 보자.
이제부터는 ChatGPT와 앞 부분에서 CH32V platform 추가 시 원본이 됐던 https://github.com/Community-PIO-CH32V/platform-ch32v.git의 예제들을 바탕으로 작업한다.
우선 platformio.ini는 좀 손봐야 한다.
Adafruit의 built-in LED인 NeoPixel을 활용할 것이기 때문에 얘에 대한 library도 따로 불러줘야 하는 것 같았다.
그리고 ESP 보드에서 esptool을 사용했 듯 CH32V에서는 upload_protocol를 wchisp로 설정해 줘야 한다고 했다.
아래 세 줄을 추가하자.
>> upload_protocol = wchisp
>> monitor_speed = 115200
신기하게도 Adafruit의 NeoPixel을 사용한 Blink LED 예제를 구하기 어려웠다!?
그래서 ChatGPT를 통해 예시 코드를 생성해 달라고 부탁했다 ㅜ
코드를 보니 A4 핀인가보다 (Pin A4, PA4)
코드가 크게 어렵진 않았는데, 처음이다 보니 문법이 맞는지 잘 모른다.
그래도 ChatGPT를 믿고 한번 Build를 해 봤다.
오 성공!
Upload도 바로 가자
"Warning! Unknown upload protocol wchisp"
흠, 첫 시도에서 보드 뻑났을 때처럼 또 upload가 잘 안 된 것 같다...
platformio.ini에서 지시했던 wchisp 형식의 upload protocol을 인식하지 못 하는 모양.
오,
그런데 다행히 이번에는 완전히 맛이 가진 않았다.
기존 공장 초기화 펌웨어 그대로다 ㅎㅎ
ChatGPT에 의하면 wchisp가 안 되면 그냥 isp로 upload protocol을 바꿔보는 것도 한 가지 방법이라고 한다.
이 조언이 첫 실패 시에도 있었는데 그때는 반영하지 않았었음.
이번엔 한번 해 보기로!
platformio.ini에 upload_protocol을 수정하고 저장, build, upload까지 실행해 보자.
>> upload_protocol = isp
어, 됐다!?
Comments
Post a Comment