基于MSP430的语音模块程序.doc_第1页
基于MSP430的语音模块程序.doc_第2页
基于MSP430的语音模块程序.doc_第3页
基于MSP430的语音模块程序.doc_第4页
基于MSP430的语音模块程序.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include main.huint8 nLD_Mode = LD_MODE_IDLE;/用来记录当前是在进行ASR识别还是在播放MP3unsigned char ucRegVal;unsigned char ucHighInt;unsigned char ucLowInt;/*函数功能 ;LD3320外部中断初始化P1_6入口参数:无出口参数:无*/void LD3320_EXTERINT_Init() P1SEL&=BIT6; P1DIR&=BIT6; P1REN|=BIT6; P1OUT|=BIT6; P1IES|=BIT6; P1IE|=BIT6; P1IFG&=BIT6;/*函数功能 ;LD3320控制端口初始化入口参数:无出口参数:无*/void LD3320_Port_Init() P7OUT|=(BIT3+BIT4+BIT5+BIT6+BIT7); P7REN|=(BIT3+BIT4+BIT5+BIT6+BIT7); P7DIR|=(BIT3+BIT4+BIT5+BIT6+BIT7); DIR_LD_CS_OUT; DIR_LD_CLK_OUT; DIR_LD_DI_OUT; DIR_LD_DO_IN; DIR_LD_RST_OUT; DIR_LD_SPIS_OUT; /*函数功能 ;LD3320 SPI通信测试入口参数:无出口参数:无*/void Test_Information() /测试读写是否正常 LD_reset(); LD_ReadReg(0x06); LD_WriteReg(0x35, 0x33); LD_WriteReg(0x1b, 0x55); LD_WriteReg(0xb3, 0xaa); nAsrRes=(LD_ReadReg(0x35); nAsrRes=(LD_ReadReg(0x1b); nAsrRes=(LD_ReadReg(0xb3); /测试寄存器初始值是否正常 LD_reset(); nAsrRes=(LD_ReadReg(0x06); nAsrRes=(LD_ReadReg(0x06); nAsrRes=(LD_ReadReg(0x35); nAsrRes=(LD_ReadReg(0xb3); /*函数功能 ;LD3320写函数入口参数:address LD3320地址 dataout LD3320数据出口参数:无*/void LD_WriteReg( unsigned char address, unsigned char dataout ) unsigned char i = 0;unsigned char command=0x04; CLR_LD_CS;/打开片选 _delay_cycles(500); /写命令 for(i=0;i0) SET_LD_DI; else CLR_LD_DI; _delay_cycles(500); CLR_LD_CLK; command = (command 1); _delay_cycles(500); SET_LD_CLK; /写地址 for(i=0;i0) SET_LD_DI; else CLR_LD_DI; _delay_cycles(500); CLR_LD_CLK; address = (address 1); _delay_cycles(500); SET_LD_CLK; /写数据 for(i=0;i0) SET_LD_DI; else CLR_LD_DI; _delay_cycles(500); CLR_LD_CLK; dataout = (dataout 1); _delay_cycles(500); SET_LD_CLK; _delay_cycles(500); SET_LD_CS;/关闭片选 /*函数功能 ;LD3320读函数入口参数:address LD3320地址出口参数:datain LD3320读出的收据*/unsigned char LD_ReadReg( unsigned char address ) unsigned char i = 0; unsigned char datain =0 ;unsigned char command=0x05; CLR_LD_CS;/打开片选 _delay_cycles(2000); /写命令 for(i=0;i0) SET_LD_DI; else CLR_LD_DI; _delay_cycles(2000); CLR_LD_CLK; command = (command 1); _delay_cycles(2000); SET_LD_CLK; /写地址 for(i=0;i0) SET_LD_DI; else CLR_LD_DI; _delay_cycles(2000); CLR_LD_CLK; address = (address 1); _delay_cycles(2000); SET_LD_CLK; _delay_cycles(2000); /读数据 DIR_LD_DO_IN; for(i=0;i8;i+) datain = datain 1; CLR_LD_CLK; if(LD_DO) datain|=0x01; _delay_cycles(200); SET_LD_CLK; _delay_cycles(200); _delay_cycles(2000); SET_LD_CS;/关闭片选 return datain;/*函数功能 ;LD3320复位函数入口参数:无出口参数:无*/void LD_reset() SET_LD_RST;_delay_cycles(200);CLR_LD_RST;_delay_cycles(200);SET_LD_RST;_delay_cycles(200); CLR_LD_CS;_delay_cycles(200);SET_LD_CS;_delay_cycles(200);void LD_Init_Common()LD_ReadReg(0x06); LD_WriteReg(0x17, 0x35); _delay_cycles(200);LD_ReadReg(0x06); LD_WriteReg(0x89, 0x03); _delay_cycles(200);LD_WriteReg(0xCF, 0x43); _delay_cycles(200);LD_WriteReg(0xCB, 0x02);/*PLL setting*/LD_WriteReg(0x11, LD_PLL_11); LD_WriteReg(0x1E,0x00);LD_WriteReg(0x19, LD_PLL_ASR_19); LD_WriteReg(0x1B, LD_PLL_ASR_1B); LD_WriteReg(0x1D, LD_PLL_ASR_1D);_delay_cycles(2000);LD_WriteReg(0xCD, 0x04);LD_WriteReg(0x17, 0x4c); _delay_cycles(200);LD_WriteReg(0xB9, 0x00);LD_WriteReg(0xCF, 0x4F); LD_WriteReg(0x6F, 0xFF); void LD_Init_ASR()nLD_Mode=LD_MODE_ASR_RUN;LD_Init_Common();LD_WriteReg(0xBD, 0x00);LD_WriteReg(0x17, 0x48);_delay_cycles(200);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_cycles(200);/ Return 1: success.unsigned char LD_Check_ASRBusyFlag_b2()unsigned char j;unsigned char flag = 0;for (j=0; j10; j+)if (LD_ReadReg(0xb2) = 0x21)flag = 1;break;_delay_cycles(200);return flag;/*功能描述: 启动ASR入口参数:none返 回 值: none其他说明:none*/void LD_AsrStart()LD_Init_ASR();/ Return 1: success.unsigned char LD_AsrRun()LD_WriteReg(0x35, MIC_VOL);LD_WriteReg(0x1C, 0x09);LD_WriteReg(0xBD, 0x20);LD_WriteReg(0x08, 0x01);_delay_cycles(20000);LD_WriteReg(0x08, 0x00);_delay_cycles(20000);if(LD_Check_ASRBusyFlag_b2() = 0)return 0;LD_WriteReg(0xB2, 0xff);LD_WriteReg(0x37, 0x06); _delay_cycles(20000);LD_WriteReg(0x1C, 0x0b); /配置麦克风做为输入信号/LD_WriteReg(0x1C, 0x07); /配置双通道音频信号做为输入信号LD_WriteReg(0x29, 0x10);LD_WriteReg(0xBD, 0x00);/EX0=1;return 1;/*功能描述:添加关键词,此处为用户修改部分 调用函数: 入口参数: 返回函数: */ Return 1: success./添加识别关键词语,开发者可以学习语音识别芯片LD3320高阶秘籍.pdf中关于垃圾词语吸收错误的用法unsigned char LD_AsrAddFixed()unsigned char k, flag;uint8 nAsrAddLength; /uint8 code sRecog420 = ,kai fa ban yan zheng, dai ma ce shi,jian cha wan bi;/*添加关键词,用户修改*/ unsigned char sRecog420 = ,wo shi, ce shi cheng gong ,jian yan wan bi; unsigned char pCode4 = 0,CODE_KFBYZ, CODE_DMCS, CODE_JCWB;/*添加识别码,用户修改*/flag = 1;for (k=0; k4; k+)if(LD_Check_ASRBusyFlag_b2() = 0)flag = 0;break;LD_WriteReg(0xc1, pCodek );LD_WriteReg(0xc3, 0 );LD_WriteReg(0x08, 0x04);_delay_cycles(2000);LD_WriteReg(0x08, 0x00);_delay_cycles(2000);for (nAsrAddLength=0; nAsrAddLength20; nAsrAddLength+)if (sRecogknAsrAddLength = 0)break;LD_WriteReg(0x5, sRecogknAsrAddLength);LD_WriteReg(0xb9, nAsrAddLength);LD_WriteReg(0xb2, 0xff);LD_WriteReg(0x37, 0x04); return flag;/*/RunASR()函数实现了一次完整的ASR语音识别流程/LD_Init_ASR() 函数实现了ASR初始化/LD_AsrAddFixed() 函数实现了添加关键词语到LD3320芯片中/LD_AsrRun()函数启动了一次ASR语音识别流程/任何一次ASR识别流程,都需要按照这个顺序,从初始化开始进行/*/unsigned char RunASR()unsigned char i=0;unsigned char asrflag=0;for (i=0; i0 & 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(0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论