Implement native ESP-IDF radar firmware
Some checks failed
build / host-tests (push) Has been cancelled
build / esp-idf (push) Has been cancelled

This commit is contained in:
2026-07-21 07:47:02 +00:00
parent 8a43efb3f6
commit b473ed4369
28 changed files with 3770 additions and 1 deletions

110
docs/HARDWARE.md Normal file
View File

@@ -0,0 +1,110 @@
# CrowPanel V3 하드웨어와 핀맵
이 문서는 Radick이 대상으로 하는 **Basic CrowPanel 7.0 V3.0 / DIS08070H / ESP32-S3-WROOM-1-N4R8**의 핀 사용과 RD-03D V1 연결을 정리합니다. 같은 이름으로 판매된 V1/V2는 특히 터치 회로가 다르므로 이 펌웨어의 GPIO38 레이더 입력 배선을 그대로 사용하면 안 됩니다.
## 외부 레이더 배선
| 기능 | ESP32-S3 | 물리 위치 | 방향 |
|---|---:|---|---|
| 레이더 데이터 RX | GPIO38 | J7 `GPIO_D` pin 1 | RD-03D TX → ESP32 |
| 레이더 명령 TX | GPIO43 | J10 `UART` pin 2 | ESP32 → RD-03D RX |
| 공통 접지 | GND | J7 pin 4 등 | 공통 |
| 레이더 전원 | 별도 5 V boost | 외부 전원부 | boost → RD-03D VCC |
J7의 pin 2는 NC, pin 3은 3V3, pin 4는 GND입니다. J10은 pin 1 GPIO44/RX 표기, pin 2 GPIO43/TX 표기, pin 3 3V3, pin 4 GND입니다. 커넥터의 RX/TX 표기는 CrowPanel 관점입니다.
J10의 GPIO43/44는 CH340C USB-UART와 전기적으로 공유됩니다. CH340C TX가 연결된 GPIO44를 레이더 TX 입력으로 쓰지 않고, V3에서 사용자 GPIO로 제공되는 GPIO38을 사용해 출력 충돌을 피합니다. GPIO43에는 ESP32 출력 하나와 레이더/CH340C 입력만 매달립니다. V3 회로도에는 GPIO38 관련 선택실장 저항 자리가 있으므로 보드 변형에서는 실장 상태를 확인하십시오.
RD-03D V1의 1.25 mm 4핀 커넥터 순서는 pin 1 `5V`, pin 2 `GND`, pin 3 `TX`, pin 4 `RX`입니다. 커넥터를 바라보는 방향에 따라 순서가 뒤집혀 보일 수 있으므로 실크와 pin 1 표시를 기준으로 확인하십시오.
## 배터리와 5 V 레일
- J1 PH2.0 pin 1: `BAT+`
- J1 PH2.0 pin 2: `GND`
- 배터리 범위: 보호회로가 있는 1S Li-ion/LiPo, 공칭 3.7 V, 최대 4.2 V
- 보드 충전 IC: 4054 계열 선형 충전기, 회로도 설정 약 500 mA
- RD-03D 요구 전원: 4.55.5 V, 5 V 권장, 전원 설계 여유 200 mA 이상
배터리 전압은 RD-03D 최저 동작 전압보다 낮습니다. 다음 연결이 필수입니다.
```text
BAT+ ──┬── CrowPanel J1 pin 1
└── switch ── 5 V low-ripple boost IN+
GND ───┬── CrowPanel J1 pin 2
└───────────── boost IN-/OUT- ── RD-03D GND
boost OUT+ ─────────────────────────────> RD-03D VCC
```
- 레이더 VCC를 J7/J10의 3V3에 연결하지 마십시오.
- 레이더 VCC를 배터리 BAT+에 직접 연결하지 마십시오.
- 승압 모듈은 연속 200 mA 이상이어야 하며 여유를 둔 500 mA급과 공식 사양의 출력 리플 100 mV 이하를 만족해야 합니다.
- 승압 모듈 데이터시트가 지정한 캐패시터와 짧은 전원/접지 배선을 사용하십시오.
- 보드 회로에는 MCU용 배터리 ADC나 fuel gauge가 없으므로 정확한 잔량 표시에는 외부 게이지가 필요합니다.
- 단순 선형 충전 회로에는 별도 power-path가 보이지 않습니다. 충전과 고부하 사용을 동시에 하면 충전 종료 판정과 발열에 영향을 줄 수 있으므로 실기에서 온도를 확인하고, 제품화할 때는 power-path가 있는 전원 설계를 사용하십시오.
## 내부 사용 핀
### 800 × 480 RGB 패널
| 신호 | GPIO | 신호 | GPIO |
|---|---:|---|---:|
| D0 | 15 | D8 | 8 |
| D1 | 7 | D9 | 16 |
| D2 | 6 | D10 | 1 |
| D3 | 5 | D11 | 14 |
| D4 | 4 | D12 | 21 |
| D5 | 9 | D13 | 47 |
| D6 | 46 | D14 | 48 |
| D7 | 3 | D15 | 45 |
| PCLK | 0 | DE | 41 |
| HSYNC | 39 | VSYNC | 40 |
| Backlight PWM | 2 | | |
Radick은 15 MHz pixel clock과 V3 예제/회로도의 porch 및 sync 값을 사용합니다. 프레임 버퍼는 8 MB octal PSRAM에 둡니다.
### 터치와 I/O 확장기
| 기능 | 값 |
|---|---|
| I2C SDA | GPIO19 |
| I2C SCL | GPIO20 |
| PCA9557 | 0x18 |
| GT911 | V3 기본 0x5D, 0x14는 방어적으로 추가 탐색 |
| PCA IO0 | GT911 RESET |
| PCA IO1 | GT911 INT |
V3 부팅 시 PCA9557 IO0/IO1을 출력 low로 두고 RESET을 high로 해제한 뒤 INT를 입력으로 전환합니다. 이 INT-low 리셋 순서는 정상적으로 GT911 주소 0x5D를 선택하며, 0x14 탐색은 이미 다른 상태로 기동한 변형에 대한 방어 수단입니다. 터치가 검출되지 않아도 화면과 레이더는 계속 동작하며 UI에 `TOUCH OFFLINE`을 표시합니다. GPIO19/20이 터치 I2C에 사용되므로 ESP32-S3 native USB D-/D+ 용도로 사용할 수 없습니다.
### 오디오
| I2S 신호 | GPIO |
|---|---:|
| SDIN | 17 |
| LRCLK/WS | 18 |
| BCLK | 42 |
온보드 NS4168 앰프 출력은 J5 `SPK`의 두 단자에 연결됩니다. BTL 출력이므로 어느 스피커 단자도 GND에 연결하면 안 됩니다. 펌웨어는 16 kHz, 16-bit stereo 신호로 같은 모노 핑을 양 채널에 보냅니다.
### 사용하지 않는 SD 인터페이스
| 신호 | GPIO |
|---|---:|
| CS | 10 |
| MOSI | 11 |
| SCK | 12 |
| MISO | 13 |
Radick은 SD 카드를 초기화하지 않아 메모리와 부팅 시간을 절약합니다.
## UART 및 플래싱 문제 해결
1. 정상 프레임은 30바이트이며 `AA FF 03 00`으로 시작해 `55 CC`로 끝납니다.
2. UART 설정은 256000 baud, 8 data bits, no parity, 1 stop bit입니다.
3. 센서가 응답하지 않으면 먼저 RD-03D VCC에서 실제 5 V와 공통 GND를 확인하십시오.
4. TX/RX는 센서 기준입니다. RD TX는 GPIO38, RD RX는 GPIO43이어야 합니다.
5. ROM UART 트래픽이 레이더 RX에도 전달되므로 플래싱 중에는 레이더 5 V 전원을 끄는 것을 권장합니다.
6. 애플리케이션 콘솔은 의도적으로 비활성화되어 있습니다. 필요하면 개발 중에만 sdkconfig의 콘솔 설정을 바꾸되 GPIO43/44 공유를 고려하십시오.
제품화하거나 UART 배선이 길다면 Ai-Thinker 권고에 따라 신호선에 10100 Ω 직렬 저항과 적절한 ESD 보호를 추가하십시오.
근거 자료: [Ai-Thinker RD-03D V1](https://docs.ai-thinker.com/en/Rd-03D_V1/), [Elecrow CrowPanel 7.0 repository](https://github.com/Elecrow-RD/CrowPanel-7.0-HMI-ESP32-Display-800x480), [ESP-IDF RGB LCD API](https://docs.espressif.com/projects/esp-idf/en/v5.3.3/esp32s3/api-reference/peripherals/lcd/rgb_lcd.html).