Revision 1678f270 modules/PowerManagement_1-1/module.h

View differences:

modules/PowerManagement_1-1/module.h
1 1
/*
2 2
AMiRo-OS is an operating system designed for the Autonomous Mini Robot (AMiRo) platform.
3
Copyright (C) 2016..2018  Thomas Schöpping et al.
3
Copyright (C) 2016..2019  Thomas Schöpping et al.
4 4

  
5 5
This program is free software: you can redistribute it and/or modify
6 6
it under the terms of the GNU General Public License as published by
......
34 34
 */
35 35
/*===========================================================================*/
36 36

  
37
/*
37
/**
38 38
 * @brief Makro to store data in the core coupled memory (ccm).
39 39
 *        Example:
40 40
 *        int compute_buffer[128] CCM_RAM;
41 41
 *
42 42
 * @note The ccm is not connected to any bus system.
43 43
 */
44
#define CCM_RAM                                 __attribute__((section(".ram4"), aligned(4)))
44
#define CCM_RAM(...)                            __attribute__((section(".ram4"), ##__VA_ARGS__))
45 45

  
46
/*
46
/**
47 47
 * @brief Makro to store data in the ethernet memory (eth).
48 48
 *        Example:
49 49
 *        int dma_buffer[128] ETH_RAM;
50 50
 *
51 51
 * @note The eth is a dedicated memory block with its own DMA controller.
52 52
 */
53
#define ETH_RAM                                 __attribute__((section(".ram2"), aligned(4)))
53
#define ETH_RAM(...)                            __attribute__((section(".ram2"), ##__VA_ARGS__))
54 54

  
55
/*
55
/**
56 56
 * @brief Makro to store data in the backup memory (bckp).
57 57
 *        Example:
58 58
 *        int backup_buffer[128] BCKP_RAM;
59 59
 *
60 60
 * @note The eth is a dedicated memory block with its own DMA controller.
61 61
 */
62
#define BCKP_RAM                                __attribute__((section(".ram5"), aligned(4)))
62
#define BCKP_RAM(...)                           __attribute__((section(".ram5"), ##__VA_ARGS__))
63 63

  
64 64
/** @} */
65 65

  
......
92 92
extern CANConfig moduleHalCanConfig;
93 93

  
94 94
/**
95
 * @brief   I2C driver to access multiplexer, proximity sensors 1 to 4, power monitors for VIO1.8 and VIO 3.3, and fuel gauge (rear battery).
95
 * @brief   I2C driver to access the sensor ring, power monitors for VIO1.8 and VIO3.3, and fuel gauge (rear battery).
96
 * @details Depending on the attached sensor ring, the devices connected to this bus vary:
97
 *          ProximitySensor:
98
 *            - I2C multiplexer (PCA9544A)
99
 *            - proximity sensors (VCNL4020) #1 - #4
100
 *          DistanceSensor (VL53L0X):
101
 *            TODO
102
 *          DistanceSensor (VL53L1X):
103
 *            TODO
96 104
 */
97
#define MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR I2CD1
105
#define MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR   I2CD1
98 106

  
99 107
/**
100
 * @brief   Configuration for the multiplexer, proximity sensors 1 to 4, power monitors for VIO1.8 and VIO 3.3, and fuel gauge (rear battery) I2C driver.
108
 * @brief   Configuration for the sensor ring, power monitors for VIO1.8 and VIO3.3, and fuel gauge (rear battery) I2C driver.
109
 * @details Depending on the attached sensor ring, the devices connected to this bus vary:
110
 *          ProximitySensor:
111
 *            - I2C multiplexer (PCA9544A)
112
 *            - proximity sensors (VCNL4020) #1 - #4
113
 *          DistanceSensor (VL53L0X):
114
 *            TODO
115
 *          DistanceSensor (VL53L1X):
116
 *            TODO
101 117
 */
