Revision f606f432

View differences:

modules/LightRing_1-2/Makefile
146 146
include $(AMIROLLD)/drivers/LED/v1/alld_LED.mk
147 147
include $(AMIROLLD)/drivers/MIC9404x/v1/alld_MIC9404x.mk
148 148
include $(AMIROLLD)/drivers/TLC5947/v1/alld_TLC5947.mk
149
include $(AMIROLLD)/drivers/DW1000/v1/alld_DW1000.mk
149
include $(AMIROLLD)/drivers/DW1000/v2/alld_DW1000.mk
150 150

  
151 151
# Tests.
152 152
AMIROOS_TEST_INC += $(AMIROOS_TEST_DIR)periphery-lld/AT24C01B_v1 \
......
154 154
                    $(AMIROOS_TEST_DIR)periphery-lld/LED_v1 \
155 155
                    $(AMIROOS_TEST_DIR)periphery-lld/MIC9404x_v1 \
156 156
                    $(AMIROOS_TEST_DIR)periphery-lld/TLC5947_v1 \
157
                    $(AMIROOS_TEST_DIR)periphery-lld/DW1000_v1
157
                    $(AMIROOS_TEST_DIR)periphery-lld/DW1000_v2
158 158

  
159 159
# Module specific inclusion directories
160 160
MODULE_INC = $(MODULE_DIR) \
modules/LightRing_1-2/aosconf.h
84 84
 * @note    Any mandatory events (e.g. for SSSP) are enabled implicitely despite this configuration.
85 85
 */
86 86
#if !defined(OS_CFG_MAIN_LOOP_IOEVENT_MASK)
87
//  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK    0
88
  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK      MODULE_OS_IOEVENTFLAGS_DW1000
87
  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK    0
89 88
#else /* !defined(OS_CFG_MAIN_LOOP_IOEVENT_MASK) */
90 89
  #define AMIROOS_CFG_MAIN_LOOP_IOEVENT_MASK    OS_CFG_MAIN_LOOP_IOEVENT_MASK
91 90
#endif /* !defined(OS_CFG_MAIN_LOOP_IOEVENT_MASK) */
modules/LightRing_1-2/board.h
61 61
#define STM32F103xE
62 62

  
63 63
/*
64
 * Identifiers for optional peripherals.
64
 * Identifiers for the several breakout modules, which can be attached to the LightRing v1.2 module.
65 65
 */
66
#define BOARD_DW1000_CONNECTED      false
67
#define BOARD_MIC9404x_CONNECTED    true /* Power supply for DW1000 in Light ring */
66
#define BOARD_BREAKOUT_NONE         0
67
#define BOARD_BREAKOUT_UWBv10       1
68

  
69
/*
70
 * Configuration macro to define which type of sensor ring is attached.
71
 */
72
#if !defined(BOARD_BREAKOUT_MODULE) || defined(__DOXYGEN__)
73
#define BOARD_BREAKOUT_MODULE       BOARD_BREAKOUT_UWBv10
74
#endif
68 75

  
69 76
/*
70 77
 * IO pins assignments.
modules/LightRing_1-2/module.c
69 69
  /* CR2                         */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN,
70 70
};
71 71

  
72
#if (BOARD_DW1000_CONNECTED == true)
72
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
73 73

  
74
/*! SPI (high speed) configuration for DW1000 */
75 74
SPIConfig moduleHalSpiUwbHsConfig = {
76 75
  /* circular buffer mode        */ false,
77 76
  /* callback function pointer   */ NULL,
......
80 79
  /* CR1                         */ 0,                                  // 36/2 Mbps
81 80
  /* CR2                         */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN,  // 0
82 81
};
83
/*! SPI (low speed) configuration for DW1000 */
82

  
84 83
SPIConfig moduleHalSpiUwbLsConfig = {
85 84
  /* circular buffer mode        */ false,
86 85
  /* callback function pointer   */ NULL,
......
90 89
  /* CR2                         */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN,  // 0
91 90
};
92 91

  
93
#endif /* BOARD_DW1000_CONNECTED == true */
94

  
92
#endif /* (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10) */
95 93

  
96 94
/*===========================================================================*/
97 95
/**
......
177 175
};
178 176

  
179 177
/**
180
 * @brief   IO_3 breakout signal GPIO.
178
 * @brief   SYS_UART_DN bidirectional signal GPIO.
181 179
 */
