从1.11.7迁移到1.12.16¶
CI130X_SDK_Offline从1.11.7迁移到1.12.16, 先把工程目录从旧SDK中 “CI130X_SDK_Offline_V1.11.7\projects\xxx” 直接拷贝到新的SDK目录 “CI130X_SDK_Offline_V1.12.16\projects\”。然后还需要做下文所描述的修改。
板级配置修改:¶
- 在板级配置文件中的串口引脚配置函数中,串口的引脚使用开漏模式时,需要增加延时 文件路径:自定义的板级配置文件
void pad_config_for_uart(UART_TypeDef *UARTx)
{
if (UARTx == UART0)
{
dpmu_set_io_reuse(PB5,SECOND_FUNCTION);
dpmu_set_io_reuse(PB6,SECOND_FUNCTION);
#if UART0_PAD_OPENDRAIN_MODE_EN
dpmu_set_io_pull(PB5,DPMU_IO_PULL_DISABLE);
dpmu_set_io_pull(PB6,DPMU_IO_PULL_DISABLE);
dpmu_set_io_open_drain(PB5, ENABLE);
_delay_10us_240M(100); //需增加此延时, 等待开漏模式生效
#else
dpmu_set_io_pull(PB6,DPMU_IO_PULL_UP);
#endif
}
else if (UARTx == UART1)
{
dpmu_set_io_reuse(PA2,FORTH_FUNCTION);
dpmu_set_io_reuse(PA3,FORTH_FUNCTION);
#if UART1_PAD_OPENDRAIN_MODE_EN
dpmu_set_io_pull(PA2,DPMU_IO_PULL_DISABLE);
dpmu_set_io_pull(PA3,DPMU_IO_PULL_DISABLE);
dpmu_set_io_open_drain(PA2, ENABLE);
_delay_10us_240M(100); //需增加此延时, 等待开漏模式生效
#else
dpmu_set_io_pull(PA3,DPMU_IO_PULL_UP);
#endif
}
else if (UARTx == UART2)
{
dpmu_set_io_reuse(PA5,FORTH_FUNCTION);
dpmu_set_io_reuse(PA6,FORTH_FUNCTION);
#if UART2_PAD_OPENDRAIN_MODE_EN
dpmu_set_io_pull(PA5,DPMU_IO_PULL_DISABLE);
dpmu_set_io_pull(PA6,DPMU_IO_PULL_DISABLE);
dpmu_set_io_open_drain(PA5, ENABLE);
_delay_10us_240M(100); //需增加此延时, 等待开漏模式生效
#else
dpmu_set_io_pull(PA6,DPMU_IO_PULL_UP);
#endif
}
}
- 开启AEC功能时,需要修改以下宏定义: 文件路径:CI130X_SDK\projects\*\src\user_config.h
// 迁移前:
#if USE_AEC_MODULE
#define HOST_CODEC_CHA_NUM 2
#endif
// 迁移后:
#if USE_AEC_MODULE
#define PAUSE_VOICE_IN_WITH_PLAYING 0
#define IF_JUST_CLOSE_HPOUT_WHILE_NO_PLAY 1
#define HOST_CODEC_CHA_NUM 2
#endif
- 添加波特率同步短间隔时间,用于解决一次波特率同步失败后,后续波特率同步间隔过长的现象。 文件路径:CI130X_SDK\projects\*\src\user_config.h
#define BAUDRATE_FAST_SYNC_PERIOD 5000 // 一次波特率校准识别后,下一次同步周期,单位毫秒
API修改:¶
- dsu_init
//迁移前:
void dsu_init(void);
//迁移后:
void dsu_init(unsigned int addr);
在main.c中调用时,需要传入dsu的地址,例如:
extern char SRAM_HOST_END_ADDR;
dsu_init((uint32_t)&SRAM_HOST_END_ADDR);
- copyright_verification1
//迁移前: /** * @brief 通过自定义加密算法校验软件是否被拷贝 * * @param ec_func 用于传入自定义加密算法的函数指针 * @param out_len 用于指定加密后的密文的长度 * @return int 返回校验函数是否正常运行,0:未正常运行或校验未通过,1:校验通过。 */ extern int copyright_verification1(ENCRYPT_CALLBACK ec_func, int out_len);
//迁移后: /** * @brief 通过自定义加密算法校验软件是否被拷贝 * * @param ec_func 用于传入自定义加密算法的函数指针 * @param out_len 用于指定加密后的密文的长度 * @param firm_ver 固件版本 * @return int 返回校验函数是否正常运行,0:未正常运行或校验未通过,1:校验通过。 */ extern int copyright_verification1(ENCRYPT_CALLBACK ec_func, int out_len, uint8_t firm_ver);
- copyright_verification2
//迁移前: /** * @brief 通过默认加密算法和密码校验软件是否被拷贝 * * @param password 加密密码 * @param password_len 加密密码的长度 * @return int 返回校验函数是否正常运行,0:未正常运行或校验未通过,1:校验通过。 */ extern int copyright_verification2(char * password, int password_len);
//迁移后: /** * @brief 通过默认加密算法和密码校验软件是否被拷贝 * * @param password 加密密码 * @param password_len 加密密码的长度 * @param firm_ver 固件版本 * @return int 返回校验函数是否正常运行,0:未正常运行或校验未通过,1:校验通过。 */ extern int copyright_verification2(char * password, int password_len, uint8_t firm_ver);
- pause_asr
//迁移前: void pause_asr(void);
//迁移后: //参数voice_in_mute:用于设置在暂停唤醒词识别时,是否同时将录音入的音频静音。 void pause_asr(uint8_t voice_in_mute);
- resume_asr
//迁移前: void resume_asr(void);
//迁移后: //参数voice_in_mute:用于传递录音的静音状态。 void resume_asr(uint8_t voice_in_mute);
代码逻辑修改:¶
- 用到自学习功能的工程,同步自学习模块中对AEC的处理逻辑:文件路径:CI130X_SDK\projects\cwsl_sample\src\system_msg_deal.c同步内容:同步宏USE_AEC_MODULE管控的代码。
- 上电后的监听状态切换放到上电播报之前: 文件路径:CI130X_SDK\projects\cwsl_sample\src\system_msg_deal.c
//迁移前:
pause_voice_in();
#if PLAY_WELCOME_EN
vTaskDelay(pdMS_TO_TICKS(300)); // 等待功放开启
prompt_play_by_cmd_string("<welcome>", -1, play_exit_wakeup_done_cb,true);
#else
play_exit_wakeup_done_cb(INVALID_HANDLE);
#endif
//迁移后:
pause_voice_in();
#if PLAY_WELCOME_EN
vTaskDelay(pdMS_TO_TICKS(300)); // 等待功放开启
play_exit_wakeup_done_cb(INVALID_HANDLE); // 上电播报之前先切换到监听唤醒词状态
prompt_play_by_cmd_string("<welcome>", -1, NULL,true);
#else
play_exit_wakeup_done_cb(INVALID_HANDLE);
#endif
脚本修改:¶
- 合成分区bin文件.bat 路径:CI130X_SDK\projects\*\firmware\合成分区bin文件.bat 更新原因:更换部分操作系统不兼容的命令。
新增配置宏:¶
- BAUDRATE_FAST_SYNC_PERIOD
#define BAUDRATE_FAST_SYNC_PERIOD 5000 // 一次波特率校准识别后,下一次同步周期,单位毫秒
- ONE_SHOT_ENABLE
#define ONE_SHOT_ENABLE 0 //1:开启oneshot功能。0:关闭oneshot功能