• jason_H
    了解作者
  • C/C++
    开发工具
  • 87KB
    文件大小
  • rar
    文件格式
  • 1
    收藏次数
  • 10 积分
    下载积分
  • 3
    下载次数
  • 2017-04-19 15:34
    上传日期
语音模块LD3320,包含芯片资料和例程。
LD3320.rar
  • LD3320
  • proj
  • LD3320_Uv2.Bak
    2.2KB
  • Reg_RW.lst
    10.7KB
  • LD3320.plg
    11KB
  • Reg_RW.obj
    8.6KB
  • LD3320.Uv2
    2.3KB
  • LDChip.obj
    18.3KB
  • LD3320.lnp
    94B
  • main.obj
    13.9KB
  • LD3320
    41.8KB
  • LD3320.Opt
    1.7KB
  • LD3320_Opt.Bak
    1.7KB
  • usart.obj
    5.9KB
  • debug
  • LD3320.plg
    194B
  • Reg_RW.obj
    7KB
  • LDChip.obj
    16.1KB
  • LD3320.lnp
    181B
  • main.obj
    11.3KB
  • LD3320
    44.3KB
  • user.obj
    8.9KB
  • LD3320.hex
    7.1KB
  • usart.obj
    5.9KB
  • list
  • Reg_RW.lst
    3.8KB
  • usart.lst
    3.2KB
  • LD3320.m51
    31.3KB
  • user.lst
    7KB
  • main.lst
    13.4KB
  • LDChip.lst
    18.3KB
  • src
  • config.h
    652B
  • Reg_RW.c
    1.1KB
  • main.c
    5.7KB
  • Reg_RW.h
    821B
  • LDChip.h
    1.8KB
  • usart.h
    194B
  • user.c
    3.6KB
  • usart.c
    1.4KB
  • LDChip.c
    9.8KB
  • user.h
    397B
  • doc
