关于KT148语音芯片的使用
注意起始的 6ms 低电平,初次调试时,尽量用示波器或者逻辑分析仪看一下,误差在 10%左右都能接受。/*延时 6.26MS --- 这里就是发起通讯的起始信号*//*发送的时候,先发送最高位,再发送次高位,以此类推*/秒的语音长度,支持多段语音,同时支持直驱 0.5W 的扬声器,支持用户自己更换语音。/*空闲时将该脚拉高即可*//*同时注意,芯片初始化的时候,请将信号脚拉高。/*延时 200us
一、KT148语音芯片介绍

(1)、简介:
(2)、管脚介绍:
二、程序实现
(1)、支持一线通讯协议:

注意:必须高电平在前,低电平在后。
推荐使用 200us:600us。取值范围:窄脉冲=[150us--400us]
宽脉冲[500us--1000us]
注意使用 3:1 和 1:3 电平比例以保障通讯稳定。
注意起始的 6ms 低电平,初次调试时,尽量用示波器或者逻辑分析仪看一下,误差在 10%左右都能接受
1、0x00H 到 0xDFH 为声音地址码或定义功能码。
2、0xFE 为语音停止码,发送该命令可以停止播放语音。
3、编码之间的间隔须大于 20ms
(2)、通讯指令:

(3)、参考例程:
/*******************************************************************************
- 函数说明:一线通数据发送【注意调试时,用示波器或者逻辑分析仪看一下脉冲宽度】
- 隶属模块:内部
- 参数说明:dat = 待发送的数据
- 返回说明:无
先把数据线 DATA,也就是 ONELINE,拉低 6ms 后,发送 8 位数据,先发送低位,再发送高位。
********************************************************************************/
#define IO1_HIGH()
JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT |=
BIT(6);
//PA6 输出高电平
#define IO1_LOW()
JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT &= ~BIT(6);
//PA6 输出低电平
void oneline_send_one_data(u8 dat)
{
u8 i = 0 ;
IO1_LOW() ;/*现将总线拉低*/
udelay(5000) ;/*延时 6.26MS --- 这里就是发起通讯的起始信号*/
CPU_SR_ALLOC();//关中断--芯片不同,可能接口不同
OS_ENTER_CRITICAL();//关中断
for(i=0 ; i<8 ;i++){
if(dat & 0x01){
IO1_HIGH() ;
udelay(500);/*延时 600us*/
IO1_LOW();
udelay(170) ;/*延时 200us*/
}else{
IO1_HIGH() ;
udelay(170);/*延时 200us*/
IO1_LOW();
udelay(500) ;/*延时 600us*/
}
dat = dat >> 1 ;/*发送的时候,先发送最高位,再发送次高位,以此类推*/
}
IO1_HIGH() ;/*空闲时将该脚拉高即可*/
OS_EXIT_CRITICAL();//开中断
/*同时注意,芯片初始化的时候,请将信号脚拉高。*/
}
程序调用的接口如下:
oneline_send_one_data(0x05);//对应播放第 5 段声音13

三、语音文件烧录
(1)、如何生成语音文件


(2)、如何烧录语音文件
1、准备好官方的语音烧录程序![]()
2、打开程序

1、一定要把芯片的 5 脚对地短路再上电 ,听到喇叭“滴”的一声,松开就可以了
2、这个时候,芯片就自动进入到下载状态 。建议选用 CH340G 的 USB 转 TTL 模块
3、连接串口模块到电脑,USB 转 TTL 的 TX 接芯片的 2 脚,USB 转 TTL 的 RX 接芯片的 3 脚,然后共地 。
4、点击上位机上面的,打开串口,波特率固定 115200 ,选择导入文件,再点击“下载全部”,等待完成
5、注意下载完了之后,可以用芯片的 4 脚对地触发一下,试听下载的声音文件

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)