状态共享¶
简介¶
状态共享模块(status_share)用于CI14LP芯片各模块之间共享状态信息,实现跨模块的状态查询与同步。该模块维护一组状态ID(status_id_t),各模块可通过 ciss_set() 写入状态值,通过 ciss_get() 读取状态值。当状态有变化且是可等待状态时,ciss_set() 会自动发送状态等待事件标志位。
状态共享模块位于 components\status_share\status_share.h。
API¶
| 函数名 | 描述 |
|---|---|
| ciss_set | 设置状态信息,如果状态有变化且是可等待状态,发送状态等待事件标志位 |
| ciss_get | 读取状态信息 |
| show_ciss_base_addr | 信息共享模块初始化(打印共享状态基地址) |
关键类型¶
状态ID(status_id_t)¶
状态ID枚举定义了一系列系统状态,各模块通过该枚举读写对应状态。主要状态ID如下:
| 状态ID | 说明 |
|---|---|
| CI_SS_EXT_OSC_CLK | 晶振频率 |
| CI_SS_SRC_CLK | 系统时钟源频率 |
| CI_SS_AHB_CLK | AHB总线时钟频率 |
| CI_SS_APB_CLK | APB总线时钟频率 |
| CI_SS_IPCORE_CLK | IPCORE时钟频率 |
| CI_SS_SYSTEMTICK_CLK | OS tick 时钟频率 |
| CI_SS_VAD_STATE | VAD状态:1、VAD start;2、没有VAD start |
| CI_SS_ASR_SYS_STATE | ASR系统状态(ci_ss_asr_sys_state_t) |
| CI_SS_WAKING_UP_STATE | 当前是否处于唤醒状态 |
| CI_SS_CMD_STATE | 当前命令词是唤醒词还是命令词 |
| CI_SS_CMD_SCORE | 当前命令词的分数 |
| CI_SS_CMD_SCORE_CHA0 | 双通道命令词状态下,通道0分数 |
| CI_SS_CMD_SCORE_CHA1 | 双通道命令词状态下,通道1分数 |
| CI_SS_PLAY_STATE | 播报状态 |
| CI_SS_MIC_VOICE_STATUE | MIC输入的语音的状态 |
| CI_SS_ALC_STATE | ALC开启关闭状态 |
| CI_SS_CWSL_OUTPUT_FLAG | CWSL是否有识别结果输出 |
| CI_SS_INTERCEPT_ASR_OUT | 是否拦截ASR输出 |
| CI_SS_CWSL_IN_REG | 自学习是否在学习状态 |
| CI_SS_CWSL_INIT_DONE | 自学习初始化完成 |
| CI_SS_USER_TASK_START | USER_TASK任务是否已启动 |
| CI_SS_AUDIO_IN_TASK_START | 录音任务是否已启动 |
| CI_SS_FORCE_VAD | force vad |
| CI_SS_SET_VADFE_SATES | 设置vadfe状态 |
| CI_SS_DECODER_MIN_ACTIVE | decoder参数:默认400 |
| CI_SS_DECODER_BEAM | decoder参数:默认9.5 |
| CI_SS_DNN_RUN_STATE | DNN运行状态 |
| CI_SS_FLASH_SIZE | FLASH大小 |
| CI_SS_FLASH_STATUS_SIZE | FLASH状态大小 |
| CI_SS_SEM_STATE | 硬件信号量状态 |
| CI_SS_LOWPOWER_BOOT_LOAD_STATUS | 低功耗boot程序加载状态 |
| CI_SS_PLL1_CLK | PLL1时钟频率 |
| CI_SS_PDA_AHB_CLK | PDA AHB时钟频率 |
| CI_SS_PDA_APB_CLK | PDA APB时钟频率 |
| CI_SS_USE_AVAD_EXIT_DEEP_LOWPOWER | 用AVAD中断方式退出超低功耗 |
| CI_SS_USE_GPIO_EXIT_DEEP_LOWPOWER | 用GPIO中断方式退出超低功耗 |
| CI_SS_EXT_4M_EN | 外部4M开关 |
| CI_SS_EXT_32K_EN | 外部32K开关 |
| CI_SS_NPU_CORE_STATE | NPU_CORE运行状态 |
| CI_SS_AON_CORE_STATE | AON_CORE运行状态 |
| CI_SS_NPU_CORE_HEARTBEAT | NPU_CORE心跳 |
| CI_SS_SYS_ENTER_LOWPOWER | 进入低功耗 |
| CI_SS_SYS_POWER_STATE | 系统当前工作模式 |
| CI_SS_SYS_TRANS_STATE | 系统当前工作模式切换进程 |
| CI_SS_SYS_WAKEUP_MODE | 系统唤醒方式 |
| CI_SS_SYS_DEEP_SLEEP_EN | 超低功耗模式使能 |
| CI_SS_AVAD_SNR_RATIO | AVAD信噪比 |
| CI_SS_SVAD_SENSITITY_LEVEL | SVAD灵敏度 |
| CI_SS_SVAD_VOICE_TIMEOUT | SVAD语音检测on状态超时时长 |
| CI_SS_LOWPOWER_SVAD_DETECT_FRAME | 低功耗模式下SVAD检测帧长度 |
| CI_SS_SVAD_FIRST_SMOOTH | SVAD初始smooth设置 |
| CI_SS_BOARD_IO_EN | 板卡IO开启数字输出功能 |
状态值类型¶
| 类型 | 说明 |
|---|---|
| status_t | 状态值类型(unsigned long) |
| ci_ss_vad_state_t | VAD状态:CI_SS_VAD_IDLE / CI_SS_VAD_START / CI_SS_VAD_ON / CI_SS_VAD_END |
| ci_ss_asr_sys_state_t | ASR系统状态:CI_SS_ASR_SYS_POWER_OFF / STARTED_UP / IDLE / BUSY / PAUSE |
| ci_ss_wakeup_state_t | 唤醒状态:CI_SS_NO_WAKEUP / CI_SS_WAKEUPED |
| ci_ss_cmd_state_t | 命令词状态:CI_SS_CMD_IS_NULL / CI_SS_CMD_IS_WAKEUP / CI_SS_CMD_IS_NORMAL |
| ci_ss_play_state | 播报状态:CI_SS_PLAY_STATE_IDLE / CI_SS_PLAY_STATE_PLAYING |
| ci_ss_flash_state | FLASH状态:POWER_OFF / IDLE / READ / WRITE / ERASE / READ_UNIQUE_ID |
| ci_ss_mic_voice_state | MIC语音状态:NOT_START / NORMAL / MUTE |
| ci_ss_alc_state_t | ALC状态:CI_SS_ALC_OFF / CI_SS_ALC_UP |
| ci_ss_sem_state_t | 信号量状态:NORMAL_MODE / REQ_ENTER_LOW_POWER / LOW_POWER_MODE / REQ_EXIT_LOW_POWER |
| wakeup_mode_e | 唤醒方式:WAKEUP_MODE_POWER_ON / DEEP_LOWPOWER / LIGHT_LOWPOWER / NORMAL |
示例¶
以下代码设置并读取ASR系统状态:
#include "status_share.h"
/* 设置ASR系统状态为忙碌 */
ciss_set(CI_SS_ASR_SYS_STATE, CI_SS_ASR_SYS_BUSY);
/* 读取ASR系统状态 */
status_t state = ciss_get(CI_SS_ASR_SYS_STATE);
if(state == CI_SS_ASR_SYS_BUSY)
{
/* ASR系统处于计算状态 */
}
以下代码读取当前是否处于唤醒状态:
#include "status_share.h"
status_t wakeup = ciss_get(CI_SS_WAKING_UP_STATE);
if(wakeup == CI_SS_WAKEUPED)
{
/* 当前处于唤醒阶段 */
}