




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include ISD1760.h/AUTHOR:REPUTATION LI/Date:2015年4月26日/版权所有,违者必究#define GPIO_ISD1760 GPIOA /使用的GPIO时钟/SPI命令输入到1700以前,nSS=1; SCLK=1; MOSI=0;uint8_t SR0_L;/状态寄存器0的低字节uint8_t SR0_H; /状态寄存器0的高字节uint8_t SR1; /状态寄存器1的低字节uint8_t ID;uint8_t APCL;uint8_t APCH;/器件ID、APC低字节、APC高字节 /-/每10秒大约是80个十进制地址,即十六进制0x50,后一段声音越界 85 800/就只会播前段声音的后面的一部分,遇到EOM停止.所以根据 /录的秒数乘以8,转化成十六进制数,得到大概地址,后面进行微调。 /- uint16_t caToneA8=0x0010,0x0028, 0x0029,0x0042, 0x0043,0x0059, 0x0060,0x0074;/0x0010是环形起点/-/函数名称:I_delay() /出口参数:无 /函数功能:实现US级的延时 /-void delayus(void) /while(k-);/每次15us while(2-);/-/函数名称:Delay /入口参数:Z /出口参数:无 /函数功能:实现MS级的延时,Z为延时的MS数 /-void Delay(uint16_t z)uint16_t x,y;for(x=z;x0;x-) /7usfor(y=185;y0;y-);/990us,相加约等于 1ms 。/uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)/ uint8_t bitstatus = 0x00;/ /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx);/ assert_param(IS_GET_GPIO_PIN(GPIO_Pin); / if (GPIOx-IDR & GPIO_Pin) != (uint32_t)Bit_RESET)/ / bitstatus = (uint8_t)Bit_SET;/ / else/ / bitstatus = (uint8_t)Bit_RESET;/ / return bitstatus;/-/ /函数名 : SPISendData( ) /功能描述:SPI传输数据(发送数据)子程序-边发数据 边读数据 /-uint8_t SPISendData(uint8_t BUF_ISD) uint8_t i,dat;dat = BUF_ISD;/要写入ISD1760的数据 SCLK_1;nSS_0;/为低选择当前设备,并开启SPIfor(i=0;i=1; if(GPIO_ReadInputDataBit(GPIO_ISD1760, MISO)/如果CPU收到来自ISD1760的数据 dat|=0x80; /1760 输出,下降沿输出 ,同步输出 /因为高位已经右移为0,所以CPU若读到1,可置高位为1,循环之后读回一个字节SCLK_1; /实现上升沿delayus(); MOSI_0;/数据发送接收,IO口恢复常规 低 状态 / nSS=1; return(dat); /* * 函数原型: void RdStatus(void); * 功能: 读取状态 */ void RdStatus(void) nSS_0;SPISendData(RD_STATUS);/读状态寄存器和当前地址 SPISendData(0x00);/? SPISendData(0x00); nSS_1; Delay(10); /延迟10msnSS_0; SR0_L =SPISendData(RD_STATUS); SR0_H =SPISendData(0x00); SR1 =SPISendData(0x00); nSS_1; Delay(10); /* * 函数原型: void ClrInt(void); * 功能: 清除中断 */ void ClrInt(void) nSS_0;SPISendData(CLI_INT);/清除中断与EOM位 SPISendData(0x00); nSS_1;Delay(10); /* * 函数原型: void ISD_WR_NVCFG(void); * 功能: 永久写入寄存器 */ void ISD_WR_NVCFG(void) nSS_0;SPISendData(WR_NVCFG);/将APC的内容写到NVCFG;永久写入寄存器 SPISendData(0x00); nSS_1; Delay(10); /* * 函数原型: void ISD_WR_APC2(uchar voiceValue); * 功能: 设置APC2 */ void ISD_WR_APC2(void) nSS_0;SPISendData(WR_APC2);/将的数据写进APC2寄存器,并由脚调节音量 SPISendData(0x70); /0xa8声音最大,0xaf声音最小,0xa0去掉了录音时的监听 SPISendData(0x0c);/0c /D11=1,在SETPLAY模式下,执行到EOM自动结束。或者在连续两个SET_PLAY命令后,执行到第一个EOM自动跳到第二段开始 nSS_1; Delay(10); ISD_WR_NVCFG(); /永久写入寄存器 /* * 函数原型: void RD_APC(void); * 功能: 读取APC */ void RdAPC(void) nSS_0;SPISendData(RD_APC);/读状态寄存器、当前地址、APC寄存器 SPISendData(0x00); SPISendData(0x00); SPISendData(0x00); nSS_1; Delay(10); /延迟10ms SR0_L = SPISendData(RD_APC); SR0_H = SPISendData(0x00); APCL = SPISendData(0x00); APCH = SPISendData(0x00); nSS_1; Delay(10); /* * 函数原型: void ISD_Init(void); * 功能: 初始化 */ void ISD_Init(void) ISD_Reset();/功能: 复位 do ISD_PU();/功能: 上电 RdStatus();/功能: 读取状态 while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err ClrInt();/功能: 清除中断 ISD_WR_APC2();/功能: 设置APC2 RdAPC(); /功能: 读取APC /* * 函数原型: void ISD_CHK_MEM(void); * 功能: 空间检查 */ void ISD_CHK_MEM(void) nSS_0;SPISendData(CHK_MEM);/检测环形存储器是否已满 SPISendData(0x00); nSS_1;Delay(10); /* * 函数原型: void ISD_Reset(void); * 功能: 复位 */ void ISD_Reset(void) nSS_0;SPISendData(RESET);/复位 SPISendData(0x00); nSS_1; Delay(50); /* * 函数原型: void ISD_Stop(void); * 功能: 停止 */ void ISD_Stop(void) nSS_0;SPISendData(STOP);/停止当前操作 SPISendData(0x00); nSS_1; Delay(50); /* * 函数原型: void ISD_PU(void); * 功能: 上电 */ void ISD_PU(void) nSS_0;SPISendData(PU);/Power up 上电检测 SPISendData(0x00); nSS_1; Delay(50); /* * 函数原型: void ISD_PD(void); * 功能: 掉电 */ void ISD_PD(void) nSS_0;SPISendData(PD);/Power down 掉电 SPISendData(0x00); nSS_1;Delay(10); /* * 函数原型: void RdStatus(void); * 功能: 读取ID */ uint8_t RD_DevID(void) nSS_0;SPISendData(DEVID);/读取器件ID SPISendData(0x00); SPISendData(0x00); nSS_1;Delay(10); /延迟10ms SR0_L = SPISendData(DEVID); SR0_H = SPISendData(0x00); ID = SPISendData(0x00); nSS_1; Delay(10); return(ID); /* * 函数原型: void GetToneAdd(uchar cNum, Uint * ipStartAdd, Uint * ipEndAdd); * 功能: 取出当前语音的首末地址(基础函数) */ void GetToneAdd(uint8_t cNum, uint16_t *ipStartAdd, uint16_t *ipEndAdd) *ipStartAdd=caToneAcNum*2;/当前语音的首地址 = 装载地址的数组中的某元素*ipEndAdd=caToneAcNum*2+1; /* * 函数原型: void SetPLAY(uchar cNum) * 功能: 定点播放(调用函数) */ void SetPLAY(uint8_t cNum) uint16_t Add_ST, Add_ED;/起始地址,结束地址 uint8_t Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L;/起始地址高8位,起始地址低8位,结束地址高8位,结束地址低8位 do RdStatus();/功能: 读取状态 while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err ClrInt(); /功能: 清除中断GetToneAdd(cNum, &Add_ST, &Add_ED);/功能: 取出当前语音的首末地址 Add_ST_L=(uint8_t)(Add_ST&0x00ff); /起始地址低8位Add_ST_H=(uint8_t)(Add_ST8)&0x00ff); /起始地址高8位Add_ED_L=(uint8_t)(Add_ED&0x00ff); /结束地址低8位Add_ED_H=(uint8_t)(Add_ED8)&0x00ff); /结束地址高8位nSS_0;SPISendData(SET_PLAY);/从开始播放,直到或EOM SPISendData(0x00); SPISendData(Add_ST_L); /S7:S0 开始地址 SPISendData(Add_ST_H); /S10:S8 SPISendData(Add_ED_L); /E7:E0 结束地址 SPISendData(Add_ED_H); /E10:E8 SPISendData(0x00); nSS_1; Delay(10); /延迟10ms do RdStatus();/功能: 读取状态 while(SR0_L&0x01)|(SR1&0x04); / 0x04? if(SR0_L0=1)system Err /* * 函数原型: void SetREC(uchar cNum); * 功能: 定点录音 */ void SetREC(uint8_t cNum) uint16_t Add_ST, Add_ED; uint8_t Add_ST_H, Add_ST_L, Add_ED_H, Add_ED_L; do RdStatus();/功能: 读取状态 while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err ClrInt(); /功能: 清除中断GetToneAdd(cNum, &Add_ST, &Add_ED);/功能: 取出当前语音的首末地址 Add_ST_L=(uint8_t)(Add_ST&0x00ff); Add_ST_H=(uint8_t)(Add_ST8)&0x00ff); Add_ED_L=(uint8_t)(Add_ED&0x00ff); Add_ED_H=(uint8_t)(Add_ST8)&0x00ff); nSS_0;SPISendData(SET_REC);/从开始录音,直到 SPISendData(0x00); SPISendData(Add_ST_L); /S7:S0 开始地址 SPISendData(Add_ST_H); /S10:S8 SPISendData(Add_ED_L); /E7:E0 结束地址 SPISendData(A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《谏太宗十疏书》课件
- 语文教学研修汇报
- 亲戚关系单词课件
- 《诗经·何草不黄》课件
- 亲子健康调理课件
- 亮丽的城市风光课件
- 事故安全培训感受体会课件
- 事业单位财务
- 气体行业的年度工作总结
- 汽车外饰工程师年终总结
- 村干部饮水安全培训总结课件
- 安全生产治本攻坚三年行动半年工作总结
- 海船船员适任 评估规范(2024)轮机专业
- DB50-T 1463.2-2023 牛羊布鲁氏菌病防控技术规范 第2部分:人员防护
- 20世纪宋史研究:主要趋势、热点领域与未来展望
- 2025年度餐饮店知识产权保护与合伙人合同
- 《大掺量粉煤灰在混凝土中应用技术规程》
- 农行公务卡管理办法
- 2025河南水投资源开发管理集团招聘11人笔试参考题库附带答案详解
- 反邪教责任管理制度
- 林业产业链延伸与价值提升的实施途径
评论
0/150
提交评论