LD3320芯片.docx
- 文档编号:4859222
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:9
- 大小:17.32KB
LD3320芯片.docx
《LD3320芯片.docx》由会员分享,可在线阅读,更多相关《LD3320芯片.docx(9页珍藏版)》请在冰豆网上搜索。
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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LD3320 芯片