ISD1760学习笔记附全套程序Word下载.docx
- 文档编号:18431610
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:16
- 大小:172.97KB
ISD1760学习笔记附全套程序Word下载.docx
《ISD1760学习笔记附全套程序Word下载.docx》由会员分享,可在线阅读,更多相关《ISD1760学习笔记附全套程序Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
在播放第一或最后语音段时打断播放,擦除当前语音段,更新放音指针指向第二段也就是存在的第一段语音段或倒数第二段语音段;
当播放非首尾任意语音段时,不进行任何操作。
电平触发持续2.5秒时并且保持会启动全部擦除命令并且擦除全部语音段,全部擦除操作图如下
7、当复位后,芯片将处于掉电状态,两个指针都指向最后一段语音,与第一条描述不符!
!
此引脚不用时连接VCC
8、音量操作,每次脉冲是音量减小一次,当减少到最小值时,将反过来增大音量,由此往复。
8阶音量控制,每次改变4分贝,每次复位都将恢复出厂设置的最大值。
SPI模式
1、与独立模式相当的命令:
播放,录音,擦除,快进,全部擦除,复位。
2、先传低位,命令字节的第四位为LED控制位,当此位是1时,LED被激活。
3、SPI命令分类:
A、优先级最高命令:
上电,掉电,停止,读状态,清除中断,读取ID,复位;
B、循环存储命令:
播放,录音,快进,擦除,全部擦除,读播放指针,读录音指针;
C、模拟配置命令:
读APC,写APC,写NVCFG,装载NVCFG,CHE_MEM;
D、内存直通操作命令:
SET_ERASE,SET_REC,SET_PLAY。
SPI指令说明
1、上电命令PU(0x01):
唤醒ISD1700芯片,使其进入空闲状态。
操作完成后RDY以及PU均置1,此操作不产生中断。
2、停止当前操作命令STOP(0x02):
此操作将停止当前操作,并且使芯片恢复到此操作之前的状态,此命令只对于PLAY,REC,SET_PLAY,SET_REC命令有效,当在ERASE,G_ERASE,SET_ERASE动作时发送此命令CMD_ERR会置1,当芯片处于空闲状态时此命令不会产生任何动作。
此命令会产生中断。
3、复位命令RESET(0x03):
终止当前操作,并且令芯片掉电,清除EOM以及INT中断标志。
4、清除中断命令CLR_INT(0x04):
命令读取芯片状态信息,并且清除EOM以及INT中断标志。
5、读状态命令RD_STATUS(0x05):
止读取芯片当前状态。
6、掉电命令PD(0x07):
止将芯片至于掉电状态。
在执行PLAY,REC,ERESE操作时发送此命令会等当前命令完成后执行掉电命令。
产生中断。
7、读取芯片ID指令(0x09):
读取芯片ID。
8、播放指令PLAY(0x40):
此操作从当前播放指针开始播放直到遇到EOM标志或接收到STOP命令。
在执行放音操作时芯片只对STOP,RESET,CLR_INT,RD_STATUS和PD命令响应。
在播放期间RDY为0,PLAY标志位为1。
此操作产生中断。
9、录音指令REC(0x41):
此操作令芯片从录音指针初开始录音,直到接收到STOP指令或存储空间满。
在录音操作期间芯片只对STOP,RESET,CLR_INT,RD_STATUS和PD命令响应。
在录音期间RDY为0,REC标志位为1。
10、擦除指令ERASE(0x42):
放音指针指向第一段或最后一段信息时,此命令一行行擦除信息,遇到EOM标志时停止操作。
擦除操作时芯片只对RESET,CLR_INT,RD_STATUS,PD命令响应。
在擦除期间RDY为0,ERASE标志位为1。
11、全部擦除操作G_ERASE(0x43):
芯片此操作擦除所有存储的语音信息,而不管放音指针在哪里,全部擦除期间芯片只对RESET,CLR_INT,RD_STATUS和PD命令响应。
在全部擦除期间RDY为0,ERASE标志位为1。
12、快进操作FWD(0x48):
此操作使播放指针移向下一段语音首地址。
SPI模式下的FWD操作不会像独立模式中的FWD能打断当前播放操作执行下一曲,而只能在芯片空闲状态时发送执行。
13、读取放音指针指令RD_PLAY_PTR(0x06):
读取放音指针,发送此指令时确保用CHK_MEM指令使循环存储结构满足条件,否则会返回不合法数据。
14、读取录音指针指令RD_REC_PTR(0x08):
读取录音指针,发送此指令时确保用CHK_MEM指令使循环存储结构满足条件,否则会返回不合法数据。
15、存储空间检查命令CHK_MEM(0x49):
此命令使芯片检查语音段的排布是否符合环形存储空间协议,此命令必须在上电而且空闲状态下发送执行,当不符合时CMD_ERR位置1,当成功时放音指针指向最后一段语音,录音指针指向最近可用存储单元。
16、读取APC寄存器指令RD_APC(0x44):
读取APC寄存器内容。
17、写APC寄存器指令1,WR_APC1(0x45):
此指令将配置信息写入APC寄存器,此命令对音量的配置是从引脚VOL控制,而不是VOLBit<
D2:
D0>
,改变音量时需要特别注意芯片是否在执行其他动作,否则会发生意外错误。
18、写APC寄存器指令2,WR_APC1(0x65):
此指令将配置信息写入APC寄存器,此命令对音量的配置是从通过VOLBit<
控制音量,而不是通过VOL引脚,改变音量时需要特别注意芯片是否在执行其他动作,否则会发生意外错误。
19、自由播放指令SET_PLAY(0x80):
此命令从开始地址开始播放一直到结束地址,RDY位只有在芯片锁存地址后,为1,一旦此位为1,就可再次发送此命令,以此实现最小延时连续播放。
执行此命令时芯片只对SET_PLAY,STOP,RESET,CLR_INT,RD_STATUS,PD命令做出相应。
20、自由录音指令SET_REC(0x81):
此命令从开始地址开始录音一直到结束地址,RDY位只有在芯片锁存地址后,为1,一旦此位为1,就可再次发送此命令,以此实现最小延时连续录音。
执行此命令时芯片只对SET_REC,STOP,RESET,CLR_INT,RD_STATUS,PD命令做出相应。
21、自由擦除SET_ERASE(0x82):
此命令从开始地址开始擦除一直到结束地址,RDY位在擦除过程中一直为低电平,直到擦除完成。
擦除过程中芯片只对RESET,CLR_INT,RD_STATUS,PD命令作出相应
SPI操作要点
开始时录音指针和放音指针都指向开头存储空间0x010。
录音完成后,录音指针指向下一个可录音单元,放音指针则随着录音片段的增加指向最新录制完成的语音片段。
播放时可接受的命令:
STOP,RESET,CLR_INT,RD_STATUS和PD,在播放期间RDY以及PLAY标志位均为0。
录音时可接受的命令:
STOP,RESET,CLR_INT,RD_STATUS和PD,在录音期间RDY以及REC标志位均为0。
擦除时可接受的命令:
RESET,CLR_INT,RD_STATUS,PD,在擦除期间RDY以及ERASE标志位均为0。
擦除时必须保证指针指向第一段或最后一段语音片段。
全部擦除时可接受的命令:
RESET,CLR_INT,RD_STATUS和PD,在全部擦除期间RDY以及ERASE标志位均为0。
快进操作只能在芯片空闲状态时发送。
读取放音指针和录音指针最好在CHK_MEM操作后进行。
CHK_MEM使录音指针指向最近可录音单元,是放音指针指向最后一个语音段。
复位,掉电,清除中断,读取状态在播放、擦除或录音时能接收执行,另外播放和录音时能够接收停止指令。
停止命令只有对放音、录音、自由放音和自由录音有效。
中断是一个操作完成的标志,在下一个命令发送之前必须将中断清零。
产生中断的命令:
放音录音下一曲擦除全部擦除更新指针CHK_MEM停止复位
电路连接
Reset引脚在不用时接高电平
Anala受APC的D3位影响
MIC-/+受APC的D4位影响
SP-/+受APC的D8位影响
AUD/AUX受APC的D7位影响
AGC引脚可使失真减小到最少,将4.7μF的电容接到此引脚使其工作
ROSC引脚接一个电阻到地决定采样率
FT引脚独立按键模式低电平激活,激活后模拟信号会直接从Anlal引脚传送到SP-/+或AUX/AUD;
SPI模式受APC的D6控制
INT/RDY引脚,在独立模式下位RDY功能,在SPI模式下时INT功能,当一个SPI命令完成后为低电平,清除中断后为高电平。
/*-------------------------------------------------------.C.H文件----------------------------------------------*/
//H文件
#ifndef__1760_H
#define__1760_H
/*----------------------ISD1700SPI通信引脚位定义------------------*/
sbitSS=P1^3;
//芯片片选引脚,低电平有效
sbitSCK=P1^4;
//时钟线
sbitMOSI=P1^5;
//主入从出数据引脚
sbitMISO=P1^6;
//主出从入数据引脚
uint8SPI_Senddata(uint8dat);
voidISD_PU(void);
voidISD_STOP(void);
voidISD_RESET(void);
voidISD_CLR_INT(void);
voidRead_Status(void);
voidISD_PD(void);
uint8ISD_DEVID(void);
voidISD_PLAY(void);
voidISD_REC(void);
voidISD_ERASE(void);
voidISD_G_ERASE(void);
voidISD_FWD(void);
voidISD_RD_PLAY_PTR(void);
voidISD_RD_REC_PTR(void);
voidISD_CHK_MEM(void);
voidISD_WR_APC1(uint8apcdatl,uint8apcdath);
voidISD_WR_APC2(uint8apcdatl,uint8apcdath);
voidISD_SET_PLAY(uint8s_addl,uint8s_addh,uint8e_addl,uint8e_addh);
voidISD_SET_REC(uint8s_addl,uint8s_addh,uint8e_addl,uint8e_addh);
voidISD_SET_ERASE(uint8s_addl,uint8s_addh,uint8e_addl,uint8e_addh);
voidISD_Init(void);
#endif
//C文件
#include"
main.h"
1760.h"
delay.h"
1602.h"
codeuint8message[]="
SystemInit"
;
//SPI数据传送函数,必须保证外部SS=1
//但是不能在此函数中令SS=1
//因为命令为多字节命令,发送命令时必须保证SS=0
uint8SPI_Senddata(uint8dat)
{
uint8i,j,SPI_Buf=dat;
for(i=0;
i<
8;
i++)
{
SCK=0;
for(j=0;
j<
4;
j++);
if(SPI_Buf&
0x01)//先移出低位
MOSI=1;
else
MOSI=0;
SPI_Buf>
>
=1;
if(MISO)
SPI_Buf|=0x80;
SCK=1;
}
returnSPI_Buf;
}
/*********************************************************************************************************************/
//上电
voidISD_PU(void)
SS=0;
SR0_L=SPI_Senddata(0X01);
SR0_H=SPI_Senddata(0X00);
MOSI=0;
//保证MOSI引脚在输入SPI命令之前为低电平
//停止当前操作
voidISD_STOP(void)
SR0_L=SPI_Senddata(0X02);
SS=1;
//复位
voidISD_RESET(void)
SR0_L=SPI_Senddata(0X03);
//清除中断
voidISD_CLR_INT(void)
SR0_L=SPI_Senddata(0X04);
//读取状态寄存器
voidRead_Status(void)
{
SR0_L=SPI_Senddata(0X05);
SR1=SPI_Senddata(0X00);
//掉电
voidISD_PD(void)
SR0_L=SPI_Senddata(0X07);
//读取ID
uint8ISD_DEVID(void)
uint8ID;
SR0_L=SPI_Senddata(0X09);
ID=SPI_Senddata(0X00);
returnID;
//放音
voidISD_PLAY(void)
SR0_L=SPI_Senddata(0X40);
//录音
voidISD_REC(void)
SR0_L=SPI_Senddata(0x41);
SR0_H=SPI_Senddata(0x00);
//局部擦除
voidISD_ERASE(void)
SR0_L=SPI_Senddata(0x42);
//全部擦除
voidISD_G_ERASE(void)
SR0_L=SPI_Senddata(0x43);
//下一曲
voidISD_FWD(void)
SR0_L=SPI_Senddata(0x48);
//读取放音指针
voidISD_RD_PLAY_PTR(void)
SR0_L=SPI_Senddata(0x06);
PlayAddL=SPI_Senddata(0x00);
PlayAddH=SPI_Senddata(0x00);
//读取录音指针
voidISD_RD_REC_PTR(void)
SR0_L=SPI_Senddata(0x08);
RecAddL=SPI_Senddata(0x00);
RecAddH=SPI_Senddata(0x00);
//存储空间检查函数
voidISD_CHK_MEM(void)
SPI_Senddata(0x49);
SPI_Senddata(0x00);
//ISD1760配置函数1
voidISD_WR_APC1(uint8apcdatl,uint8apcdath)
SPI_Senddata(0x45);
SPI_Senddata(apcdatl);
SPI_Senddata(apcdath);
//ISD1760配置函数2
voidISD_WR_APC2(uint8apcdatl,uint8apcdath)
SPI_Senddata(0x65);
/*****************************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ISD1760 学习 笔记 全套 程序