102
extern I2CConfig moduleHalI2cProxPm18Pm33GaugeRearConfig;
118
extern I2CConfig moduleHalI2cSrPm18Pm33GaugeRearConfig;
103 119

  
104 120
/**
105
 * @brief   I2C driver to access multiplexer, proximity sensors 5 to 8, power monitors for VSYS4.2, VIO 5.0 and VDD, EEPROM, touch sensor, and fuel gauge (front battery).
121
 * @brief   I2C driver to access the sensor ring, power monitors for VSYS4.2, VIO5.0 and VDD, EEPROM, and fuel gauge (front battery).
122
 * @details Depending on the attached sensor ring, the devices connected to this bus vary:
123
 *          ProximitySensor:
124
 *            - I2C multiplexer (PCA9544A)
125
 *            - proximity sensors (VCNL4020) #1 - #4
126
 *            - touch sensor (MPR121)
127
 *          DistanceSensor (VL53L0X):
128
 *            TODO
129
 *          DistanceSensor (VL53L1X):
130
 *            TODO
106 131
 */
107
#define MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT I2CD2
132
#define MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT I2CD2
108 133

  
109 134
/**
110
 * @brief   Configuration for the multiplexer, proximity sensors 1 to 4, power monitors for VIO1.8 and VIO 3.3, and fuel gauge (rear battery) I2C driver.
135
 * @brief   Configuration for the sensor ring, power monitors for VSYS4.2, VIO5.0 and VDD, EEPROM, and fuel gauge (front battery) I2C driver.
136
 * @details Depending on the attached sensor ring, the devices connected to this bus vary:
137
 *          ProximitySensor:
138
 *            - I2C multiplexer (PCA9544A)
139
 *            - proximity sensors (VCNL4020) #1 - #4
140
 *            - touch sensor (MPR121)
141
 *          DistanceSensor (VL53L0X):
142
 *            TODO
143
 *          DistanceSensor (VL53L1X):
144
 *            TODO
111 145
 */
112
extern I2CConfig moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig;
146
extern I2CConfig moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig;
113 147

  
114 148
/**
115 149
 * @brief   PWM driver for the buzzer.
......
149 183
 * @{
150 184
 */
151 185
/*===========================================================================*/
152
#include <amiro-lld.h>
186
#include <periphALtypes.h>
153 187

  
154 188
/**
155 189
 * @brief   SYS_REG_EN output signal GPIO.
......
283 317
/**
284 318
 * @brief   Event flag to be set on a IR_INT1 / CHARGE_STAT1A interrupt.
285 319
 */
286
#define MODULE_OS_IOEVENTFLAGS_IRINT1           ((eventflags_t)1 << GPIOB_IR_INT1_N)
320
#define MODULE_OS_IOEVENTFLAGS_IRINT1           AOS_IOEVENT_FLAG(GPIOB_IR_INT1_N)
287 321

  
288 322
/**
289 323
 * @brief   Event flag to be set on a GAUGE_BATLOW1 interrupt.
290 324
 */
291
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATLOW1     ((eventflags_t)1 << GPIOC_GAUGE_BATLOW1)
325
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATLOW1     AOS_IOEVENT_FLAG(GPIOC_GAUGE_BATLOW1)
292 326

  
293 327
/**
294 328
 * @brief   Event flag to be set on a GAUGE_BATGD1 interrupt.
295 329
 */
296
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATGD1      ((eventflags_t)1 << GPIOC_GAUGE_BATGD1_N)
330
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATGD1      AOS_IOEVENT_FLAG(GPIOC_GAUGE_BATGD1_N)
297 331

  
298 332
/**
299 333
 * @brief   Event flag to be set on a SYS_UART_DN interrupt.
300 334
 */
301
#define MODULE_OS_IOEVENTFLAGS_SYSUARTDN        ((eventflags_t)1 << GPIOB_SYS_UART_DN)
335
#define MODULE_OS_IOEVENTFLAGS_SYSUARTDN        AOS_IOEVENT_FLAG(GPIOB_SYS_UART_DN)
302 336

  
303 337
/**
304 338
 * @brief   Event flag to be set on a IR_INT2 / CHARGE_STAT2A interrupt.
305 339
 */
