CI231X系列芯片 IIC 协议¶
1. 概述¶
本文档为我司标准语音模块IIC协议设计说明书, 方便开发快速开发代码和评审,维护人员了解代码框架。
1.1. 功能¶
-
完整传输包:寄存器地址,数据,校验,数据尾;
-
本司语音芯片IIC支持标准模式100 kbit/s、快速模式最高达400 kbit/s。该协议默认传输速率:100 kbit/s;
-
CI231X系列芯片只有1组IIC0总线;
-
默认引脚使用PB7,PC0 ;
-
本司语音模块的IIC总线地址(本司芯片做slave的IIC地址)默认均为0x64,如想修改,请配置寄存器,0x64或上读写位后值为0xC8(写),0xC9(读);
-
可更改配置选用不同的传输速率。文档后续会介绍如何修改相关参数;
-
支持的功能:获取命令词id(8位,默认只支持非0命令词ID),用命令词id播放本地播报音,获取语义id(32位,默认只支持非0语义ID)),用语义id播放本地播报音;
-
约定本司语音模块为slave,发起请求的用户设备为master。
1.2. 性能¶
接收采用中断方式处理,输出采用中断方式处理。
2. 协议简介¶
2.1. 获取命令词id功能数据包定义¶
下表列出了除从设备地址以外的各byte含义。
数据方向 | 字节数 | byte1 | byte2 | byte3 |
---|---|---|---|---|
master发送 | 1 | 寄存器值 | ||
slave回复 | 3 | 命令词id信息 | 校验和 | 数据尾 |
-
寄存器值:0x02
-
命令词id信息:命令词ID
-
校验和:寄存器值 + 命令词id信息
-
数据尾:0x5a
注意
默认只支持非0命令词ID,没有识别结果时,读取到的命令词id为0x00。
start条件由master发起,语音端做slave。获取命令词id功能,详细协议波形如下图所示。
2.2. 用命令词id播放本地播报音功能数据包定义¶
下表列出了除从设备地址以外的各byte含义。
数据方向 | 字节数 | byte1 | byte2 | byte3 | byte4 |
---|---|---|---|---|---|
master发送 | 4 | 寄存器值 | 命令词id信息 | 校验和 | 数据尾 |
slave响应播报 |
-
寄存器值:0x03
-
命令词id信息:获取命令词id数据包中解析出来的命令词id
-
校验和:寄存器值 + 命令词id信息
-
数据尾:0x5a
start条件由master发起,语音端做slave。用命令词id播放本地播报音功能,详细协议波形如下图所示。
2.3. 获取语义id功能数据包定义¶
下表列出了除从设备地址以外的各byte含义。
数据方向 | 字节数 | byte1 | byte2 | byte3 | byte4 | byte5 | byte6 |
---|---|---|---|---|---|---|---|
master发送 | 1 | 寄存器值 | |||||
slave回复 | 6 | 语义id-1 | 语义id-2 | 语义id-3 | 语义id-4 | 校验和 | 数据尾 |
-
寄存器值:0x04
-
语义id_1 :语义ID的第0 - 7位
-
语义id_2 :语义ID的第8 - 15位
-
语义id_3 :语义ID的第16 - 23位
-
语义id_4 :语义ID的第24 - 31位
-
校验和:寄存器0x04 + 语义id_1 + 语义id_2 + 语义id_3 + 语义id_4
-
数据尾:0x5a
注意
默认只支持非0语义ID,没有识别结果时,读取到的语义id为0x00000000。
start条件由master发起,语音端做slave。获取语义id功能,详细协议波形如下图所示。
2.4. 用语义id播放本地播报音功能数据包定义¶
下表列出了除从设备地址以外的各byte含义。
数据方向 | 字节数 | byte1 | byte2 | byte3 | byte4 | byte5 | byte6 | byte7 |
---|---|---|---|---|---|---|---|---|
master发送 | 7 | 寄存器值 | 语义id_1 | 语义id_2 | 语义id_3 | 语义id_4 | 校验和 | 数据尾 |
slave响应播报 |
-
寄存器值:0x05
-
语义id_1 :语义ID的第0 - 7位
-
语义id_2 :语义ID的第8 - 15位
-
语义id_3 :语义ID的第16 - 23位
-
语义id_4 :语义ID的第24 - 31位
-
校验和:寄存器值0x05 + 语义id_1 + 语义id_2 + 语义id_3 + 语义id_4
-
数据尾:0x5a
start条件由master发起,语音端做slave。用语义id播放本地播报音功能,详细协议波形如下图所示。
3. 配置相关¶
3.1. 修改协议开关宏¶
建议开发者在自己工程路径下进行以下配置,不要修改sdk_default_config.h文件。 打开SDK\projects\offline_asr_sample\src\user_config.h,把MSG_USE_I2C_EN配置为1。
#define MSG_USE_I2C_EN 1
/*使用iic引脚配置*/
#define USE_IIC_PAD 1
/*标准模式100 Kbit/s,快速模式400 Kbit/s*/
#define I2C_PROTOCOL_SPEED (100)
3.2. 修改功能代码宏¶
- 默认关闭调试语句,如需打开,修改i2c_protocol_module.h的调试宏为1;
/* 0:关闭打印,1 :打开打印 */
#define IIC_PROTOCOL_DEBUG 1
- 默认唤醒词命令词ID、语义ID定义如下,如需修改,打开i2c_protocol_module.h;
#define IIC_WAKEUP_WORD_CMDID 0x01 /* 唤醒词命令词ID:1个字节 */
#define IIC_WAKEUP_WORD_SECID 0x01e05501 /* 唤醒词语义ID:4个字节*/
- 默认只开启命令词ID协议功能,关闭语义ID协议功能。如需打开语义ID协议功能,修改i2c_protocol_module.h的对应宏为1。两种协议可以同时使用,最快支持每隔30ms发起一次请求;
/* 0:关闭命令词ID协议功能,1:开启命令词ID协议功能 */
#define IIC_PROTOCOL_CMD_ID 1
/* 0:关闭语义ID协议功能,1:开启语义ID的协议功能 */
#define IIC_PROTOCOL_SEC_ID 0
- 默认主动播报唤醒词、欢迎词、退出唤醒词、其他命令词。如想屏蔽主动播报,使用协议数据被动播报,修改user_config.h相关宏为0。默认协议被动播报,只支持唤醒词和其他命令词。
// 播报音配置
#define PLAY_WELCOME_EN 1 //欢迎词播报 =1是 =0否
#define PLAY_ENTER_WAKEUP_EN 0 //唤醒词播报 =1是 =0否
#define PLAY_EXIT_WAKEUP_EN 1 //退出唤醒播报 =1是 =0否
#define PLAY_OTHER_CMD_EN 0 //命令词播报 =1是 =0否