一、KT148语音芯片介绍

(1)、简介:

KT148A 是一款 32 位的 DSP 语音芯片,标准的 SOP8 封装。内置 420KByte 的语音空间,最大支持 420
秒的语音长度,支持多段语音,同时支持直驱 0.5W 的扬声器,支持用户自己更换语音

(2)、管脚介绍:

二、程序实现

(1)、支持一线通讯协议:

注意:必须高电平在前,低电平在后。

推荐使用 200us600us。取值范围:窄脉冲=[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 脚对地触发一下,试听下载的声音文件

Logo

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

更多推荐