APP BOD驱动
宏定义
APP_BOD_ENABLE
| 描述 | 值 |
|---|---|
|
使能BOD模块 |
HAL_BOD_ENABLE |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
APP_BOD_DISABLE
| 描述 | 值 |
|---|---|
|
不使能BOD模块 |
HAL_BOD_DISABLE |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
APP_BOD_EVENT_ENABLE
| 描述 | 值 |
|---|---|
|
使能BOD2事件 |
HAL_BOD2_ENABLE |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
APP_BOD_EVENT_DISABLE
| 描述 | 值 |
|---|---|
|
不使能BOD2事件 |
HAL_BOD2_DISABLE |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
APP_BOD_EVENT_LEVEL_XX
| 描述 | 值 |
|---|---|
| BOD2事件等级0 | HAL_BOD2_LEVEL_0 |
| BOD2事件等级1 | HAL_BOD2_LEVEL_1 |
| BOD2事件等级2 | HAL_BOD2_LEVEL_2 |
| BOD2事件等级3 | HAL_BOD2_LEVEL_3 |
| BOD2事件等级4 | HAL_BOD2_LEVEL_4 |
| BOD2事件等级5 | HAL_BOD2_LEVEL_5 |
| BOD2事件等级6 | HAL_BOD2_LEVEL_6 |
| BOD2事件等级7 | HAL_BOD2_LEVEL_7 |
| BOD2事件等级8 | HAL_BOD2_LEVEL_8(仅GR5526支持) |
| BOD2事件等级9 | HAL_BOD2_LEVEL_9(仅GR5526支持) |
| BOD2事件等级10 | HAL_BOD2_LEVEL_10(仅GR5526支持) |
| BOD2事件等级11 | HAL_BOD2_LEVEL_11(仅GR5526支持) |
| BOD2事件等级12 | HAL_BOD2_LEVEL_12(仅GR5526支持) |
| BOD2事件等级13 | HAL_BOD2_LEVEL_13(仅GR5526支持) |
| BOD2事件等级14 | HAL_BOD2_LEVEL_14(仅GR5526支持) |
| BOD2事件等级15 | HAL_BOD2_LEVEL_15(仅GR5526支持) |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
结构体
app_bod_params_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
bod_init_t init |
BOD初始化参数结构体 |
参考bod_init_t结构体 |
|
bod_env_t bod_env |
用于记录初始化设备的句柄,无需配置 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
bod_init_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
uint8_t bod_en |
使能BOD模块(硬件),当供电电压低于典型值1.45 V时,复位MCU |
该参数的取值可以是下列值中的任意一个:
|
|
uint8_t bod2_en |
使能BOD2事件(软件),当供电电压低于bod2_lvl配置的值时,触发中断 |
该参数的取值可以是下列值中的任意一个:
|
|
uint8_t bod2_lvl |
BOD2事件触发阈值 |
该参数的取值可以是下列值中的任意一个:
每个档位对应的电压值请参考芯片Datasheet中的BOD章节。2.4 V以下将低于芯片正常供电电压,不建议使用 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
app_bod_evt_t
结构体定义如下:
| 成员 | 描述 | 取值 |
|---|---|---|
|
app_bod_evt_type_t type |
BOD事件结构体 |
该参数的取值可以是下列值中的任意一个:
|
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
枚举
app_bod_evt_type_t
枚举定义如下:
| 成员 | 描述 |
|---|---|
|
APP_BOD_EVT_TRIGGERED |
BOD中断触发事件:供电电压低于阈值时,触发中断 |
|
APP_BOD_EVT_REMOVED |
BOD条件解除中断事件:供电电压高于阈值时,触发“BOD解除”中断(GR551x不支持) |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
app_bod_state_t
枚举定义如下:
| 成员 | 描述 |
|---|---|
| APP_BOD_INVALID = 0 | BOD不可用 |
| APP_BOD_ACTIVITY = 1 | BOD激活 |
详细信息请参考文件:SDK_Folder\drivers\inc\app_bod.h。
接口函数
| API | 芯片 | ||||
|---|---|---|---|---|---|
| GR551x | GR5526 | GR5x25 | GR533x | GR5405 | |
|
app_bod_init |
Y |
Y |
Y | Y | Y |
|
app_bod_deinit |
Y |
Y |
Y | Y | Y |
|
app_bod_enable |
Y |
Y |
Y | Y | Y |
|
app_bod_event_enable |
Y |
Y |
Y | Y | Y |
|
app_bod_event_set_level |
Y |
Y |
Y | Y | Y |
| app_bod_static_mode_enable | N | N | N | Y | Y |
| app_bod_event_auto_power_bypass_enable | N | N | N | Y | Y |
app_bod_init
| 函数原型 |
uint16_t app_bod_init(app_bod_params_t *p_params, app_bod_evt_handler_t evt_handler) |
|---|---|
| 功能说明 |
初始化BOD |
| 输入参数 |
|
| 返回值 |
APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
回调函数形式参照typedef void (*app_bod_evt_handler_t)(app_bod_evt_t *p_evt); HAL层已经实现中断标志位的清理,用户无需关心中断标志的清理,回调函数根据返回事件类型进行相应的处理即可。 |
app_bod_deinit
| 函数原型 |
uint16_t app_bod_deinit(void) |
|---|---|
| 功能说明 |
反初始化BOD |
| 输入参数 | |
| 返回值 |
APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
app_bod_enable
| 函数原型 |
uint16_t app_bod_enable(uint8_t enable) |
|---|---|
| 功能说明 |
使能BOD硬件 |
| 输入参数 |
enable:1-使能;0-禁用 |
| 返回值 |
APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
app_bod_event_enable
| 函数原型 |
uint16_t app_bod_event_enable(uint8_t enable) |
|---|---|
| 功能说明 |
使能BOD事件 |
| 输入参数 |
enable:1-使能;0-禁用 |
| 返回值 |
APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
app_bod_event_set_level
| 函数原型 |
uint16_t app_bod_event_set_level(uint8_t level) |
|---|---|
| 功能说明 |
设置BOD事件优先级 |
| 输入参数 |
level:优先级 |
| 返回值 |
APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
app_bod_static_mode_enable
| 函数原型 | uint16_t app_bod_static_mode_enable(uint8_t enable) |
|---|---|
| 功能说明 | 设置是否使能BOD静态模式 |
| 输入参数 | enable:1-使能;0-禁用 |
| 返回值 | APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
app_bod_event_auto_power_bypass_enable
| 函数原型 | uint16_t app_bod_event_auto_power_bypass_enable (uint8_t enable) |
|---|---|
| 功能说明 | 设置是否使能BOD旁路自动上/下电功能 |
| 输入参数 | enable:1-使能;0-禁用 |
| 返回值 | APP_DRV_xxx:详见SDK_Folder\drivers\inc\app_drv_error.h宏定义 |
| 备注 |
示例工程
BOD供电电压监测
本示例实现对供电电压的监测,工程路径:SDK_Folder\projects\peripheral\bod\app_bod。
初始化参数
s_params.init.bod_en = APP_BOD_ENABLE;
s_params.init.bod2_en = APP_BOD_EVENT_ENABLE;
s_params.init.bod2_lvl = APP_BOD_EVENT_LEVEL_10;
- init.bod_en:APP_BOD_ENABLE使能BOD模块(硬件),当供电电压低于典型值1.45 V时,复位MCU。
- init.bod2_en:APP_BOD_EVENT_ENABLE使能BOD2事件(软件),当供电电压低于bod2_lvl配置的值时,触发中断。
- init.bod2_lvl:BOD2事件触发阈值,APP_BOD_EVENT_LEVEL_10表示2.5 V。
重要函数
初始化BOD
app_bod_init(&s_params, app_bod_evt_handler)测试验证
- 连接开发板到PC端,下载程序,打开串口调试助手。
- VBAT去掉内部电路供电,采用外部输入供电3.2 V,按RESET键复位。
- 改变供电电压为2 V,观察串口打印,是否有BOD TRIGGERED EVENT中断产生。
- 恢复供电电压为3.2 V,观察串口打印,是否有BOD REMOVED EVENT中断产生。
BOD TRIGGERED EVENT
BOD REMOVED EVENT