DBC 파일 업로드
+클릭 또는 드래그&드롭으로 DBC 업로드
+파일 없음 — localStorage 복원 가능
+CAN FD Signal Graph
Viewing 0 signals
diff --git a/CANFD_Logger.ino b/CANFD_Logger.ino index cc1ef7f..b751440 100644 --- a/CANFD_Logger.ino +++ b/CANFD_Logger.ino @@ -68,6 +68,17 @@ // 변경 필요시: OSC_40MHz, OSC_4MHz10xPLL 등 #define CANFD_OSC ACAN2517FDSettings::OSC_20MHz +// ── CAN SPI 클럭 설정 ────────────────────────────────── +// MCP2518FD 최대 SPI = 0.85 × Fosc +// OSC_20MHz → 최대 17 MHz +// OSC_40MHz → 최대 34 MHz +// 배선이 길거나 불안정하면 낮추세요 (최소 1 MHz) +// 5 MHz : 안전 (노이즈에 강함) +// 10 MHz : 권장 (안정성/속도 균형) +// 15 MHz : 고속 (짧은 배선에서) +// 17 MHz : 최대 (OSC_20MHz 기준) +#define CAN_SPI_CLOCK 10000000UL // ← 여기서 변경 + // 최대 데이터 길이 (CAN FD = 64, Classic CAN = 8) #define CANFD_MAX_DATA 64 @@ -404,8 +415,8 @@ void saveSettings() { // ───────────────────────────────────────────── bool initCANFD() { const CANFDPreset& p = speedPresets[speedPresetIdx]; - Serial.printf("CAN FD 초기화: %s (Listen:%s)\n", - p.name, listenOnly ? "ON" : "OFF"); + Serial.printf("CAN FD 초기화: %s (Listen:%s, SPI:%luMHz)\n", + p.name, listenOnly ? "ON" : "OFF", CAN_SPI_CLOCK / 1000000UL); ACAN2517FDSettings settings(CANFD_OSC, p.arbBPS, p.factor); @@ -441,6 +452,7 @@ bool initCANFD() { gSPI.end(); delay(50); gSPI.begin(PIN_CAN_SCK, PIN_CAN_MISO, PIN_CAN_MOSI, PIN_CAN_CS); + gSPI.setFrequency(CAN_SPI_CLOCK); digitalWrite(PIN_CAN_CS, HIGH); delay(100); } @@ -1138,9 +1150,11 @@ void setup() { // SPI + CAN FD 초기화 // ★ CS는 라이브러리가 직접 관리 → SPI.begin에 CS 미전달 (HW SS 충돌 방지) gSPI.begin(PIN_CAN_SCK, PIN_CAN_MISO, PIN_CAN_MOSI, -1); + gSPI.setFrequency(CAN_SPI_CLOCK); // ★ SPI 클럭 설정 pinMode(PIN_CAN_CS, OUTPUT); digitalWrite(PIN_CAN_CS, HIGH); delay(50); // SPI 버스 안정화 대기 + Serial.printf("SPI 클럭: %lu MHz\n", CAN_SPI_CLOCK / 1000000UL); if (!initCANFD()) { Serial.println("⚠ CAN FD 초기화 실패 → 설정 페이지에서 속도 변경 후 재초기화 하세요"); diff --git a/graph.h b/graph.h index 15426c5..bd05f07 100644 --- a/graph.h +++ b/graph.h @@ -1,156 +1,498 @@ #ifndef GRAPH_H #define GRAPH_H - const char graph_html[] PROGMEM = R"rawliteral( -
- -DBC Signal Selector
클릭 또는 드래그&드롭으로 DBC 업로드
+파일 없음 — localStorage 복원 가능
+Viewing 0 signals