SmartSnippets DA1459x SDK
hw_bod_da1459x.h
Go to the documentation of this file.
1 
42 #ifndef HW_BOD_DA1459x_H_
43 #define HW_BOD_DA1459x_H_
44 
45 
46 #include "sdk_defs.h"
47 
51 typedef enum {
52  HW_BOD_CHANNEL_1V8 = REG_POS(CRG_TOP, BOD_CTRL_REG, BOD_DIS_VDDIO_COMP),
53  HW_BOD_CHANNEL_VDCDC = REG_POS(CRG_TOP, BOD_CTRL_REG, BOD_DIS_VDCDC_COMP),
54  HW_BOD_CHANNEL_VDD = REG_POS(CRG_TOP, BOD_CTRL_REG, BOD_DIS_VDD_COMP)
56 
57 #if dg_configUSE_BOD
58 
59 typedef enum {
60  HW_BOD_VDD_LEVEL_SLEEP_0V70 = 700,
61  HW_BOD_VDD_LEVEL_ACTIVE_0V78 = 780,
62  HW_BOD_VDD_LEVEL_ACTIVE_1V05 = 1050,
63  HW_BOD_VDD_LEVEL_UNDEF = UINT16_MAX,
64 } HW_BOD_VDD_LVL;
65 
72 __STATIC_FORCEINLINE void hw_bod_activate_channel(HW_BOD_CHANNEL channel)
73 {
74  switch (channel) {
75  case HW_BOD_CHANNEL_1V8:
76  REG_CLR_BIT(CRG_TOP, BOD_CTRL_REG, BOD_VDDIO_MASK);
77  while (REG_GETF(CRG_TOP, STARTUP_STATUS_REG, BOD_VDDIO_MASK_SYNC_RD));
78  break;
80  REG_CLR_BIT(CRG_TOP, BOD_CTRL_REG, BOD_VDCDC_MASK);
81  while (REG_GETF(CRG_TOP, STARTUP_STATUS_REG, BOD_VDCDC_MASK_SYNC_RD));
82  break;
83  case HW_BOD_CHANNEL_VDD:
84  REG_CLR_BIT(CRG_TOP, BOD_CTRL_REG, BOD_VDD_MASK);
85  while (REG_GETF(CRG_TOP, STARTUP_STATUS_REG, BOD_VDDD_MASK_SYNC_RD));
86  break;
87  default:
88  /* Invalid channel, we should not reach here. */
89  ASSERT_WARNING(0);
90  }
91 }
92 
99 __STATIC_FORCEINLINE void hw_bod_deactivate_channel(HW_BOD_CHANNEL channel)
100 {
101  switch (channel) {
102  case HW_BOD_CHANNEL_1V8:
103  REG_SET_BIT(CRG_TOP, BOD_CTRL_REG, BOD_VDDIO_MASK);
104  while (!REG_GETF(CRG_TOP, STARTUP_STATUS_REG, BOD_VDDIO_MASK_SYNC_RD));
105  break;
107  REG_SET_BIT(CRG_TOP, BOD_CTRL_REG, BOD_VDCDC_MASK);
108  while (!REG_GETF(CRG_TOP, STARTUP_STATUS_REG, BOD_VDCDC_MASK_SYNC_RD));
109  break;
110  case HW_BOD_CHANNEL_VDD:
111  REG_SET_BIT(CRG_TOP, BOD_CTRL_REG, BOD_VDD_MASK);
112  while (!REG_GETF(CRG_TOP, STARTUP_STATUS_REG, BOD_VDDD_MASK_SYNC_RD));
113  break;
114  default:
115  /* Invalid channel, we should not reach here. */
116  ASSERT_WARNING(0);
117  }
118 }
119 
132 void hw_bod_set_channel_voltage_level(HW_BOD_CHANNEL channel, HW_BOD_VDD_LVL level);
133 
142 HW_BOD_VDD_LVL hw_bod_get_channel_voltage_level(HW_BOD_CHANNEL channel);
143 
148 void hw_bod_configure(void);
149 
150 #endif /* dg_configUSE_BOD */
151 
160 bool hw_bod_get_status(HW_BOD_CHANNEL channel);
161 
166 void hw_bod_deactivate(void);
167 
168 
169 #endif /* HW_BOD_DA1459x_H_ */
170 
HW_BOD_CHANNEL
HW_BOD_CHANNEL
The BOD channel name.
Definition: hw_bod_da1459x.h:51
REG_POS
#define REG_POS(base, reg, field)
Access register field position.
Definition: sdk_defs.h:591
REG_CLR_BIT
#define REG_CLR_BIT(base, reg, field)
Clear a bit of a register.
Definition: sdk_defs.h:781
REG_SET_BIT
#define REG_SET_BIT(base, reg, field)
Set a bit of a register.
Definition: sdk_defs.h:766
sdk_defs.h
Central include header file with platform definitions.
HW_BOD_CHANNEL_1V8
Definition: hw_bod_da1459x.h:52
hw_bod_activate_channel
__STATIC_FORCEINLINE void hw_bod_activate_channel(HW_BOD_CHANNEL channel)
Activate BOD for a channel.
Definition: hw_bod_da1459x.h:72
HW_BOD_CHANNEL_VDCDC
Definition: hw_bod_da1459x.h:53
hw_bod_deactivate
void hw_bod_deactivate(void)
Deactivate BOD for all channels.
hw_bod_get_status
bool hw_bod_get_status(HW_BOD_CHANNEL channel)
Read BOD status for a channel.
hw_bod_configure
void hw_bod_configure(void)
Configure BOD.
REG_GETF
#define REG_GETF(base, reg, field)
Return the value of a register field.
Definition: sdk_defs.h:711
hw_bod_set_channel_voltage_level
void hw_bod_set_channel_voltage_level(HW_BOD_CHANNEL channel, HW_BOD_VDD_LVL level)
Set BOD channel voltage level.
hw_bod_get_channel_voltage_level
HW_BOD_VDD_LVL hw_bod_get_channel_voltage_level(HW_BOD_CHANNEL channel)
Get BOD channel voltage level.
HW_BOD_CHANNEL_VDD
Definition: hw_bod_da1459x.h:54
hw_bod_deactivate_channel
__STATIC_FORCEINLINE void hw_bod_deactivate_channel(HW_BOD_CHANNEL channel)
Deactivate BOD for a channel.
Definition: hw_bod_da1459x.h:99