306
#define MODULE_OS_IOEVENTFLAGS_IRINT2           ((eventflags_t)1 << GPIOC_IR_INT2_N)
340
#define MODULE_OS_IOEVENTFLAGS_IRINT2           AOS_IOEVENT_FLAG(GPIOC_IR_INT2_N)
307 341

  
308 342
/**
309 343
 * @brief   Event flag to be set on a TOUCH_INT interrupt.
310 344
 */
311
#define MODULE_OS_IOEVENTFLAGS_TOUCHINT         ((eventflags_t)1 << GPIOC_TOUCH_INT_N)
345
#define MODULE_OS_IOEVENTFLAGS_TOUCHINT         AOS_IOEVENT_FLAG(GPIOC_TOUCH_INT_N)
312 346

  
313 347
/**
314 348
 * @brief   Event flag to be set on a GAUGE_BATLOW2 interrupt.
315 349
 */
316
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATLOW2     ((eventflags_t)1 << GPIOB_GAUGE_BATLOW2)
350
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATLOW2     AOS_IOEVENT_FLAG(GPIOB_GAUGE_BATLOW2)
317 351

  
318 352
/**
319 353
 * @brief   Event flag to be set on a GAUGE_BATGD2 interrupt.
320 354
 */
321
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATGD2      ((eventflags_t)1 << GPIOB_GAUGE_BATGD2_N)
355
#define MODULE_OS_IOEVENTFLAGS_GAUGEBATGD2      AOS_IOEVENT_FLAG(GPIOB_GAUGE_BATGD2_N)
322 356

  
323 357
/**
324 358
 * @brief   Event flag to be set on a PATH_DC interrupt.
325 359
 */
326
#define MODULE_OS_IOEVENTFLAGS_PATHDC           ((eventflags_t)1 << GPIOC_PATH_DC)
360
#define MODULE_OS_IOEVENTFLAGS_PATHDC           AOS_IOEVENT_FLAG(GPIOC_PATH_DC)
327 361

  
328 362
/**
329 363
 * @brief   Event flag to be set on a SYS_SPI_DIR interrupt.
330 364
 */
331
#define MODULE_OS_IOEVENTFLAGS_SYSSPIDIR        ((eventflags_t)1 << GPIOC_SYS_SPI_DIR)
365
#define MODULE_OS_IOEVENTFLAGS_SYSSPIDIR        AOS_IOEVENT_FLAG(GPIOC_SYS_SPI_DIR)
332 366

  
333 367
/**
334 368
 * @brief   Event flag to be set on a SYS_SYNC interrupt.
335 369
 */
336
#define MODULE_OS_IOEVENTFLAGS_SYSSYNC          ((eventflags_t)1 << GPIOC_SYS_INT_N)
370
#define MODULE_OS_IOEVENTFLAGS_SYSSYNC          AOS_IOEVENT_FLAG(GPIOC_SYS_INT_N)
337 371

  
338 372
/**
339 373
 * @brief   Event flag to be set on a SYS_PD interrupt.
340 374
 */
341
#define MODULE_OS_IOEVENTFLAGS_SYSPD            ((eventflags_t)1 << GPIOC_SYS_PD_N)
375
#define MODULE_OS_IOEVENTFLAGS_SYSPD            AOS_IOEVENT_FLAG(GPIOC_SYS_PD_N)
342 376

  
343 377
/**
344 378
 * @brief   Event flag to be set on a SYS_WARMRST interrupt.
345 379
 */
346
#define MODULE_OS_IOEVENTFLAGS_SYSWARMRST       ((eventflags_t)1 << GPIOC_SYS_WARMRST_N)
380
#define MODULE_OS_IOEVENTFLAGS_SYSWARMRST       AOS_IOEVENT_FLAG(GPIOC_SYS_WARMRST_N)
347 381

  
348 382
/**
349 383
 * @brief   Event flag to be set on a SYS_UART_UP interrupt.
350 384
 */
