LD3320芯片.docx

上传人:b****4 文档编号:4859222 上传时间:2022-12-10 格式:DOCX 页数:9 大小:17.32KB
下载 相关 举报
LD3320芯片.docx_第1页
第1页 / 共9页
LD3320芯片.docx_第2页
第2页 / 共9页
LD3320芯片.docx_第3页
第3页 / 共9页
LD3320芯片.docx_第4页
第4页 / 共9页
LD3320芯片.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

LD3320芯片.docx

《LD3320芯片.docx》由会员分享,可在线阅读,更多相关《LD3320芯片.docx(9页珍藏版)》请在冰豆网上搜索。

LD3320芯片.docx

LD3320芯片

LD3320芯片(图4-1)是一款“语音识别”专用芯片,基于ICRoute公司设计生产。

该芯片集成了语音识别处理器和部分外设电路,包括麦克风接口、AD、DA转换器、声音输出接口等。

本芯片高效与节能,不需要外接任何如Flash、RAM等的存储芯片,直接集成在功能所需的器件即可以实现语音识别/声控/人机对话功能。

另外,可以任意动态编辑识别的关键词语列表.

图4-1

4.2功能介绍

通过ICRoute公司特有的快速而稳定的优化算法,完成非特定人语音识别。

不需用户事先训练和录音,识别准确率95%。

不需要外接任何辅助的Flash芯片,RAM芯片和AD芯片,就可以完成语音识别功能真正提供了单芯片语音识别解决方案。

每次识别最多可以设置50项候选识别句,每个识别句可以是单字,词组或短句,度为不超过10个汉字或者79个字节的拼音串。

另一方面,识别句内容可以动态编辑修改,因此可由一个系统支持多种场景。

芯片内部已经准备了16位A/D转换器、16位D/A转换器和功放电路,麦克风、立体声耳机和单声道喇叭可以很方便地和芯片管脚连接。

立体声耳机接口的输幽功率为20mW,而喇叭接口的输出功率为550mW,能产生清晰响亮的声音。

支持并行和串行接口,串行方式可以简化与其他模块的连接。

可设置为休眠状态,而且可以方便地激活。

支持MP3播放功能,无需外围辅助器件,主控MCU将MP3数据依次送入LD3320芯片内部就可以从芯片的相应PIN输出声音。

产品设计可以选择从立体声的耳机或者单声道喇叭来获得声音输出。

支持MPEGI(ISO/IEC11172-3),MPEG2(ISO/IEC13818-3)和MPEG2.5layer3等格式。

工作供电为3.3V,如果用于便携式系统,使用3节AA电池就可以满足供电需要。

4.3内部电路的简单逻辑图

图4-2

电压要求:

VDD数字电路用电源输入3.0V-3.3V

VDDIO数字1/0电路用电源输入1.65V-VDD

VDDA模拟电路用电源输入3.0V-4.0V

为简化设计,可统一使用3.3v电压输入供电。

时钟(Clock)

芯片必须连接外部时钟电路,频率范围可以是4-48MHz;而芯片内部配备PLL频率合成器,可产生特定的频率供内部模块使用。

复位

对芯片的进行复位(高电平)必须在VDDA/VDD/VDDIO电压都稳定后进行。

无论芯片在进行任何运算,复位信号都可以复位芯片为初始状态,并使各寄存器恢复默认值。

如果没有设定指令(对寄存器的设置),复位后芯片将进入休眠状态。

此后,一个CSB:

高电平,片选信号就重新激活芯片进入工作状态。

并行接口