内容介绍
/************************************************************************************ ** CPU: STC89LE52 ** 晶振:12MHZ ** 波特率:4800 bit/S /************************************************************************************/ #include "config.h" void delay(unsigned long uldata); uint8 idata ucRegVal; extern bit AddFixedFlag; extern uint8 idata nAsrStatus; extern void PrintCom(uint8_t *DAT); //打印串口字符串数据 void ProcessInt0(void); /************************************************************************ 功能描述: 复位LD模块 **************************************************************************/ void LD_Reset() {// unsigned char tmp; RSTB=1; delay(1); RSTB=0; delay(1); RSTB=1; delay(1); CSB=0; delay(1); CSB=1; delay(1); /* tmp = LD_ReadReg(0x06); UARTSendByte(tmp); tmp = LD_ReadReg(0x06); UARTSendByte(tmp); tmp = LD_ReadReg(0x35); UARTSendByte(tmp); tmp = LD_ReadReg(0xb3); UARTSendByte(tmp); */ } /************************************************************************ 功能描述: LD模块命令初始化 **************************************************************************/ void LD_Init_Common() { LD_ReadReg(0x06); /*0x06 FIFO状态 第3位:1表示 FIFO_DATA已满,不能写。第5位:1表示 FIFO_EXT已满,不能写。*/ LD_WriteReg(0x17, 0x35);/*写35H 对LD3320 进行软复位;写48H 可以激活 DSP;写4CH 可以使DSP 休眠,比较省电。*/ delay(10); LD_ReadReg(0x06); LD_WriteReg(0x89, 0x03); /*0x89 模拟电路控制 初始化时写 03H ; MP3 播放时写 FFH*/ delay(5); LD_WriteReg(0xCF, 0x43); /*0xcf 内部省电模式设置 初始化时 写入 43H; MP3 初始化和 ASR初始化时写入 4FH*/ delay(5); LD_WriteReg(0xCB, 0x02); /*0xcb ASR:读取 ASR结果(候补 4) */ /*PLL setting*/ LD_WriteReg(0x11, LD_PLL_11); /*0x11 时钟频率设置 1*/ LD_WriteReg(0x1E,0x00); /*0x1e ADC 专用控制,应初始化为 00H */ LD_WriteReg(0x19, LD_PLL_ASR_19); /*0x19 时钟频率设置 2 */ LD_WriteReg(0x1B, LD_PLL_ASR_1B);/*0x1b 时钟频率设置 3*/ LD_WriteReg(0x1D, LD_PLL_ASR_1D); /*0x1d 时钟频率设置 4*/ delay(10); LD_WriteReg(0xCD, 0x04); /*0xcd DSP 休眠设置 初始化时写入 04H 允许DSP 休眠。*/ LD_WriteReg(0x17, 0x4c); /*0x17 写35H 对LD3320 进行软复位(Soft Reset);写48H 可以激活 DSP;;写4CH 可以使DSP 休眠,比较省电。*/ delay(5); LD_WriteReg(0xB9, 0x00); /*0xb9 ASR:当前添加识别句的字符串长度(拼音字符串) 初始化时写入 00H,每添加一条识别句后要设定一次。*/ LD_WriteReg(0xCF, 0x4F); /*0xcf 内部省电模式设置 初始化时 写入 43H; MP3 初始化和 ASR初始化时写入 4FH*/ LD_WriteReg(0x6F, 0xFF); /*0x6f 对芯片进行初始化时设置为 0xFF */ } /************************************************************************ 功能描述: LD模块 ASR功能初始化 **************************************************************************/ void LD_Init_ASR() { LD_Init_Common(); LD_WriteReg(0xBD, 0x00); /*0xbd 初始化控制寄存器.写入 02H;然后启动;为 MP3 模块;写入 00H;然后启动;为 ASR 模块; */ LD_WriteReg(0x17, 0x48); /*0x17 写35H 对LD3320 进行软复位(Soft Reset);写48H 可以激活 DSP;;写4CH 可以使DSP 休眠,比较省电。*/ delay( 10 ); LD_WriteReg(0x3C, 0x80); /*FIFO_EXT 下限低 8位(LowerBoundary L) */ LD_WriteReg(0x3E, 0x07); /*FIFO_EXT 下限高 8位(LowerBoundary H) */ LD_WriteReg(0x38, 0xff); /*FIFO_EXT 上限低 8位(UpperBoundary L)*/ LD_WriteReg(0x3A, 0x07); /*FIFO_EXT上限高 8位(UpperBoundary H)*/ LD_WriteReg(0x40, 0); /*FIFO_EXT MCU水线低 8位(MCU water mark L)*/ LD_WriteReg(0x42, 8); /*FIFO_EXT MCU水线高 8位(MCU water mark H) */ LD_WriteReg(0x44, 0); /*FIFO_EXT DSP水线低 8位(DSP water mark L) */ LD_WriteReg(0x46, 8); /*FIFO_EXT DSP水线高 8位(DSP water mark H)*/ delay( 1 ); // PrintCom("LD_Init_ASR OK!\n"); } /************************************************************************ 功能描述: 中断处理函数 其他说明: 当LD模块接收到音频信号时,将进入该函数, 判断识别是否有结果,如果没有从新配置寄 存器准备下一次的识别。 **************************************************************************/ void ProcessInt0(void) { uint8 nAsrResCount=0; EX0=0; ucRegVal = LD_ReadReg(0x2B); /*0x2B 中断请求寄存器*/ LD_WriteReg(0x29,0) ; /*0x29 中断允许寄存器*/ LD_WriteReg(0x02,0) ; /*0x02 FIFO中断允许寄存器*/ if((ucRegVal & 0x10) && LD_ReadReg(0xb2)==0x21 && /*0xb2 ASR忙闲寄存器 0x21表示空闲*/ LD_ReadReg(0xbf)==0x35) /*0xbf ASR状态报告寄存器 0x35表示识别流程已结束*/ /*识别成功*/ { nAsrResCount = LD_ReadReg(0xba); /*0xba 中断辅助信息。当为ASR流程时,是语音识别有几个识别候选*/ if(nAsrResCount>0 && nAsrResCount<=4) { nAsrStatus=LD_ASR_FOUNDOK; /*Value: 1 – 4: N个有效识别候选*/ } else { nAsrStatus=LD_ASR_FOUNDZERO; /*Value: 0或者大于 4:没有识别候选*/ } } /*没有识别结果*/ else { nAsrStatus=LD_ASR_FOUNDZERO; } LD_WriteReg(0x2b, 0); /*0x2B 中断请求寄存器清零*/ LD_WriteReg(0x1C,0); /*写0:ADC不可用*/ LD_WriteReg(0x29,0); /*0x29 中断允许寄存器*/ LD_WriteReg(0x02,0); /*0x02 FIFO中断允许寄存器*/ LD_WriteReg(0x2B,0); /*0x2B 中断请求寄存器*/ LD_WriteReg(0xBA,0); /*0xba 中断辅助信息。当为ASR流程时,是语音识别有几个识别候选*/ LD_WriteReg(0xBC,0); /*0xbc ASR:识别过程强制结束*/ LD_WriteReg(0x08,1); /*清除FIFO_DATA*/ LD_WriteReg(0x08,0); /*清除FIFO_DATA后 再次写0*/ // PrintCom("ProcessInt0\n"); EX0=1; } /************************************************************************ 功能描述: 检测LD模块是否空闲 返 回 值: flag:1-> 空闲 **************************************************************************/ uint8 LD_Check_ASRBusyFlag_b2() { uint8 j; uint8 flag = 0; for (j=0; j<10; j++) { if (LD_ReadReg(0xb2) == 0x21) { flag = 1; break; } delay(10); } return flag; } /************************************************************************ 功能描述: 启动ASR **************************************************************************/ void LD_AsrStart() { LD_Init_ASR(); } /************************************************************************ 功能描述: 运行ASR 返 回 值: 1:启动成功 **************************************************************************/ uint8 LD_AsrRun() { EX0=0; // PrintCom("in LD_AsrRun\n"); LD_WriteReg(0x35, MIC_VOL); /*0x35 ADC 增益,或可以理解为麦克风(MIC)音量。可以设置为00H-7FH。建议设置值为40H-55H*/ LD_WriteReg(0x1C, 0x09); /*0x1c 写 09H Reserve 保留命令字,ADC 开关控制*/ LD_WriteReg(0xBD, 0x20); /*0xbd 初始化控制寄存器 .写入 20H;Reserve 保留命令字初始化控制寄存器 */ LD_WriteReg(0x08, 0x01); /*0x08 清除 FIFO内容(清除指定 FIFO 后再写入一次00H).第0 位:写入1→清除FIFO_DATA */ delay( 1 ); LD_WriteReg(0x08, 0x00); /**/ delay( 1 ); if(LD_Check_ASRBusyFlag_b2() == 0) { // PrintCom("LD_AsrRun=0\n"); return 0; } // 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); /*ASR:DSP忙闲状态 */ delay( 1); LD_WriteReg(0x37, 0x06); /*0x37 语音识别控制命令下发寄存器.写06H:通知DSP 开始识别语音。 */ delay( 1 ); LD_WriteReg(0x37, 0x06); /**/ delay( 5 ); LD_WriteReg(0x29, 0x10); /*0x29 中断允许(可读写) 第 4位:同步中断允许,1 表示允许;0表示不允许*/ LD_WriteReg(0xBD, 0x00); /*0xbd 初始化控制寄存器 .写入 00H;然后启动;为 ASR 模块; */ EX0=1; // PrintCom("LD_AsrRun=1\n"); return 1; } /************************************************************************ 功能描述: 获取识别结果 返 回 值: LD_ReadReg(0xc5 ); 读取内部寄存器返回识别码。 **************************************************************************/ uint8 LD_GetResult() { return LD_ReadReg(0xc5 ); /*0xc5 ASR:读取 ASR结果(最佳) */ } /*****
评论
    相关推荐
    • LD3320.rar
      一个基于LD3320芯片的实现非特定语音识别的源代码,采用口令模式识别。代码详细介绍请见工程内的注释。
    • LD3320.rar
      基于STM32F10战舰V3 LD3320语音识别,源码程序+LD3320-advanced+LD3320-APP+LD3320-UART+LD3320-Board-Schematic+LD3320-datasheet+LD3320_develop+LD3320-Board-UserManual+LD3320-debug+硬件接线
    • LD3320.zip
      LD3320语音识别芯片开发高价秘籍!需要改进程序的程序猿下载
    • LD3320.rar
      同时,对于录音距离的问题,可以在麦克风中集成 LD3320 后,夹装在保险带上(司机的胸前位置)。这样可以最好效果地接受司机的语音指令,并把相应的识别结果发送到导航仪上就可以(比如用最简单的红外就可以把识别...
    • LD3320最新驱动
      LD3320的最新语音识别驱动,买芯片的时候,卖家送的
    • LD3320.zip
      ld3320通过mdk4下载到芯片后,接入stm32模块,进行串口控制,我直接在串口三接收ld3320的数据并做判断
    • LD3320语音芯片相关
      LD3320语音芯片相关STM32F103VET6或者Arduino 语音控制灯量灭,实现流水灯等等功能(具体实现需要修改管脚)
    • ld3320语音识别程序
      该程序由ld3320控制 开发板所用芯片为STC10L08XE 功能描述:说“你好”8位数码管的7,8位显示01,一次累加 说“再见”8位数码管的5,6位显示01,一次累加 说“谢谢”8位数码管的3,4位显示01,一次累加 说“欢迎”8...
    • 语音控制芯片LD3320资料
      内符很多开发时的资料。包括如果用单片机控制实例。
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路