351
#define MODULE_OS_IOEVENTFLAGS_SYSUARTUP        ((eventflags_t)1 << GPIOB_SYS_UART_UP)
385
#define MODULE_OS_IOEVENTFLAGS_SYSUARTUP        AOS_IOEVENT_FLAG(GPIOB_SYS_UART_UP)
352 386

  
353 387
#if (AMIROOS_CFG_SHELL_ENABLE == true) || defined(__DOXYGEN__)
354 388
/**
......
377 411
  /* GAUGE_BATGD1 */                                                          \
378 412
  palSetPadCallback(moduleGpioGaugeBatGd1.gpio->port, moduleGpioGaugeBatGd1.gpio->pad, _intCallback, &moduleGpioGaugeBatGd1.gpio->pad); \
379 413
  palEnablePadEvent(moduleGpioGaugeBatGd1.gpio->port, moduleGpioGaugeBatGd1.gpio->pad, APAL2CH_EDGE(moduleGpioGaugeBatGd1.meta.edge));  \
380
  /* IR_INT1 */                                                               \
381
  palSetPadCallback(moduleGpioIrInt2.gpio->port, moduleGpioIrInt2.gpio->pad, _intCallback, &moduleGpioIrInt1.gpio->pad); \
382
  palEnablePadEvent(moduleGpioIrInt2.gpio->port, moduleGpioIrInt2.gpio->pad, APAL2CH_EDGE(moduleGpioIrInt1.meta.edge));  \
414
  /* IR_INT2 */                                                               \
415
  palSetPadCallback(moduleGpioIrInt2.gpio->port, moduleGpioIrInt2.gpio->pad, _intCallback, &moduleGpioIrInt2.gpio->pad); \
416
  palEnablePadEvent(moduleGpioIrInt2.gpio->port, moduleGpioIrInt2.gpio->pad, APAL2CH_EDGE(moduleGpioIrInt2.meta.edge));  \
383 417
  /* TOUCH_INT */                                                             \
384 418
  palSetPadCallback(moduleGpioTouchInt.gpio->port, moduleGpioTouchInt.gpio->pad, _intCallback, &moduleGpioTouchInt.gpio->pad); \
385 419
  palEnablePadEvent(moduleGpioTouchInt.gpio->port, moduleGpioTouchInt.gpio->pad, APAL2CH_EDGE(moduleGpioTouchInt.meta.edge));  \
......
405 439
  aosShellAddCommand(&aos.shell, &moduleUtAlldBq27500.shellcmd);              \
406 440
  aosShellAddCommand(&aos.shell, &moduleUtAlldBq27500Bq24103a.shellcmd);      \
407 441
  aosShellAddCommand(&aos.shell, &moduleUtAlldIna219.shellcmd);               \
408
  aosShellAddCommand(&aos.shell, &moduleUtAlldMpr121.shellcmd);               \
409
  aosShellAddCommand(&aos.shell, &moduleUtAlldPca9544a.shellcmd);             \
410 442
  aosShellAddCommand(&aos.shell, &moduleUtAlldPklcs1212e4001.shellcmd);       \
411 443
  aosShellAddCommand(&aos.shell, &moduleUtAlldLed.shellcmd);                  \
412 444
  aosShellAddCommand(&aos.shell, &moduleUtAlldTps62113.shellcmd);             \
413 445
  aosShellAddCommand(&aos.shell, &moduleUtAlldTps62113Ina219.shellcmd);       \
414
  aosShellAddCommand(&aos.shell, &moduleUtAlldVcnl4020.shellcmd);             \
446
  MODULE_INIT_TEST_SENSORRING();                                              \
415 447
}
448
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR) || defined(__DOXYGEN__)
449
  #define MODULE_INIT_TEST_SENSORRING() {                                     \
450
    aosShellAddCommand(&aos.shell, &moduleUtAlldPca9544a.shellcmd);           \
