Revision 1678f270 modules/PowerManagement_1-1/module.h
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