Revision 0b989911 modules/LightRing_1-2/module.c
| 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) |
|
| 73 |
|
|
| 74 |
/*! SPI (high speed) configuration for DW1000 */ |
|
| 75 |
SPIConfig moduleHalSpiUwbHsConfig = {
|
|
| 76 |
/* circular buffer mode */ false, |
|
| 77 |
/* callback function pointer */ NULL, |
|
| 78 |
/* chip select line port */ PAL_PORT(LINE_SPI_SS_N), |
|
| 79 |
/* chip select line pad number */ PAL_PAD(LINE_SPI_SS_N), |
|
| 80 |
/* CR1 */ 0, // 36/2 Mbps |
|
| 81 |
/* CR2 */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN, // 0 |
|
| 82 |
}; |
|
| 83 |
/*! SPI (low speed) configuration for DW1000 */ |
|
| 84 |
SPIConfig moduleHalSpiUwbLsConfig = {
|
|
| 85 |
/* circular buffer mode */ false, |
|
| 86 |
/* callback function pointer */ NULL, |
|
| 87 |
/* chip select line port */ PAL_PORT(LINE_SPI_SS_N), |
|
| 88 |
/* chip select line pad number */ PAL_PAD(LINE_SPI_SS_N), |
|
| 89 |
/* CR1 */ SPI_CR1_BR_1 | SPI_CR1_BR_0, // 36/16 Mbps |
|
| 90 |
/* CR2 */ SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN, // 0 |
|
| 91 |
}; |
|
| 92 |
|
|
| 93 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
| 94 |
|
|
| 72 | 95 |
|
| 73 | 96 |
/*===========================================================================*/ |
| 74 | 97 |
/** |
| ... | ... | |
| 213 | 236 |
}, |
| 214 | 237 |
}; |
| 215 | 238 |
|
| 239 |
#if (BOARD_DW1000_CONNECTED == true) |
|
| 216 | 240 |
/** |
| 217 |
* @brief IO_7 breakout signal GPIO.
|
|
| 241 |
* @brief DW1000 interrrupt input signal GPIO.
|
|
| 218 | 242 |
*/ |
| 219 |
static apalGpio_t _gpioBreakoutIo7 = {
|
|
| 243 |
static apalGpio_t _gpioDw1000Irqn = {
|
|
| 244 |
/* line */ LINE_IO_8, // (GPIOB, GPIOB_IO_8), |
|
| 245 |
}; |
|
| 246 |
ROMCONST apalControlGpio_t moduleGpioDw1000Irqn = {
|
|
| 247 |
/* GPIO */ &_gpioDw1000Irqn, |
|
| 248 |
/* meta */ {
|
|
| 249 |
/* direction */ APAL_GPIO_DIRECTION_INPUT, |
|
| 250 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
| 251 |
/* interrupt edge */ APAL_GPIO_EDGE_RISING, |
|
| 252 |
}, |
|
| 253 |
}; |
|
| 254 |
|
|
| 255 |
/** |
|
| 256 |
* @brief DW1000 reset output signal GPIO. |
|
| 257 |
*/ |
|
| 258 |
static apalGpio_t _gpioDw1000Reset = {
|
|
| 220 | 259 |
/* line */ LINE_IO_7, |
| 221 | 260 |
}; |
| 222 |
apalControlGpio_t moduleGpioBreakoutIo7 = {
|
|
| 223 |
/* GPIO */ &_gpioBreakoutIo7,
|
|
| 261 |
ROMCONST apalControlGpio_t moduleGpioDw1000Reset = {
|
|
| 262 |
/* GPIO */ &_gpioDw1000Reset,
|
|
| 224 | 263 |
/* meta */ {
|
| 225 |
/* direction */ APAL_GPIO_DIRECTION_UNDEFINED,
|
|
| 264 |
/* direction */ APAL_GPIO_DIRECTION_BIDIRECTIONAL,
|
|
| 226 | 265 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
| 227 | 266 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
| 228 | 267 |
}, |
| 229 | 268 |
}; |
| 230 | 269 |
|
| 231 | 270 |
/** |
| 271 |
* @brief IO_2 breakout signal GPIO. |
|
| 272 |
*/ |
|
| 273 |
static apalGpio_t _gpioDw1000WakeUp = {
|
|
| 274 |
/* line */ LINE_IO_2, |
|
| 275 |
}; |
|
| 276 |
ROMCONST apalControlGpio_t moduleGpioDw1000WakeUp = {
|
|
| 277 |
/* GPIO */ &_gpioDw1000WakeUp, |
|
| 278 |
/* meta */ {
|
|
| 279 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
| 280 |
/* active state */ APAL_GPIO_ACTIVE_HIGH, |
|
| 281 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
| 282 |
}, |
|
| 283 |
}; |
|
| 284 |
|
|
| 285 |
/** |
|
| 286 |
* @brief DW1000 SPI chip select output signal GPIO. |
|
| 287 |
*/ |
|
| 288 |
static apalGpio_t _gpioSpiChipSelect = {
|
|
| 289 |
/* line */ LINE_SPI_SS_N, |
|
| 290 |
}; |
|
| 291 |
ROMCONST apalControlGpio_t moduleGpioSpiChipSelect = {
|
|
| 292 |
/* GPIO */ &_gpioSpiChipSelect, |
|
| 293 |
/* meta */ {
|
|
| 294 |
/* direction */ APAL_GPIO_DIRECTION_OUTPUT, |
|
| 295 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
| 296 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
| 297 |
}, |
|
| 298 |
}; |
|
| 299 |
#else |
|
| 300 |
/** |
|
| 232 | 301 |
* @brief IO_8 breakout signal GPIO. |
| 233 | 302 |
*/ |
| 234 | 303 |
static apalGpio_t _gpioBreakoutIo8 = {
|
| ... | ... | |
| 244 | 313 |
}; |
| 245 | 314 |
|
| 246 | 315 |
/** |
| 316 |
* @brief IO_7 breakout signal GPIO. |
|
| 317 |
*/ |
|
| 318 |
static apalGpio_t _gpioBreakoutIo7 = {
|
|
| 319 |
/* line */ LINE_IO_7, |
|
| 320 |
}; |
|
| 321 |
apalControlGpio_t moduleGpioBreakoutIo7 = {
|
|
| 322 |
/* GPIO */ &_gpioBreakoutIo7, |
|
| 323 |
/* meta */ {
|
|
| 324 |
/* direction */ APAL_GPIO_DIRECTION_UNDEFINED, |
|
| 325 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
| 326 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
| 327 |
}, |
|
| 328 |
}; |
|
| 329 |
|
|
| 330 |
/** |
|
| 331 |
* @brief IO_2 breakout signal GPIO. |
|
| 332 |
*/ |
|
| 333 |
static apalGpio_t _gpioBreakoutIo2 = {
|
|
| 334 |
/* line */ LINE_IO_2, |
|
| 335 |
}; |
|
| 336 |
apalControlGpio_t moduleGpioBreakoutIo2 = {
|
|
| 337 |
/* GPIO */ &_gpioBreakoutIo2, |
|
| 338 |
/* meta */ {
|
|
| 339 |
/* direction */ APAL_GPIO_DIRECTION_UNDEFINED, |
|
| 340 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
| 341 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
| 342 |
}, |
|
| 343 |
}; |
|
| 344 |
#endif /* BOARD_DW1000_CONNECTED == true */ |
|
| 345 |
|
|
| 346 |
|
|
| 347 |
/** |
|
| 247 | 348 |
* @brief IO_4 breakout signal GPIO. |
| 248 | 349 |
*/ |
| 249 | 350 |
static apalGpio_t _gpioBreakoutIo4 = {
|
| ... | ... | |
| 273 | 374 |
}, |
| 274 | 375 |
}; |
| 275 | 376 |
|
| 276 |
/** |
|
| 277 |
* @brief IO_2 breakout signal GPIO. |
|
| 278 |
*/ |
|
| 279 |
static apalGpio_t _gpioBreakoutIo2 = {
|
|
| 280 |
/* line */ LINE_IO_2, |
|
| 281 |
}; |
|
| 282 |
apalControlGpio_t moduleGpioBreakoutIo2 = {
|
|
| 283 |
/* GPIO */ &_gpioBreakoutIo2, |
|
| 284 |
/* meta */ {
|
|
| 285 |
/* direction */ APAL_GPIO_DIRECTION_UNDEFINED, |
|
| 286 |
/* active state */ APAL_GPIO_ACTIVE_LOW, |
|
| 287 |
/* interrupt edge */ APAL_GPIO_EDGE_NONE, |
|
| 288 |
}, |
|
| 289 |
}; |
|
| 290 | 377 |
|
| 291 | 378 |
/** |
| 292 | 379 |
* @brief LED output signal GPIO. |
| ... | ... | |
| 419 | 506 |
|
| 420 | 507 |
/*===========================================================================*/ |
| 421 | 508 |
/** |
| 509 |
* @name Hardware specific wrappers Functions |
|
| 510 |
* @{
|
|
| 511 |
*/ |
|
| 512 |
/*===========================================================================*/ |
|
| 513 |
|
|
| 514 |
#if (BOARD_DW1000_CONNECTED == true) |
|
| 515 |
/*! @brief Manually reset the DW1000 module */ |
|
| 516 |
void reset_DW1000(void){
|
|
| 517 |
|
|
| 518 |
// Set the pin as output |
|
| 519 |
palSetLineMode(moduleGpioDw1000Reset.gpio->line, APAL_GPIO_DIRECTION_OUTPUT); |
|
| 520 |
|
|
| 521 |
//drive the RSTn pin low |
|
| 522 |
apalGpioWrite(moduleGpioDw1000Reset.gpio, APAL_GPIO_LOW); |
|
| 523 |
|
|
| 524 |
//put the pin back to tri-state ... as input |
|
| 525 |
// palSetLineMode(moduleGpioDw1000Reset.gpio->line, APAL_GPIO_DIRECTION_INPUT); // TODO: |
|
| 526 |
|
|
| 527 |
aosThdMSleep(2); |
|
| 528 |
} |
|
| 529 |
|
|
| 530 |
/*! @brief entry point to the IRQn event in DW1000 module |
|
| 531 |
* |
|
| 532 |
* */ |
|
| 533 |
void process_deca_irq(void){
|
|
| 534 |
do{
|
|
| 535 |
dwt_isr(); |
|
| 536 |
//while IRS line active (ARM can only do edge sensitive interrupts) |
|
| 537 |
}while(port_CheckEXT_IRQ() == 1); |
|
| 538 |
} |
|
| 539 |
|
|
| 540 |
/*! @brief Check the current value of GPIO pin and return the value */ |
|
| 541 |
apalGpioState_t port_CheckEXT_IRQ(void) {
|
|
| 542 |
apalGpioState_t val; |
|
| 543 |
apalGpioRead(moduleGpioDw1000Irqn.gpio, &val); |
|
| 544 |
return val; |
|
| 545 |
} |
|
| 546 |
|
|
| 547 |
/*! @brief Manually set the chip select pin of the SPI */ |
|
| 548 |
void set_SPI_chip_select(void){
|
|
| 549 |
apalGpioWrite(moduleGpioSpiChipSelect.gpio, APAL_GPIO_HIGH); |
|
| 550 |
} |
|
| 551 |
|
|
| 552 |
/*! @brief Manually reset the chip select pin of the SPI */ |
|
| 553 |
void clear_SPI_chip_select(void){
|
|
| 554 |
apalGpioWrite(moduleGpioSpiChipSelect.gpio, APAL_GPIO_LOW); |
|
| 555 |
} |
|
| 556 |
|
|
| 557 |
/*! @brief Change the SPI speed configuration on the fly */ |
|
| 558 |
void setHighSpeed_SPI(bool speedValue, DW1000Driver* drv){
|
|
| 559 |
|
|
| 560 |
spiStop(drv->spid); |
|
| 561 |
|
|
| 562 |
if (speedValue == FALSE){
|
|
| 563 |
spiStart(drv->spid, &moduleHalSpiUwbLsConfig); // low speed spi configuration |
|
| 564 |
} |
|
| 565 |
else{
|
|
| 566 |
spiStart(drv->spid, &moduleHalSpiUwbHsConfig); // high speed spi configuration |
|
| 567 |
} |
|
| 568 |
} |
|
| 569 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
| 570 |
/** @} */ |
|
| 571 |
|
|
| 572 |
|
|
| 573 |
/*===========================================================================*/ |
|
| 574 |
/** |
|
| 422 | 575 |
* @name Low-level drivers |
| 423 | 576 |
* @{
|
| 424 | 577 |
*/ |
| ... | ... | |
| 469 | 622 |
/* XLAT signal GPIO */ &moduleGpioLightXlat, |
| 470 | 623 |
}; |
| 471 | 624 |
|
| 625 |
#if (BOARD_DW1000_CONNECTED == true) |
|
| 626 |
DW1000Driver moduleLldDw1000 = {
|
|
| 627 |
/* SPI driver */ &MODULE_HAL_SPI_UWB, |
|
| 628 |
/* ext interrupt */ &moduleGpioDw1000Irqn, |
|
| 629 |
/* RESET DW1000 */ &moduleGpioDw1000Reset, |
|
| 630 |
}; |
|
| 631 |
|
|
| 632 |
MIC9404xDriver moduleLldPowerSwitchDw1000 = {
|
|
| 633 |
/* power enable GPIO */ &moduleGpioSwVsysEn, |
|
| 634 |
}; |
|
| 635 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
| 636 |
|
|
| 472 | 637 |
/** @} */ |
| 473 | 638 |
|
| 474 | 639 |
/*===========================================================================*/ |
| ... | ... | |
| 531 | 696 |
} |
| 532 | 697 |
AOS_SHELL_COMMAND(moduleTestTlc5947ShellCmd, "test:Lights", _testTlc5947ShellCmdCb); |
| 533 | 698 |
|
| 699 |
#if (BOARD_DW1000_CONNECTED == true) || defined(__DOXYGEN__) |
|
| 700 |
/* |
|
| 701 |
* UwB Driver (DW1000) |
|
| 702 |
*/ |
|
| 703 |
#include <module_test_DW1000.h> |
|
| 704 |
static int _testDw1000ShellCmdCb(BaseSequentialStream* stream, int argc, char* argv[]) |
|
| 705 |
{
|
|
| 706 |
return moduleTestDw1000ShellCb(stream, argc, argv, NULL); |
|
| 707 |
} |
|
| 708 |
AOS_SHELL_COMMAND(moduleTestDw1000ShellCmd, "test:DW1000", _testDw1000ShellCmdCb); |
|
| 709 |
#endif /* (BOARD_DW1000_CONNECTED == true) */ |
|
| 710 |
|
|
| 534 | 711 |
/* |
| 535 | 712 |
* entire module |
| 536 | 713 |
*/ |
Also available in: Unified diff