451
    aosShellAddCommand(&aos.shell, &moduleUtAlldMpr121.shellcmd);             \
452
    aosShellAddCommand(&aos.shell, &moduleUtAlldVcnl4020.shellcmd);           \
453
  }
454
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X) || defined(__DOXYGEN__)
455
  #define MODULE_INIT_TEST_SENSORRING() {                                     \
456
    aosShellAddCommand(&aos.shell, &moduleUtAlldPcal6524.shellcmd);           \
457
    aosShellAddCommand(&aos.shell, &moduleUtAlldAt42qt1050.shellcmd);         \
458
  }
459
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X) || defined(__DOXYGEN__)
460
  #define MODULE_INIT_TEST_SENSORRING() {                                     \
461
    aosShellAddCommand(&aos.shell, &moduleUtAlldPcal6524.shellcmd);           \
462
    aosShellAddCommand(&aos.shell, &moduleUtAlldAt42qt1050.shellcmd);         \
463
  }
464
#else
465
  #define MODULE_INIT_TEST_SENSORRING()         {}
466
#endif
416 467

  
417 468
/**
418 469
 * @brief   Periphery communication interfaces initialization hook.
419 470
 */
420 471
#define MODULE_INIT_PERIPHERY_COMM() {                                        \
472
  MODULE_INIT_PERIPHERY_COMM_SENSORRING();                                    \
421 473
  /* serial driver */                                                         \
422 474
  sdStart(&MODULE_HAL_PROGIF, &moduleHalProgIfConfig);                        \
423 475
  /* I2C */                                                                   \
424
  moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed = (PCA9544A_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed) ? PCA9544A_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed;  \
425
  moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed = (VCNL4020_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed) ? VCNL4020_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed;  \
426
  moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed = (INA219_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed) ? INA219_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed;  \
427
  moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed = (BQ27500_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed) ? BQ27500_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed;  \
428
  moduleHalI2cProxPm18Pm33GaugeRearConfig.duty_cycle = (moduleHalI2cProxPm18Pm33GaugeRearConfig.clock_speed <= 100000) ? STD_DUTY_CYCLE : FAST_DUTY_CYCLE_2;  \
429
  i2cStart(&MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR, &moduleHalI2cProxPm18Pm33GaugeRearConfig); \
430
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed = (PCA9544A_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed) ? PCA9544A_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed; \
431
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed = (VCNL4020_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed) ? VCNL4020_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed; \
432
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed = (INA219_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed) ? INA219_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed; \
433
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed = (AT24C01BN_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed) ? AT24C01BN_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed; \
434
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed = (MPR121_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed) ? MPR121_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed; \
435
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed = (BQ27500_LLD_I2C_MAXFREQUENCY < moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed) ? BQ27500_LLD_I2C_MAXFREQUENCY : moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed; \
436
  moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.duty_cycle = (moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig.clock_speed <= 100000) ? STD_DUTY_CYCLE : FAST_DUTY_CYCLE_2;  \
437
  i2cStart(&MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT, &moduleHalI2cProxPm42Pm50PmVddEepromTouchGaugeFrontConfig);  \
476
  moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed = (INA219_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed) ? INA219_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed;  \
477
  moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed = (BQ27500_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed) ? BQ27500_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed;  \
478
  moduleHalI2cSrPm18Pm33GaugeRearConfig.duty_cycle = (moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed <= 100000) ? STD_DUTY_CYCLE : FAST_DUTY_CYCLE_2;  \
479
  i2cStart(&MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR, &moduleHalI2cSrPm18Pm33GaugeRearConfig); \
