浏览代码

Fix SPISettings frequency parameters in ESP32 HW SPI (#13573)

Kajetan Rzepecki 5 年前
父节点
当前提交
692a0198f9
共有 1 个文件被更改,包括 19 次插入7 次删除
  1. 19
    7
      Marlin/src/HAL/HAL_ESP32/HAL_spi_ESP32.cpp

+ 19
- 7
Marlin/src/HAL/HAL_ESP32/HAL_spi_ESP32.cpp 查看文件

@@ -44,6 +44,15 @@ static SPISettings spiConfig;
44 44
 // Public functions
45 45
 // --------------------------------------------------------------------------
46 46
 
47
+#if ENABLED(SOFTWARE_SPI)
48
+
49
+  // --------------------------------------------------------------------------
50
+  // Software SPI
51
+  // --------------------------------------------------------------------------
52
+  #error "Software SPI not supported for ESP32. Use Hardware SPI."
53
+
54
+#else
55
+
47 56
 // --------------------------------------------------------------------------
48 57
 // Hardware SPI
49 58
 // --------------------------------------------------------------------------
@@ -61,13 +70,14 @@ void spiInit(uint8_t spiRate) {
61 70
   uint32_t clock;
62 71
 
63 72
   switch (spiRate) {
64
-    case SPI_FULL_SPEED:    clock = SPI_CLOCK_DIV2;  break;
65
-    case SPI_HALF_SPEED:    clock = SPI_CLOCK_DIV4;  break;
66
-    case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8;  break;
67
-    case SPI_EIGHTH_SPEED:  clock = SPI_CLOCK_DIV16; break;
68
-    case SPI_SPEED_5:       clock = SPI_CLOCK_DIV32; break;
69
-    case SPI_SPEED_6:       clock = SPI_CLOCK_DIV64; break;
70
-    default:                clock = SPI_CLOCK_DIV2; // Default from the SPI library
73
+    case SPI_FULL_SPEED:      clock = 16000000; break;
74
+    case SPI_HALF_SPEED:      clock = 8000000;  break;
75
+    case SPI_QUARTER_SPEED:   clock = 4000000;  break;
76
+    case SPI_EIGHTH_SPEED:    clock = 2000000;  break;
77
+    case SPI_SIXTEENTH_SPEED: clock = 1000000;  break;
78
+    case SPI_SPEED_5:         clock = 500000;   break;
79
+    case SPI_SPEED_6:         clock = 250000;   break;
80
+    default:                  clock = 1000000; // Default from the SPI library
71 81
   }
72 82
 
73 83
   spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
@@ -106,4 +116,6 @@ void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode)
106 116
   SPI.beginTransaction(spiConfig);
107 117
 }
108 118
 
119
+#endif // !SOFTWARE_SPI
120
+
109 121
 #endif // ARDUINO_ARCH_ESP32

正在加载...
取消
保存