디자인 통일

This commit is contained in:
2026-04-30 19:00:06 +00:00
parent 8a66171899
commit e0650bdbf8
6 changed files with 1266 additions and 353 deletions

View File

@@ -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 초기화 실패 → 설정 페이지에서 속도 변경 후 재초기화 하세요");