480
  moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (INA219_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? INA219_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed; \
481
  moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (AT24C01BN_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? AT24C01BN_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed; \
482
  moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (BQ27500_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? BQ27500_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed; \
483
  moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.duty_cycle = (moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed <= 100000) ? STD_DUTY_CYCLE : FAST_DUTY_CYCLE_2;  \
484
  i2cStart(&MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT, &moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig);  \
438 485
  /* ADC */                                                                   \
439 486
  adcStart(&MODULE_HAL_ADC_VSYS, NULL);                                       \
440 487
  /* PWM */                                                                   \
......
444 491
  moduleHalPwmBuzzerConfig.period = moduleHalPwmBuzzerConfig.frequency / PKLCS1212E4001_LLD_FREQUENCY_SPEC; \
445 492
  pwmStart(&MODULE_HAL_PWM_BUZZER, &moduleHalPwmBuzzerConfig);                \
446 493
}
494
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR) || defined(__DOXYGEN__)
495
  #define MODULE_INIT_PERIPHERY_COMM_SENSORRING() {                           \
496
    moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed = (PCA9544A_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed) ? PCA9544A_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed;  \
497
    moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed = (VCNL4020_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed) ? VCNL4020_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed;  \
498
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (PCA9544A_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? PCA9544A_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed; \
499
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (VCNL4020_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? VCNL4020_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed; \
500
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (MPR121_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? MPR121_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed; \
501
  }
502
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X) || defined(__DOXYGEN__)
503
  #define MODULE_INIT_PERIPHERY_COMM_SENSORRING() {                           \
504
    moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed = (PCAL6524_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed) ? PCAL6524_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed;  \
505
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (PCAL6524_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? PCAL6524_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed;  \
506
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (AT42QT1050_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? AT42QT1050_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed;  \
507
  }
508
#elif (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X) || defined(__DOXYGEN__)
509
  #define MODULE_INIT_PERIPHERY_COMM_SENSORRING() {                           \
510
    moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed = (PCAL6524_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed) ? PCAL6524_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm18Pm33GaugeRearConfig.clock_speed;  \
511
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (PCAL6524_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? PCAL6524_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed;  \
512
    moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed = (AT42QT1050_LLD_I2C_MAXFREQUENCY < moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed) ? AT42QT1050_LLD_I2C_MAXFREQUENCY : moduleHalI2cSrPm42Pm50PmVddEepromGaugeFrontConfig.clock_speed;  \
513
  }
514
#else
515
  #define MODULE_INIT_PERIPHERY_COMM_SENSORRING() {}
516
#endif
447 517

  
448 518
/**
449 519
 * @brief   Periphery communication interface deinitialization hook.
......
454 524
  /* ADC */                                                                   \
455 525
  adcStop(&MODULE_HAL_ADC_VSYS);                                              \
456 526
  /* I2C */                                                                   \
457
  i2cStop(&MODULE_HAL_I2C_PROX_PM18_PM33_GAUGEREAR);                          \
458
  i2cStop(&MODULE_HAL_I2C_PROX_PM42_PM50_PMVDD_EEPROM_TOUCH_GAUGEFRONT);      \
527
  i2cStop(&MODULE_HAL_I2C_SR_PM18_PM33_GAUGEREAR);                            \
528
  i2cStop(&MODULE_HAL_I2C_SR_PM42_PM50_PMVDD_EEPROM_GAUGEFRONT);              \
459 529
  /* don't stop the serial driver so messages can still be printed */         \
460 530
}
461 531

  
462 532
/** @} */
463 533

  
464
#if (AMIROOS_CFG_SSSP_ENABLE == true)
465 534
/*===========================================================================*/
466 535
/**
467 536
 * @name Startup Shutdown Synchronization Protocol (SSSP)
......
511 580

  
512 581
/** @} */
513 582

  
514
#endif
515 583
/*===========================================================================*/
516 584
/**
517 585
 * @name Low-level drivers
......
523 591
#include <alld_bq27500.h>
524 592
#include <alld_ina219.h>
525 593
#include <alld_led.h>
526
#include <alld_mpr121.h>
527
#include <alld_pca9544a.h>
528 594
#include <alld_pklcs1212e4001.h>
529 595
#include <alld_tps62113.h>
530
#include <alld_vcnl4020.h>
531 596

  
532 597
/**
533 598
 * @brief   EEPROM driver.
......
585 650
extern LEDDriver moduleLldStatusLed;
586 651

  
587 652
/**
653
 * @brief   Step down converter driver.
654
 * @note    Although there multiple TPS62113, those are completely identical from driver few (share the same signals).
655
 */
656
extern TPS62113Driver moduleLldStepDownConverter;
657

  
658
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR) || defined(__DOXYGEN__)
659

  
660
#include <alld_mpr121.h>
661
#include <alld_pca9544a.h>
662
#include <alld_vcnl4020.h>
663

  
664
/**
588 665
 * @brief   Touch sensor driver.
589 666
 */
590 667
extern MPR121Driver moduleLldTouch;
591 668

  
592 669
/**
593
 * @brief   I2C multiplexer (I2C 1) driver.
670
 * @brief   I2C multiplexer (I2C #1) driver.
594 671
 */
595 672
extern PCA9544ADriver moduleLldI2cMultiplexer1;
596 673

  
597 674
/**
598
 * @brief   I2C multiplexer (I2C 2) driver.
675
 * @brief   I2C multiplexer (I2C #2) driver.
599 676
 */
600 677
extern PCA9544ADriver moduleLldI2cMultiplexer2;
601 678

  
602 679
/**
603
 * @brief   Step down converter driver.
604
 * @note    Although there multiple TPS62113, those are completely identical from driver few (share the same signals).
680
 * @brief   Proximity sensor (I2C #1) driver.
605 681
 */
606
extern TPS62113Driver moduleLldStepDownConverter;
682
extern VCNL4020Driver moduleLldProximity1;
607 683

  
608 684
/**
609
 * @brief   Proximity sensor (I2C 1) driver.
685
 * @brief   Proximity sensor (I2C #2) driver.
610 686
 */
611
extern VCNL4020Driver moduleLldProximity1;
687
extern VCNL4020Driver moduleLldProximity2;
688

  
689
#endif /* BOARD_SENSORRING == BOARD_PROXIMITYSENSOR */
690

  
691
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X) || defined(__DOXYGEN__)
692

  
693
#include <alld_pcal6524.h>
694
#include <alld_at42qt1050.h>
612 695

  
613 696
/**
614
 * @brief   Proximity sensor (I2C 2) driver.
697
 * @brief   GPIO extender (I2C #1) driver.
615 698
 */
