ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:161.74KB ,
资源ID:24369859      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24369859.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32ISD1760语音播放.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32ISD1760语音播放.docx

1、STM32ISD1760语音播放STM32_ISD1760语音播放ISD1760.c#include ISD1760.h#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

2、,后一段声音越界 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 /出口参数:无 /函数功能:

3、实现MS级的延时,Z为延时的MS数 /-void Delay(uint16_t z) uint16_t x,y; for(x=z;x0;x-) /7us for(y=185;y0;y-); /990us,相加约等于 1ms 。/-/ /函数名 : SPISendData( ) /功能描述:SPI传输数据(发送数据)子程序-边发数据 边读数据 /-uint8_t SPISendData(uint8_t BUF_ISD) uint8_t i,dat; dat = BUF_ISD; /要写入ISD1760的数据 SCLK_1; nSS_0; /为低选择当前设备,并开启SPI for(i=0;i=1;

4、 if(GPIO_ReadInputDataBit(GPIO_ISD1760, MISO) /如果CPU收到来自ISD1760的数据 dat|=0x80; /1700 输出,下降沿输出 ,同步输出 /因为高位已经右移为0,所以CPU若读到1,可置高位为1,循环之后读回一个字节 SCLK_1; /实现上升沿 delayus(); MOSI_0; /数据发送接收,IO口恢复常规 低 状态 / nSS=1; return(dat); /* * 函数原型: void RdStatus(void); * 功能: 读取状态 */ void RdStatus(void) nSS_0; SPISendData

5、(RD_STATUS); /读状态寄存器和当前地址 SPISendData(0x00); / SPISendData(0x00); nSS_1; Delay(10); /延迟10ms nSS_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位

6、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; SP

7、ISendData(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; SP

8、ISendData(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 IS

9、D_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);

10、 /检测环形存储器是否已满 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)

11、; 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); /* * 函数原

12、型: 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(ucha

13、r 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_

14、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

15、_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(A

16、dd_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_

17、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

18、_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(Add_ED_H); /E10:E8 SPISendData(0x00); nSS_1; Delay(10); /延迟10ms do RdStatus(); /功能: 读取状态 while(SR0_L&0x01)|(!(SR1&0x01); /if(SR0_L0=1)system Err /* * 函数原型: void Erase_All(void); * 功能: 全部删除 */ void Erase_All(void) nSS_0; SPISendData(G_ERASE); /擦除全部曲目除了提示音 SPISendData(0x00); nSS_1; Delay(10); /延迟10ms ISD1760.h/*

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1