182
static apalGpio_t _gpioBreakoutIo3 = {
183
  /* line */ LINE_IO_3,
180
static apalGpio_t _gpioSysUartDn = {
181
  /* line */ LINE_SYS_UART_DN,
184 182
};
185
apalControlGpio_t moduleGpioBreakoutIo3 = {
186
  /* GPIO */ &_gpioBreakoutIo3,
183
ROMCONST apalControlGpio_t moduleGpioSysUartDn = {
184
  /* GPIO */ &_gpioSysUartDn,
187 185
  /* meta */ {
188
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
186
    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
189 187
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
190
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
188
    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
191 189
  },
192 190
};
193 191

  
194 192
/**
195
 * @brief   IO_5 breakout signal GPIO.
193
 * @brief   LED output signal GPIO.
196 194
 */
197
static apalGpio_t _gpioBreakoutIo5 = {
198
  /* line */ LINE_IO_5,
195
static apalGpio_t _gpioLed = {
196
  /* line */ LINE_LED,
199 197
};
200
apalControlGpio_t moduleGpioBreakoutIo5 = {
201
  /* GPIO */ &_gpioBreakoutIo5,
198
ROMCONST apalControlGpio_t moduleGpioLed = {
199
  /* GPIO */ &_gpioLed,
202 200
  /* meta */ {
203
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
201
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
204 202
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
205 203
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
206 204
  },
207 205
};
208 206

  
209 207
/**
210
 * @brief   IO_6 breakout signal GPIO.
208
 * @brief   LIGHT_XLAT output signal GPIO.
211 209
 */
212
static apalGpio_t _gpioBreakoutIo6 = {
213
  /* line */ LINE_IO_6,
210
static apalGpio_t _gpioLightXlat = {
211
  /* line */ LINE_LIGHT_XLAT,
214 212
};
215
apalControlGpio_t moduleGpioBreakoutIo6 = {
216
  /* GPIO */ &_gpioBreakoutIo6,
213
ROMCONST apalControlGpio_t moduleGpioLightXlat = {
214
  /* GPIO */ &_gpioLightXlat,
217 215
  /* meta */ {
218
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
219
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
216
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
217
    /* active state   */ (TLC5947_LLD_XLAT_UPDATE_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
220 218
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
221 219
  },
222 220
};
223 221

  
224 222
/**
225
 * @brief   SYS_UART_DN bidirectional signal GPIO.
223
 * @brief   SW_V18_EN output signal GPIO.
226 224
 */
227
static apalGpio_t _gpioSysUartDn = {
228
  /* line */ LINE_SYS_UART_DN,
225
static apalGpio_t _gpioSwV18En = {
226
  /* line */ LINE_SW_V18_EN,
229 227
};
230
ROMCONST apalControlGpio_t moduleGpioSysUartDn = {
231
  /* GPIO */ &_gpioSysUartDn,
228
ROMCONST apalControlGpio_t moduleGpioSwV18En = {
229
  /* GPIO */ &_gpioSwV18En,
232 230
  /* meta */ {
233
    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
234
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
235
    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
231
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
232
    /* active state   */ MIC9404x_LLD_EN_ACTIVE_STATE,
233
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
236 234
  },
237 235
};
238 236

  
239
#if (BOARD_DW1000_CONNECTED == true)
240 237
/**
241
 * @brief   DW1000 interrrupt input signal GPIO.
238
 * @brief   SW_VSYS_EN output signal GPIO.
242 239
 */
243
static apalGpio_t _gpioDw1000Irqn = {
244
  /* line */  LINE_IO_8,            // (GPIOB, GPIOB_IO_8),
240
static apalGpio_t _gpioSwVsysEn = {
241
  /* line */ LINE_SW_VSYS_EN,
245 242
};
246
ROMCONST apalControlGpio_t moduleGpioDw1000Irqn = {
247
  /* GPIO */ &_gpioDw1000Irqn,
243
ROMCONST apalControlGpio_t moduleGpioSwVsysEn = {
244
  /* GPIO */ &_gpioSwVsysEn,
248 245
  /* meta */ {
249
    /* direction      */ APAL_GPIO_DIRECTION_INPUT,
250
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
251
    /* interrupt edge */ APAL_GPIO_EDGE_RISING,
246
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
247
    /* active state   */ APAL_GPIO_ACTIVE_HIGH,
248
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
252 249
  },
253 250
};
254 251

  
255 252
/**
256
 * @brief   DW1000 reset output signal GPIO.
253
 * @brief   SYS_UART_UP bidirectional signal GPIO.
257 254
 */
258
static apalGpio_t _gpioDw1000Reset = {
259
  /* line */ LINE_IO_7,
255
static apalGpio_t _gpioSysUartUp = {
256
  /* line */ LINE_SYS_UART_UP,
260 257
};
261
ROMCONST apalControlGpio_t moduleGpioDw1000Reset = {
262
  /* GPIO */ &_gpioDw1000Reset,
258
ROMCONST apalControlGpio_t moduleGpioSysUartUp = {
259
  /* GPIO */ &_gpioSysUartUp,
263 260
  /* meta */ {
264 261
    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
265 262
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
266
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
263
    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
267 264
  },
268 265
};
269 266

  
270 267
/**
271
 * @brief   IO_2 breakout signal GPIO.
268
 * @brief   SYS_PD bidirectional signal GPIO.
272 269
 */
273
static apalGpio_t _gpioDw1000WakeUp = {
274
  /* line */ LINE_IO_2,
270
static apalGpio_t _gpioSysPd = {
271
  /* line */ LINE_SYS_PD_N,
275 272
};
276
ROMCONST apalControlGpio_t moduleGpioDw1000WakeUp = {
277
  /* GPIO */ &_gpioDw1000WakeUp,
273
ROMCONST apalControlGpio_t moduleGpioSysPd = {
274
  /* GPIO */ &_gpioSysPd,
278 275
  /* meta */ {
279
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
280
    /* active state   */ APAL_GPIO_ACTIVE_HIGH,
281
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
276
    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
277
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
278
    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
282 279
  },
283 280
};
284 281

  
285 282
/**
286
 * @brief   DW1000 SPI chip select output signal GPIO.
283
 * @brief   SYS_SYNC bidirectional signal GPIO.
287 284
 */
288
static apalGpio_t _gpioSpiChipSelect = {
289
  /* line */ LINE_SPI_SS_N,
285
static apalGpio_t _gpioSysSync = {
286
  /* line */ LINE_SYS_INT_N,
290 287
};
291
ROMCONST apalControlGpio_t moduleGpioSpiChipSelect = {
292
  /* GPIO */ &_gpioSpiChipSelect,
288
ROMCONST apalControlGpio_t moduleGpioSysSync = {
289
  /* GPIO */ &_gpioSysSync,
293 290
  /* meta */ {
294
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
291
    /* direction      */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
295 292
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
296
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
293
    /* interrupt edge */ APAL_GPIO_EDGE_BOTH,
297 294
  },
298 295
};
299
#else
296

  
300 297
/**
301
 * @brief   IO_8 breakout signal GPIO.
298
 * @brief   IO_1 breakout signal GPIO.
302 299
 */
303
static apalGpio_t _gpioBreakoutIo8 = {
304
  /* line */ LINE_IO_8,
300
static apalGpio_t _gpioBreakoutIo1 = {
301
  /* line */ LINE_IO_1,
305 302
};
306
apalControlGpio_t moduleGpioBreakoutIo8 = {
307
  /* GPIO */ &_gpioBreakoutIo8,
308
  /* meta */ {
309
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
310
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
311
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
312
  },
303

  
304
/**
305
 * @brief   IO_2 breakout signal GPIO.
306
 */
307
static apalGpio_t _gpioBreakoutIo2 = {
308
  /* line */ LINE_IO_2,
309
};
310

  
311
/**
312
 * @brief   IO_3 breakout signal GPIO.
313
 */
314
static apalGpio_t _gpioBreakoutIo3 = {
315
  /* line */ LINE_IO_3,
316
};
317

  
318
/**
319
 * @brief   IO_4 breakout signal GPIO.
320
 */
321
static apalGpio_t _gpioBreakoutIo4 = {
322
  /* line */ LINE_IO_4,
323
};
324

  
325
/**
326
 * @brief   IO_5 breakout signal GPIO.
327
 */
328
static apalGpio_t _gpioBreakoutIo5 = {
329
  /* line */ LINE_IO_5,
330
};
331

  
332
/**
333
 * @brief   IO_6 breakout signal GPIO.
334
 */
335
static apalGpio_t _gpioBreakoutIo6 = {
336
  /* line */ LINE_IO_6,
313 337
};
314 338

  
315 339
/**
......
318 342
static apalGpio_t _gpioBreakoutIo7 = {
319 343
  /* line */ LINE_IO_7,
320 344
};
321
apalControlGpio_t moduleGpioBreakoutIo7 = {
322
  /* GPIO */ &_gpioBreakoutIo7,
345

  
346
/**
347
 * @brief   IO_8 breakout signal GPIO.
348
 */
349
static apalGpio_t _gpioBreakoutIo8 = {
350
  /* line */ LINE_IO_8,
351
};
352

  
353
#if (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_NONE)
354

  
355
apalControlGpio_t moduleGpioBreakoutIo1 = {
356
  /* GPIO */ &_gpioBreakoutIo1,
323 357
  /* meta */ {
324 358
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
325
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
359
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
326 360
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
327 361
  },
328 362
};
329 363

  
330
/**
331
 * @brief   IO_2 breakout signal GPIO.
332
 */
333
static apalGpio_t _gpioBreakoutIo2 = {
334
  /* line */ LINE_IO_2,
335
};
336 364
apalControlGpio_t moduleGpioBreakoutIo2 = {
337 365
  /* GPIO */ &_gpioBreakoutIo2,
338 366
  /* meta */ {
339 367
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
340
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
368
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
341 369
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
342 370
  },
343 371
};
344
#endif  /* BOARD_DW1000_CONNECTED == true */
345 372

  
346

  
347
/**
348
 * @brief   IO_4 breakout signal GPIO.
349
 */
350
static apalGpio_t _gpioBreakoutIo4 = {
351
  /* line */ LINE_IO_4,
373
apalControlGpio_t moduleGpioBreakoutIo3 = {
374
  /* GPIO */ &_gpioBreakoutIo3,
375
  /* meta */ {
376
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
377
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
378
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
379
  },
352 380
};
381

  
353 382
apalControlGpio_t moduleGpioBreakoutIo4 = {
354 383
  /* GPIO */ &_gpioBreakoutIo4,
355 384
  /* meta */ {
356 385
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
357
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
386
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
358 387
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
359 388
  },
360 389
};
361 390

  
362
/**
363
 * @brief   IO_1 breakout signal GPIO.
364
 */
365
static apalGpio_t _gpioBreakoutIo1 = {
366
  /* line */ LINE_IO_1,
367
};
368
apalControlGpio_t moduleGpioBreakoutIo1 = {
369
  /* GPIO */ &_gpioBreakoutIo1,
391
apalControlGpio_t moduleGpioBreakoutIo5 = {
392
  /* GPIO */ &_gpioBreakoutIo5,
370 393
  /* meta */ {
371 394
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
372
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
395
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
373 396
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
374 397
  },
375 398
};
376 399

  
377

  
378
/**
379
 * @brief   LED output signal GPIO.
380
 */
381
static apalGpio_t _gpioLed = {
382
  /* line */ LINE_LED,
383
};
384
ROMCONST apalControlGpio_t moduleGpioLed = {
385
  /* GPIO */ &_gpioLed,
400
apalControlGpio_t moduleGpioBreakoutIo6 = {
401
  /* GPIO */ &_gpioBreakoutIo6,
386 402
  /* meta */ {
387
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
388
    /* active state   */ APAL_GPIO_ACTIVE_LOW,
403
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
404
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
389 405
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
390 406
  },
391 407
};
392 408

  
393
/**
394
 * @brief   LIGHT_XLAT output signal GPIO.
395
 */
396
static apalGpio_t _gpioLightXlat = {
397
  /* line */ LINE_LIGHT_XLAT,
398
};
399
ROMCONST apalControlGpio_t moduleGpioLightXlat = {
400
  /* GPIO */ &_gpioLightXlat,
409
apalControlGpio_t moduleGpioBreakoutIo7 = {
410
  /* GPIO */ &_gpioBreakoutIo7,
401 411
  /* meta */ {
402
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
403
    /* active state   */ (TLC5947_LLD_XLAT_UPDATE_EDGE == APAL_GPIO_EDGE_RISING) ? APAL_GPIO_ACTIVE_HIGH : APAL_GPIO_ACTIVE_LOW,
412
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
413
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
404 414
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
405 415
  },
406 416
};
407 417

  
408
/**
409
 * @brief   SW_V18_EN output signal GPIO.
410
 */
411
static apalGpio_t _gpioSwV18En = {
412
  /* line */ LINE_SW_V18_EN,
413
};
414
ROMCONST apalControlGpio_t moduleGpioSwV18En = {
415
  /* GPIO */ &_gpioSwV18En,
418
apalControlGpio_t moduleGpioBreakoutIo8 = {
419
  /* GPIO */ &_gpioBreakoutIo8,
416 420
  /* meta */ {
417
    /* direction      */ APAL_GPIO_DIRECTION_OUTPUT,
418
    /* active state   */ MIC9404x_LLD_EN_ACTIVE_STATE,
421
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
422
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
419 423
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
420 424
  },
421 425
};
422 426

  
423
/**
424
 * @brief   SW_VSYS_EN output signal GPIO.
425
 */
426
static apalGpio_t _gpioSwVsysEn = {
427
  /* line */ LINE_SW_VSYS_EN,
427
#elif (BOARD_BREAKOUT_MODULE == BOARD_BREAKOUT_UWBv10)
428

  
429
apalControlGpio_t moduleGpioBreakoutIo1 = {
430
  /* GPIO */ &_gpioBreakoutIo1,
431
  /* meta */ {
432
    /* direction      */ APAL_GPIO_DIRECTION_UNDEFINED,
433
    /* active state   */ APAL_GPIO_ACTIVE_NONE,
434
    /* interrupt edge */ APAL_GPIO_EDGE_NONE,
435
  },
428 436
};
429
ROMCONST apalControlGpio_t moduleGpioSwVsysEn = {
430
  /* GPIO */ &_gpioSwVsysEn,
437

  
438
apalControlGpio_t moduleGpioBrea