616
extern VCNL4020Driver moduleLldProximity2;
699
extern PCAL6524Driver moduleLldGpioExtender1;
700

  
701
/**
702
 * @brief   GPIO extender (I2C #2) driver.
703
 */
704
extern PCAL6524Driver moduleLldGpioExtender2;
705

  
706
/**
707
 * @brief   Touch sensor driver.
708
 */
709
extern AT42QT1050Driver moduleLldTouch;
710

  
711
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X */
712

  
713
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X) || defined(__DOXYGEN__)
714

  
715
#include <alld_pcal6524.h>
716
#include <alld_at42qt1050.h>
717

  
718
/**
719
 * @brief   GPIO extender (I2C #1) driver.
720
 */
721
extern PCAL6524Driver moduleLldGpioExtender1;
722

  
723
/**
724
 * @brief   GPIO extender (I2C #2) driver.
725
 */
726
extern PCAL6524Driver moduleLldGpioExtender2;
727

  
728
/**
729
 * @brief   Touch sensor driver.
730
 */
731
extern AT42QT1050Driver moduleLldTouch;
732

  
733
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X */
617 734

  
618 735
/** @} */
619 736

  
......
631 748
#include <ut_alld_bq27500_bq24103a.h>
632 749
#include <ut_alld_ina219.h>
633 750
#include <ut_alld_led.h>
634
#include <ut_alld_mpr121.h>
635
#include <ut_alld_pca9544a.h>
636 751
#include <ut_alld_pklcs1212e4001.h>
637 752
#include <ut_alld_tps62113.h>
638 753
#include <ut_alld_tps62113_ina219.h>
639
#include <ut_alld_vcnl4020.h>
640 754

  
641 755
/**
642 756
 * @brief   ADC unit test object.
......
674 788
extern aos_unittest_t moduleUtAlldLed;
675 789

  
676 790
/**
791
 * @brief   PKLCS1212E4001 (buzzer) unit test object.
792
 */
