#include "main.h"
uint8 nLD_Mode = LD_MODE_IDLE; // 用来记录当前是在进行ASR识别还是在播放MP3
unsigned 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;i<8;i++)
{
if ((command & 0x80)>0)
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;i<8;i++)
{
if ((address & 0x80) >0)
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;i<8;i++)
{
if ((dataout & 0x80) >0)
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;i<8;i++)
{
if ((command & 0x80)>0)
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;i<8;i++)
{
if ((address & 0x80) >0)
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;i<8;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; j<10; j++)
{
if (LD_ReadReg(0xb2) == 0x21)
{
flag = 1;
break;
}
__delay_cycles(200);
}
return flag;
}
/************************************************************************
功能描述: 启动ASR
入口参数: none
返 回 值: none
其他
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
MSP430单片机语音识别芯片LD3320源程序 驱动源码,可供学习及设计参考。 /************************************************************************************/ // nAsrStatus 用来在main主程序中表示程序运行的状态,不是LD3320芯片内部的状态寄存器 // LD_ASR_NONE: 表示没有在作ASR识别 // LD_ASR_RUNING: 表示LD3320正在作ASR识别中 // LD_ASR_FOUNDOK: 表示一次识别流程结束后,有一个识别结果 // LD_ASR_FOUNDZERO: 表示一次识别流程结束后,没有识别结果 // LD_ASR_ERROR: 表示一次识别流程中LD3320芯片内部出现不正确的状态 /***********************************************************************************/ void main() { WDTCTL = WDTPW + WDTHOL
资源推荐
资源详情
资源评论
收起资源包目录
MSP430单片机语音识别芯片LD3320源程序 驱动源码.zip (243个子文件)
LD_Test.cspy.bat 1KB
LD3320.c 13KB
main.c 2KB
LD_Test.d43 37KB
LD_Test.dbgdt 6KB
LD_Test.dep 4KB
LD_Test.dni 1KB
LD_Test.ewd 19KB
LD_Test.ewp 46KB
LD_Test.eww 161B
PIN_DEF.H 12KB
LD3320.h 3KB
main.h 263B
LD_Test.pbd 250B
LD3320.r43 78KB
main.r43 22KB
EW4A.r43 898B
EW4E.r43 898B
EW4C.r43 898B
EW54.r43 898B
EW51.r43 898B
EW152.r43 896B
EW150.r43 896B
EWC4.r43 886B
EWA0.r43 886B
EWCB.r43 886B
EWE8.r43 886B
EWDF.r43 886B
EWCE.r43 886B
EWD1.r43 886B
EWD4.r43 886B
EWAB.r43 886B
EWA2.r43 886B
EWEE.r43 886B
EWE2.r43 886B
EWC9.r43 886B
EWC6.r43 886B
EWD6.r43 886B
EWD9.r43 886B
EWB8.r43 886B
EWBE.r43 886B
EW97.r43 886B
EWEB.r43 886B
EWB2.r43 886B
EWB6.r43 886B
EW95.r43 886B
EWAF.r43 886B
EWAD.r43 886B
EWBC.r43 886B
EWDC.r43 886B
EW122.r43 871B
EW119.r43 871B
EW12F.r43 871B
EW100.r43 871B
EW12D.r43 871B
EW106.r43 871B
EW125.r43 871B
EW110.r43 871B
EW113.r43 871B
EW116.r43 871B
EW132.r43 871B
EW108.r43 871B
EW128.r43 871B
EW10D.r43 871B
EW11C.r43 871B
EW11F.r43 871B
EW102.r43 871B
EWF9.r43 869B
EWE7.r43 869B
EWE5.r43 869B
EWFC.r43 869B
EWF4.r43 869B
EWFE.r43 869B
EWC3.r43 869B
EWC1.r43 869B
EWF6.r43 869B
EWBD.r43 865B
EWBF.r43 865B
EW195.r43 846B
EW15E.r43 846B
EW169.r43 846B
EW159.r43 846B
EW191.r43 846B
EW17D.r43 846B
EW160.r43 846B
EW167.r43 846B
EW1DB.r43 846B
EW1B1.r43 846B
EW17C.r43 846B
EW1A1.r43 846B
EW1B3.r43 846B
EW18E.r43 846B
EW182.r43 846B
EW1AF.r43 846B
EW103.r43 846B
EW109.r43 846B
EW163.r43 846B
EW181.r43 846B
EW1DE.r43 846B
EW1FD.r43 846B
共 243 条
- 1
- 2
- 3
资源评论
GJZGRB
- 粉丝: 2943
- 资源: 7737
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java前后端分离MES生产执行管理系统源码数据库 MySQL源码类型 WebForm
- 【java毕业设计】教师授课管理系统源码(完整前后端+说明文档+LW).zip
- 基于STM32F103C8T6的智能家居控制系统源码+文档说明(高分毕业设计)
- Windows环境下OpenSSH服务的安装与启动配置指南
- MT4缠论指标免费使用无限制,无需续费及绑定电脑
- 基于STM32F103C8T6的车辆落水报警系统源码+文档说明+原理图(毕业设计)
- 编程不良人ElasticSearch-7.14笔记
- 学之思开源考试系统是一款java+vue的前后端分离的考试系统 主要优点是开发、部署简单快捷、界面设计友好、代码结构清晰 支持web端和微信小程序,能覆盖到pc机和手机等设备 支持多种部署方式
- PHP旅游智能CRM系统源码数据库 MySQL源码类型 WebForm
- 大数据1+x(蓝桥课堂实操231216)解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功