本芯片可通过并行方式和外部主CPU连接,此时使用8根数据线(PO-P7),4个控制信号(WRB#,RDB#,CS冰,AO),以及一个中断返回信号(INTB#)。

串行接口

串行接口通过SPI协议和外部主CPU连接,首先要将MD接高电平,而将(SPIS:

1:

)接地。

此时只使用4个管脚:

片选(SCS冰)、SPI时钟(SDCK)、SPI输入(SDI)和SPI输出(SDO)。

**************************************************************************/

voidLD_Init_ASR()

{

LD_Init_Common();

LD_WriteReg(0xBD,0x00);

LD_WriteReg(0x17,0x48);

delay(10);

LD_WriteReg(0x3C,0x80); 

LD_WriteReg(0x3E,0x07);

LD_WriteReg(0x38,0xff); 

LD_WriteReg(0x3A,0x07);

LD_WriteReg(0x40,0); 

LD_WriteReg(0x42,8);

LD_WriteReg(0x44,0); 

LD_WriteReg(0x46,8); 

delay

(1);

}

/************************************************************************

功能描述:

中断处理函数

入口参数:

none

返回值:

none

其他说明:

当LD模块接收到音频信号时,将进入该函数,

判断识别是否有结果,如果没有从新配置寄

存器准备下一次的识别。

**************************************************************************/

voidProcessInt0(void)

{

uint8nAsrResCount=0;

EX0=0;

ucRegVal=LD_ReadReg(0x2B);

LD_WriteReg(0x29,0);

LD_WriteReg(0x02,0);

if((ucRegVal&0x10)&&

LD_ReadReg(0xb2)==0x21&& 

LD_ReadReg(0xbf)==0x35)/*识别成功*/

{

nAsrResCount=LD_ReadReg(0xba);

if(nAsrResCount>0&&nAsrResCount<=4) 

{

nAsrStatus=LD_ASR_FOUNDOK;

}

else

{

nAsrStatus=LD_ASR_FOUNDZERO;

}

}/*没有识别结果*/

else

{

nAsrStatus=LD_ASR_FOUNDZERO;

}

LD_WriteReg(0x2b,0);

LD_WriteReg(0x1C,0);/*写0:

ADC不可用*/

LD_WriteReg(0x29,0);

LD_WriteReg(0x02,0);

LD_WriteReg(0x2B,0);

LD_WriteReg(0xBA,0);

LD_WriteReg(0xBC,0);

LD_WriteReg(0x08,1);/*清除FIFO_DATA*/

LD_WriteReg(0x08,0);/*清除FIFO_DATA后再次写0*/

 

EX0=1;

}

/************************************************************************

功能描述:

运行ASR识别流程

入口参数:

none

返回值:

asrflag:

1->启动成功,0—>启动失败

其他说明:

识别顺序如下:

1、RunASR()函数实现了一次完整的ASR语音识别流程

2、LD_AsrStart()函数实现了ASR初始化

3、LD_AsrAddFixed()函数实现了添加关键词语到LD3320芯片中

4、LD_AsrRun()函数启动了一次ASR语音识别流程

任何一次ASR识别流程,都需要按照这个顺序,从初始化开始

**************************************************************************/

uint8RunASR(void)

{

uint8i=0;

uint8asrflag=0;

for(i=0;i<5;i++)//防止由于硬件原因导致LD3320芯片工作不正常,所以一共尝试5次启动ASR识别流程

{

LD_AsrStart();

delay(50);

if(LD_AsrAddFixed()==0)

{

LD_Reset();//LD3320芯片内部出现不正常,立即重启LD3320芯片

delay(50);//并从初始化开始重新ASR识别流程

continue;

}

delay(10);

if(LD_AsrRun()==0)

{

LD_Reset();//LD3320芯片内部出现不正常,立即重启LD3320芯片

delay(50);//并从初始化开始重新ASR识别流程

continue;

}

asrflag=1;

break;//ASR流程启动成功,退出当前for循环。

开始等待LD3320送出的中断信号

}

returnasrflag;

}

/************************************************************************

功能描述:

检测LD模块是否空闲

入口参数:

none

返回值:

flag:

1->空闲

其他说明:

none

**************************************************************************/

uint8LD_Check_ASRBusyFlag_b2()

{

uint8j;

uint8flag=0;

for(j=0;j<10;j++)

{

if(LD_ReadReg(0xb2)==0x21)

{

flag=1;

break;

}

delay(10);

}

returnflag;

}

/************************************************************************

功能描述:

启动ASR

入口参数:

none

返回值:

none

其他说明:

none

**************************************************************************/

voidLD_AsrStart()

{

LD_Init_ASR();

}

uint8LD_AsrRun()

{

EX0=0;

LD_WriteReg(0x35,MIC_VOL);

LD_WriteReg(0x1C,0x09);

LD_WriteReg(0xBD,0x20);

LD_WriteReg(0x08,0x01);

delay

(1);

LD_WriteReg(0x08,0x00);

delay

(1);

if(LD_Check_ASRBusyFlag_b2()==0)//检测LD模块是否空闲

{

return0;

}

//LD_WriteReg(0xB6,0xa);//识别时间1S

//LD_WriteReg(0xB5,0x1E);//背景音段时间300ms

//LD_WriteReg(0xB8,10);//结束时间

//LD_WriteReg(0x1C,0x07);//配置双通道音频信号做为输入信号

LD_WriteReg(0x1C,0x0b);//配置麦克风做为输入信号

 

LD_WriteReg(0xB2,0xff);

delay

(1);

LD_WriteReg(0x37,0x06);

delay

(1);

LD_WriteReg(0x37,0x06);

delay(5);

LD_WriteReg(0x29,0x10);

LD_WriteReg(0xBD,0x00);

EX0=1;

return1;

}

uint8LD_AsrAddFixed()

{

uint8k,flag;

uint8nAsrAddLength;

#defineDATE_A5/*数组二维数值*/

#defineDATE_B20/*数组一维数值*/

uint8codesRecog[DATE_A][DATE_B]={

\"xiaojie\",\\

\"ruodeng\",\\

\"qiangdeng\",\\

\"quanmie\",\\

\"liushuideng\",\\

};/*添加关键词,用户修改*/

uint8codepCode[DATE_A]={

CODE_CMD,\\

CODE_RD,\\

CODE_QD,\\

CODE_QM,\\

CODE_LSD,\\

};/*添加识别码,用户修改*/

flag=1;

for(k=0;k

{

if(LD_Check_ASRBusyFlag_b2()==0)

{

flag=0;

break;

}

LD_WriteReg(0xc1,pCode[k]);

LD_WriteReg(0xc3,0);

LD_WriteReg(0x08,0x04);

delay

(1);

LD_WriteReg(0x08,0x00);

delay

(1);

for(nAsrAddLength=0;nAsrAddLength

{

if(sRecog[k][nAsrAddLength]==0)

break;

LD_WriteReg(0x5,sRecog[k][nAsrAddLength]);

}

LD_WriteReg(0xb9,nAsrAddLength);

LD_WriteReg(0xb2,0xff);

LD_WriteReg(0x37,0x04);

}

returnflag;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1