793
extern aos_unittest_t moduleUtAlldPklcs1212e4001;
794

  
795
/**
796
 * @brief   TPS62113 (step-down converter) unit test object.
797
 */
798
extern aos_unittest_t moduleUtAlldTps62113;
799

  
800
/**
801
 * @brief   TPS62113 (step-sown converter) in combination with INA219 (power monitor) unit test object.
802
 */
803
extern aos_unittest_t moduleUtAlldTps62113Ina219;
804

  
805
#if (BOARD_SENSORRING == BOARD_PROXIMITYSENSOR) || defined(__DOXYGEN__)
806

  
807
#include <ut_alld_mpr121.h>
808
#include <ut_alld_pca9544a.h>
809
#include <ut_alld_vcnl4020.h>
810

  
811
/**
677 812
 * @brief   MPR121 (touch sensor) unit test object.
678 813
 */
679 814
extern aos_unittest_t moduleUtAlldMpr121;
......
684 819
extern aos_unittest_t moduleUtAlldPca9544a;
685 820

  
686 821
/**
687
 * @brief   PKLCS1212E4001 (buzzer) unit test object.
822
 * @brief   VCNL4020 (proximity sensor) unit test object.
688 823
 */
689
extern aos_unittest_t moduleUtAlldPklcs1212e4001;
824
extern aos_unittest_t moduleUtAlldVcnl4020;
825

  
826
#endif /* BOARD_SENSORRING == BOARD_PROXIMITYSENSOR */
827

  
828
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X) || defined(__DOXYGEN__)
829

  
830
#include <ut_alld_pcal6524.h>
831
#include <ut_alld_at42qt1050.h>
690 832

  
691 833
/**
692
 * @brief   TPS62113 (step-down converter) unit test object.
834
 * @brief   PCAL6524 (GPIO extender) unit test object.
693 835
 */
694
extern aos_unittest_t moduleUtAlldTps62113;
836
extern aos_unittest_t moduleUtAlldPcal6524;
695 837

  
696 838
/**
697
 * @brief   TPS62113 (step-sown converter) in combination with INA219 (power monitor) unit test object.
839
 * @brief   AT42QT1050 (touch sensor) unit test object.
698 840
 */
699
extern aos_unittest_t moduleUtAlldTps62113Ina219;
841
extern aos_unittest_t moduleUtAlldAt42qt1050;
842

  
843
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L0X */
844

  
845
#if (BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X) || defined(__DOXYGEN__)
846

  
847
#include <ut_alld_pcal6524.h>
848
#include <ut_alld_at42qt1050.h>
700 849

  
701 850
/**
702
 * @brief   VCNL4020 (proximity sensor) unit test object.
851
 * @brief   PCAL6524 (GPIO extender) unit test object.
703 852
 */
704
extern aos_unittest_t moduleUtAlldVcnl4020;
853
extern aos_unittest_t moduleUtAlldPcal6524;
854

  
855
/**
856
 * @brief   AT42QT1050 (touch sensor) unit test object.
857
 */
858
extern aos_unittest_t moduleUtAlldAt42qt1050;
859

  
860
#endif /* BOARD_SENSORRING == BOARD_DISTANCESENSOR_VL53L1X */
705 861

  
706 862
#endif /* AMIROOS_CFG_TESTS_ENABLE == true */
707 863

  

Also available in: Unified diff