Преглед изворни кода

LPC1768 - Don't change CS pin state (#13015)

Andy Shaw пре 6 година
родитељ
комит
9091110460
1 измењених фајлова са 48 додато и 80 уклоњено
  1. 48
    80
      Marlin/src/HAL/HAL_LPC1768/HAL_spi.cpp

+ 48
- 80
Marlin/src/HAL/HAL_LPC1768/HAL_spi.cpp Прегледај датотеку

@@ -68,53 +68,41 @@
68 68
 
69 69
   static uint8_t SPI_speed = 0;
70 70
 
71
-  static uint8_t spiTransfer(uint8_t b) {
71
+  static inline uint8_t spiTransfer(const uint8_t b) {
72 72
     return swSpiTransfer(b, SPI_speed, SCK_PIN, MISO_PIN, MOSI_PIN);
73 73
   }
74 74
 
75
-  void spiBegin() {
75
+  inline void spiBegin() {
76 76
     swSpiBegin(SCK_PIN, MISO_PIN, MOSI_PIN);
77 77
   }
78 78
 
79
-  void spiInit(uint8_t spiRate) {
79
+  inline void spiInit(const uint8_t spiRate) {
80 80
     SPI_speed = swSpiInit(spiRate, SCK_PIN, MOSI_PIN);
81 81
   }
82 82
 
83
-  uint8_t spiRec() {
84
-    uint8_t b = spiTransfer(0xFF);
85
-    return b;
86
-  }
83
+  inline uint8_t spiRec() { return spiTransfer(0xFF); }
87 84
 
88
-  void spiRead(uint8_t*buf, uint16_t nbyte) {
85
+  inline void spiRead(uint8_t * const buf, const uint16_t nbyte) {
89 86
     if (nbyte == 0) return;
90
-    for (int i = 0; i < nbyte; i++) {
87
+    for (int i = 0; i < nbyte; i++)
91 88
       buf[i] = spiTransfer(0xFF);
92
-    }
93 89
   }
94 90
 
95
-  void spiSend(uint8_t b) {
91
+  inline void spiSend(const uint8_t b) {
96 92
     uint8_t response = spiTransfer(b);
97 93
     UNUSED(response);
98 94
   }
99 95
 
100
-  void spiSend(const uint8_t* buf, size_t n) {
101
-    uint8_t response;
96
+  inline void spiSend(const uint8_t* buf, const size_t n) {
102 97
     if (n == 0) return;
103
-    for (uint16_t i = 0; i < n; i++) {
104
-      response = spiTransfer(buf[i]);
105
-    }
106
-    UNUSED(response);
98
+    for (uint16_t i = 0; i < n; i++)
99
+      (void)spiTransfer(buf[i]);
107 100
   }
108 101
 
109
-  void spiSendBlock(uint8_t token, const uint8_t* buf) {
110
-    uint8_t response;
111
-    response = spiTransfer(token);
112
-
113
-    for (uint16_t i = 0; i < 512; i++) {
114
-      response = spiTransfer(buf[i]);
115
-    }
116
-    UNUSED(response);
117
-    WRITE(SS_PIN, HIGH);
102
+  inline void spiSendBlock(const uint8_t token, const uint8_t * const buf) {
103
+    (void)spiTransfer(token);
104
+    for (uint16_t i = 0; i < 512; i++)
105
+      (void)spiTransfer(buf[i]);
118 106
   }
119 107
 
120 108
 #else
@@ -143,7 +131,7 @@
143 131
     #define LPC_SSPn LPC_SSP1
144 132
   #endif
145 133
 
146
-  void spiBegin() {  // setup SCK, MOSI & MISO pins for SSP0
134
+  inline void spiBegin() {  // setup SCK, MOSI & MISO pins for SSP0
147 135
     PINSEL_CFG_Type PinCfg;  // data structure to hold init values
148 136
     PinCfg.Funcnum = 2;
149 137
     PinCfg.OpenDrain = 0;
@@ -168,7 +156,7 @@
168 156
     SSP_Cmd(LPC_SSPn, ENABLE);  // start SSP running
169 157
   }
170 158
 
171
-  void spiInit(uint8_t spiRate) {
159
+  inline void spiInit(const uint8_t spiRate) {
172 160
     // table to convert Marlin spiRates (0-5 plus default) into bit rates
173 161
     uint32_t Marlin_speed[7]; // CPSR is always 2
174 162
     Marlin_speed[0] = 8333333; //(SCR:  2)  desired: 8,000,000  actual: 8,333,333  +4.2%  SPI_FULL_SPEED
@@ -186,66 +174,49 @@
186 174
     SSP_Init(LPC_SSPn, &HW_SPI_init);  // puts the values into the proper bits in the SSP0 registers
187 175
   }
188 176
 
189
-
190
-  static uint8_t doio(uint8_t b) {
177
+  static inline uint8_t doio(const uint8_t b) {
191 178
     /* send and receive a single byte */
192 179
     SSP_SendData(LPC_SSPn, b & 0x00FF);
193 180
     while (SSP_GetStatus(LPC_SSPn, SSP_STAT_BUSY));  // wait for it to finish
194 181
     return SSP_ReceiveData(LPC_SSPn) & 0x00FF;
195 182
   }
196 183
 
197
-  void spiSend(uint8_t b) {
198
-    doio(b);
199
-  }
200
-
184
+  inline void spiSend(const uint8_t b) { doio(b); }
201 185
 
202
-  void spiSend(const uint8_t* buf, size_t n) {
186
+  inline void spiSend(const uint8_t* buf, const size_t n) {
203 187
     if (n == 0) return;
204
-    for (uint16_t i = 0; i < n; i++) {
205
-      doio(buf[i]);
206
-    }
188
+    for (uint16_t i = 0; i < n; i++) doio(buf[i]);
207 189
   }
208 190
 
209
-  void spiSend(uint32_t chan, byte b) {
191
+  inline void spiSend(const uint32_t chan, const byte b) {
210 192
   }
211 193
 
212
-  void spiSend(uint32_t chan, const uint8_t* buf, size_t n) {
194
+  inline void spiSend(const uint32_t chan, const uint8_t * const buf, const size_t n) {
213 195
   }
214 196
 
215 197
   // Read single byte from SPI
216
-  uint8_t spiRec() {
217
-    return doio(0xff);
218
-  }
198
+  inline uint8_t spiRec() { return doio(0xFF); }
219 199
 
220
-  uint8_t spiRec(uint32_t chan) {
221
-    return 0;
222
-  }
200
+  inline uint8_t spiRec(const uint32_t chan) { return 0; }
223 201
 
224 202
   // Read from SPI into buffer
225
-  void spiRead(uint8_t*buf, uint16_t nbyte) {
203
+  inline void spiRead(uint8_t * const buf, const uint16_t nbyte) {
226 204
     if (nbyte == 0) return;
227
-    for (int i = 0; i < nbyte; i++) {
228
-      buf[i] = doio(0xff);
229
-    }
205
+    for (int i = 0; i < nbyte; i++)
206
+      buf[i] = doio(0xFF);
230 207
   }
231 208
 
232
-  static uint8_t spiTransfer(uint8_t b) {
233
-    return doio(b);
234
-  }
209
+  static uint8_t spiTransfer(const uint8_t b) { return doio(b); }
235 210
 
236 211
   // Write from buffer to SPI
237
-  void spiSendBlock(uint8_t token, const uint8_t* buf) {
238
-    uint8_t response;
239
-    response = spiTransfer(token);
240
-
241
-    for (uint16_t i = 0; i < 512; i++) {
242
-      response = spiTransfer(buf[i]);
243
-    }
244
-    UNUSED(response);
212
+  inline void spiSendBlock(const uint8_t token, const uint8_t * const buf) {
213
+    (void)spiTransfer(token);
214
+    for (uint16_t i = 0; i < 512; i++)
215
+      (void)spiTransfer(buf[i]);
245 216
   }
246 217
 
247 218
   /** Begin SPI transaction, set clock, bit order, data mode */
248
-  void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
219
+  inline void spiBeginTransaction(const uint32_t spiClock, const uint8_t bitOrder, const uint8_t dataMode) {
249 220
     // TODO: to be implemented
250 221
 
251 222
   }
@@ -254,29 +225,26 @@
254 225
 
255 226
 void SPIClass::begin() { spiBegin(); }
256 227
 
257
-void SPIClass::beginTransaction(SPISettings cfg) {
228
+void SPIClass::beginTransaction(const SPISettings cfg) {
258 229
   uint8_t spiRate;
259
-  switch(cfg.spiRate()) {
260
-    case 8000000: spiRate=0 ;break;
261
-    case 4000000: spiRate=1 ;break;
262
-    case 2000000: spiRate=2 ;break;
263
-    case 1000000: spiRate=3 ;break;
264
-    case  500000: spiRate=4 ;break;
265
-    case  250000: spiRate=5 ;break;
266
-    case  125000: spiRate=6 ;break;
267
-    default: spiRate=2; break;
230
+  switch (cfg.spiRate()) {
231
+    case 8000000: spiRate = 0 ;break;
232
+    case 4000000: spiRate = 1 ;break;
233
+    case 2000000: spiRate = 2 ;break;
234
+    case 1000000: spiRate = 3 ;break;
235
+    case  500000: spiRate = 4 ;break;
236
+    case  250000: spiRate = 5 ;break;
237
+    case  125000: spiRate = 6 ;break;
238
+    default: spiRate = 2; break;
268 239
   }
269 240
   spiInit(spiRate);
270 241
 }
271 242
 
272
-uint8_t SPIClass::transfer(uint8_t B) {
273
-  return spiTransfer(B);
274
-}
275
-uint16_t SPIClass::transfer16(uint16_t data) {
276
-  uint16_t buffer;
277
-  buffer = transfer((data>>8) & 0xFF) << 8;
278
-  buffer |= transfer(data & 0xFF) && 0xFF;
279
-  return buffer;
243
+uint8_t SPIClass::transfer(const uint8_t B) { return spiTransfer(B); }
244
+
245
+uint16_t SPIClass::transfer16(const uint16_t data) {
246
+  return (transfer((data >> 8) & 0xFF) << 8);
247
+       | (transfer(data & 0xFF) & 0xFF);
280 248
 }
281 249
 
282 250
 SPIClass SPI;

Loading…
Откажи
Сачувај