制作第一个demo¶
本文档以三色灯demo作为示例,为新用户讲解制作第一个语音产品demo的方法;
本文档适用于购买了CI-B02GS01S、CI-B02GS01S、CI-B03CS01S、CI-B02CS01S这四款芯片以及配套底板的用户学习使用;
若您还没有样品,请点击 ☞样品购买,购买您的开发板;
1、硬件接线¶
用户拿到开发板后,三色led灯亮灭需要将PWM3,PWM4,PWM5这三个引脚与它们旁边的led引脚短接,如下图所示:
开发板默认使用串口一升级,用户使用时,请连接TX0与RX0;
供电方式默认为5V供电,用户可以选择使用USB供电,也可选择用串口工具的5V供电;
2、模型制作¶
模型制作根据 ☞模型制作 内容进行修改,定制用户demo的命令词;
3、语音合成¶
语音合成根据 ☞语音合成 内容进行修改,定制用户demo的播报音
4、代码修改¶
在SDK内,用户实现三色灯demo需要修改如下代码,SDK中所有的应用可以通过IAR IDE开发软件编译以及使用,版本为8.30.1,用户可以自行联系IAR公司或其经销商采购该软件并使用。
代码修改完成后,用户需要对代码进行编译操作;
三色灯管脚配置宏:
路径: ..\components\led\color_light_control.c
#define COLOR_LIGHT_R_PWM_PIN_NAME PWM5_PAD
#define COLOR_LIGHT_R_PWM_PIN_PORT GPIO2
#define COLOR_LIGHT_R_PWM_PIN_BASE HAL_GPIO3_BASE
#define COLOR_LIGHT_R_PWM_PIN_NUMBER gpio_pin_4
#define COLOR_LIGHT_R_PWM_FUNCTION SECOND_FUNCTION
#define COLOR_LIGHT_R_PWM_NAME PWM5
#define COLOR_LIGHT_G_PWM_PIN_NAME PWM4_PAD
#define COLOR_LIGHT_G_PWM_PIN_PORT GPIO2
#define COLOR_LIGHT_G_PWM_PIN_BASE HAL_GPIO3_BASE
#define COLOR_LIGHT_G_PWM_PIN_NUMBER gpio_pin_3
#define COLOR_LIGHT_G_PWM_FUNCTION SECOND_FUNCTION
#define COLOR_LIGHT_G_PWM_NAME PWM4
#define COLOR_LIGHT_B_PWM_PIN_NAME PWM3_PAD
#define COLOR_LIGHT_B_PWM_PIN_PORT GPIO2
#define COLOR_LIGHT_B_PWM_PIN_BASE HAL_GPIO3_BASE
#define COLOR_LIGHT_B_PWM_PIN_NUMBER gpio_pin_2
#define COLOR_LIGHT_B_PWM_FUNCTION SECOND_FUNCTION
#define COLOR_LIGHT_B_PWM_NAME PWM3
三色灯初始化
路径: ..\sample\internal\sample_1102\src\user_msg_deal.c
#include "color_light_control.h"
#define COLOR_LIGHT_OFF 0,0,0
#define COLOR_LIGHT_ON 1.0,1.0,1.0
#define NVDATA_ID_LIGHT 0x50000005 /*'LIGHT INFO'*/
#define LIGHT_BRIGHTNESS_MAX 1.0
#define LIGHT_BRIGHTNESS_MIN 0.1
#define LIGHT_BRIGHTNESS_MID 0.6
#define LIGHT_BRIGHTNESS_STEP 0.1
#define LIGHT_BRIGHTNESS_DEFAULT 0.6
color_light_info_t light_info; /* 三色灯状态信息 */
xTimerHandle light_timer = NULL; /* 三色灯定时器 */
/**
* @三色灯初始化
*
*/
void light_init()
{
color_light_init();
color_light_control(COLOR_LIGHT_OFF);
color_light_set_level(0.0);
light_info.v = LIGHT_BRIGHTNESS_DEFAULT;
light_info.s = 1;
}
路径: ..\sample\internal\sample_1102\src\user_msg_deal.c
/**
* @brief 用户初始化
*
*/
void userapp_initial(void)
{
/*三色灯初始化*/
light_init();
#if CPU_RATE_PRINT
init_timer3_getresource();
#endif
#if MSG_COM_USE_UART_EN
vmup_communicate_init();
#endif
#if MSG_USE_I2C_EN
i2c_communicate_init();
#endif
#if IIS1_ENABLE == 0
//IIS1引脚配置为gpio
Scu_SetDeviceGate(HAL_GPIO3_BASE,ENABLE);
Scu_SetIOReuse(I2S1_LRCLK_PAD, FIRST_FUNCTION);
Scu_SetIOReuse(I2S1_SDO_PAD, FIRST_FUNCTION);
Scu_SetIOReuse(I2S1_SCLK_PAD, FIRST_FUNCTION);
#endif
}
三色灯应用任务处理(下述代码,为通过命令词ID控制三色灯的函数代码,用户需要修改对应的命令词ID(cmd_id))
路径: ..\sample\internal\sample_1102\src\user_msg_deal.c
uint32_t deal_asr_msg_by_cmd_id(sys_msg_asr_data_t *asr_msg, cmd_handle_t cmd_handle, uint16_t cmd_id)
{
uint32_t ret = 1;
int select_index = -1;
switch(cmd_id)
{
case 2://“红色模式”
{
light_info.h = 0;
color_light_set_color(light_info.h,light_info.s);
break;
}
case 3://“绿色模式”
{
light_info.h = 120;
color_light_set_color(light_info.h,light_info.s);
break;
}
case 4://“蓝色模式”
{
light_info.h = 240;
color_light_set_color(light_info.h,light_info.s);
break;
}
case 5://"关闭灯光"
{
color_light_control(COLOR_LIGHT_OFF);
break;
}
case 6://"打开灯光"
{
color_light_control(COLOR_LIGHT_ON);
break;
}
default:
ret = 0;
break;
}
if (ret && select_index >= -1)
{
#if PLAY_OTHER_CMD_EN
pause_voice_in();
prompt_play_by_cmd_handle(cmd_handle, select_index, default_play_done_callback,true);
#endif
}
return ret;
}
5、固件打包¶
第一步:打开“合成分区bin文件.bat”。
第二步:如下图所示,合并分区时会提示选择音频格式,新手用户请选择“adpcm”,选择完成后,按回车键,待加载完成后,该界面会自动关闭。
第三步:打开“打包升级.bat”。
第四步:选择您购买的开发板对应的芯片型号(此操作为第一次使用出现,后续使用请直接进行第五步)。
第五步:确认好芯片型号后,点击“固件打包”按钮,进入升级界面。
第六步:固件升级信息填写:
-
在版本信息区填写软硬件相关信息。
-
选择或填写各分区bin文件路径。
-
点击“刷新地址”,点击“打包固件”。
-
如果弹窗提示地址冲突,调整各分区大小,重新执行上一步。
- 弹窗提示“固件已生成”表示打包成功。如下图所示:
6、固件烧录¶
第一步:打开“打包升级.bat”。
第二步:选择您购买的开发板对应的芯片型号(此操作为第一次使用出现,后续使用请直接进行第三步)。
第三步:确认好芯片型号后,点击“固件升级”按钮,进入升级界面。
第四步:固件升级
-
选择或填写固件路径。
-
勾选待升级的设备所连接的串口。
-
其他选择:强制更新所有分区,鉴权文件,加密。
-
待升级模块切换到升级模式(短接PG、EN两个引脚)。
-
重启待升级设备,开始升级。
-
等待升级完成,如果顺利的话,升级成功后,设备会自动引导进固件代码,如果有上电播报音话,能听到上电播报。