디자인 통일
This commit is contained in:
@@ -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 초기화 실패 → 설정 페이지에서 속도 변경 후 재초기화 하세요");
|
||||
|
||||
Reference in New Issue
Block a user