跳转至

状态共享


简介

状态共享模块(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)
{
    /* 当前处于唤醒阶段 */
}