请输入您要查询的百科知识:

 

词条 ISD17240
释义

语音芯片

ISD1700系列芯片是Winbond推出的单片优质语音录放电路,该芯片提供多项新功能,包括内置专利的多信息管理系统,新信息提示(vAlert),双运作模式(独立&嵌入式),以及可定制的信息操作指示音效。芯片内部包含有自动增益控制、麦克风前置扩大器、扬声器驱动线路、振荡器与内存等的全方位整合系统功能。

功能特点

· 可录、放音十万次,存储内容可以断电保留一百年

· 按键模式和MCU串行控制模式(SPI协议)

· MIC和ANAin两种录音模式

· PWM和AUD/AUX三种放音输出方式

· 可处理多达255段以上信息

· 有丰富多样的工作状态提示

· 多种采样频率对应多种录放时间

· 音质好,电压范围宽,应用灵活

电特性

· 工作电压:DC2.4V~5.5V,,最高不能超过6V

· 静态电流:0.5 ~1 μA

· 工作电流:20mA

型号参数列表及管脚定义列表

 ISD1730 ISD1740 ISD1750 ISD1760 ISD1790 振荡电阻

12kHz 20秒 26秒 33秒 40秒 60秒 60kΩ

8kHz 30秒 40秒 50秒 60秒 90秒 80kΩ

6.4kHz 37秒 50秒 62秒 75秒 112秒 100kΩ

5.3kHz 45秒 60秒 75秒 90秒 135秒 120kΩ

4kHz 60秒 80秒 100秒 120秒 180秒 160kΩ

 ISD17120 ISD17150 ISD17180 ISD17210 ISD17240 振荡电阻

12kHz 80秒 100秒 120秒 140秒 160秒 60kΩ

8kHz 120秒 150秒 180秒 210秒 240秒 80kΩ

6.4kHz 150秒 187秒 225秒 262秒 300秒 100kΩ

5.3kHz 181秒 226秒 271秒 317秒 362秒 120kΩ

4kHz 240秒 300秒 360秒 420秒 480秒 160kΩ

引脚名称 PDIP/SOIC封装 TSOP封装 引脚说明

VCCD 1 22 数字电路电源

/LED 2 23 LED指示信号输出

/RESET 3 24 芯片复位

MISO 4 25 SPI接口的串行输出。ISD1700在 SCLK下降沿之前的半个周期将数据放置在MISO端。数据在SCLK的下降沿时移出

MOSI 5 26 SPI接口的数据输入端口。主控制芯片在SCLK上升沿之前的半个周期将数据放置在MOSI端。数据在SCLK上升沿被锁存在芯片内。此管脚在空闲时,应该被拉高

SCLK 6 27 SPI接口的时钟。由主控制芯片产生,并且被用来同步芯片MOSI和MISO端各自的数据输入和输出。此管脚空闲时,必须拉高。

/SS 7 28 为低时,选择该芯片成为当前被控制设备并且开启SPI接口。空闲时,需要拉高

VSSA 8 1 模拟地

Anain 9 2 芯片录音或直通时,辅助的模拟输入。需要一个交流耦合电容(典型值为0.1uF),并且输入信号的幅值不能超出1.0Vpp。APC寄存器的D3可以决定Anain信号被立刻录制到存储器中,与Mic信号混合被录制到存储器中,或者被缓存到喇叭端并经由直通线路从AUD/AUX输出。

MIC+ 10 3 麦克风输入+

MIC- 11 4 麦克风输入-

VSSP2 12 5 负极PWM喇叭驱动器地

SP- 13 6 喇叭输出-

VCCP 14 7 PWM喇叭驱动器电源

SP+ 15 8 喇叭输出+

VSSP1 16 9 正极PWM喇叭驱动器地

AUD/
AUX 17 10 辅助输出,决定于APC寄存器的D7,用来输出一个AUD或AUX输出。AUD是一个单端电流输出,而AuxOut是一个单端电压输出。他们能够被用来驱动一个外部扬声器。出厂默认设置为AUD。APC寄存器的D9可以使其掉电

AGC 18 11 自动增益控制

/VOL 19 12 音量控制

ROSC 20 13 振荡电阻ROSC用一个电阻连接到地,决定芯片的采样频率

VCCA 21 14 模拟电路电源

/FT 22 15 在独立按键模式下,当FT一直为低,Anain直通线路被激活。Anain信号被立刻从Anain经由音量控制线路发射到喇叭以及AUD/AUX输出。不过,当在SPI模式下,SPI无视这个输入,而且直通线路被APC寄存器的D0所控制。该管脚有一个内部上拉和防抖动设计,允许使用按键开关来控制开始和结束。

/PLAY 23 16 播放控制端,有电平触发和脉冲触发两种模式

/REC 24 17 录音控制端,低电平有效

/ERASE 25 18 擦除控制端,低电平有效

/FWD 26 19 快进控制端,低电平有效

RDY
/INT 27 20 一个开路输出。
Ready(独立模式)
该管脚在录音,放音,擦除和指向操作时保持为低,保持为高时进入掉电状态
Interrupt(SPI 模式)
在完成SPI命令后,会产生一个低信号的中断。一旦中断消除,该脚变回为高。

VSSD 28 21 数字地

ISD17240工作电路

独立按键电路

ISD1700的独立按键工作模式录放电路非常简单(后附图),而且功能强大。不仅有录、放功能,还有快进、擦除、音量控制、直通放音和复位等功能。这些功能仅仅通过按键就可完成。

SPI协议工作电路

ISD17240SPI操作例程

#include <reg51.h>

#define uchar unsigned char

#define uint unsigned int

//******************定义端口******************//

sbit SS = P1^0;

sbit SCK = P1^1;

sbit MOSI = P1^2;

sbit MISO = P1^3;

sbit PR = P1^4;//PLAY = 0;REC = 1;

sbit STOP = P1^5;

sbit AN = P1^6;

sbit LED = P1^7;

//******************定义ISD1700状态寄存器及各标志位******************//

uchar bdata SR0_L;//SR0寄存器低位、高位

uchar bdata SR0_H;

uchar bdata SR1;//SR1寄存器

uchar APC_L = 0, APC_H = 0;//APC寄存器

uchar PLAYADDL = 0, PLAYADDH = 0;//放音指针低位、高位

uchar RECADDL = 0, RECADDH = 0;//录音指针低位、高位

sbit CMD_ERR = SR0_L^0;//SPI指令无效标志位

sbit FULL = SR0_L^1;//芯片存储空间满标志位

sbit PU = SR0_L^2;//上电标志位

sbit EOM = SR0_L^3;//EOM标志位

sbit INT = SR0_L^4;//操作完成标志位

sbit RDY = SR1^0;//芯片空闲标志位

sbit ERASE = SR1^1;//擦除标志位

sbit PLAY = SR1^2;//放音标志位

sbit REC = SR1^3;//录音标志位

//******************定义标志位******************//

uchar bdata fang;

sbit PR_fang = fang^1;//录音、放音标志位,放音=0,录音=1

sbit Erase_fang = fang^4;//擦出标志位

sbit STOP_fang = fang^7;//停止放音标志位

//******************延时μs******************//

void delay(uint time)//延时n微秒

{

while(time!=0)

{

time--;

}

}

//******************延时ms******************//

void delayms(uint time)//延时n毫秒

{

for(time; time>0; time--)

{

TH0 = 0xfc;

TL0 = 0x18;

TR0 = 1;//计数器0启动

while(TF0!=1);//计数溢出处理

TF0 = 0;

TR0 = 0;

}

}

//******************CPU初始化******************//

void cpu_init (void)

{

P1 = 0xFF;

P2 = 0xFF;

P3 = 0xFF;

TMOD = 0x01;//定时器初始化,工作于方式1

EA = 0;//关中断

fang = 0;//标志位归0

LED = 1;//关指示灯

}

//******************发送、读回数据******************//

uchar isd_senddata (uchar dat)

{

uchar i, BUF_ISD = dat;

SS = 0;

SCK = 1;

delay(4);

for(i=0; i<8; i++)

{

SCK = 0;

if((BUF_ISD&0x01)==1)

{

MOSI = 1;

}

else

{

MOSI = 0;

}

BUF_ISD = BUF_ISD >> 1;

if(MISO)

{

BUF_ISD = BUF_ISD|0x80;

}

SCK = 1;

delay(6);

}

MOSI = 0;

return(BUF_ISD);

}

//******************上电******************//

void isd_pu (void)

{

isd_senddata (0x01);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//******************停止当前操作******************//

void isd_stop (void)

{

isd_senddata (0x02);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//******************复位******************//

void isd_reset (void)

{

isd_senddata (0x03);

isd_senddata (0x00);

SS = 1;

}

//******************清除中断******************//

void isd_clr_int (void)

{

isd_senddata (0x04);

isd_senddata (0x00);

SS = 1;

}

//******************读状态寄存器内容******************//

void isd_rd_status (void)

{

isd_senddata (0x05);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x05);

SR0_H = isd_senddata (0x00);

SR1 = isd_senddata (0x00);

SS = 1;

}

//******************读放音指针******************//

void isd_rd_playptr (void)

{

isd_senddata (0x06);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x06);

SR0_H = isd_senddata (0x00);

PLAYADDL = isd_senddata (0x00);

PLAYADDH = isd_senddata (0x00);

SS = 1;

}

//******************下电******************//

void isd_pd (void)

{

isd_senddata (0x07);

isd_senddata (0x00);

SS = 1;

delayms(50);

}

//******************读录音指针******************//

void isd_rd_recptr (void)

{

isd_senddata (0x08);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x08);

SR0_H = isd_senddata (0x00);

RECADDL = isd_senddata (0x00);

RECADDH = isd_senddata (0x00);

SS = 1;

}

//******************读芯片ID******************//

uchar isd_devid (uchar deviceNO)

{

isd_senddata (0x09);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

isd_senddata (0x09);

isd_senddata (0x00);

deviceNO = isd_senddata (0x00);

SS = 1;

return(deviceNO);

}

//******************放音******************//

void isd_play (void)

{

isd_senddata (0x40);

isd_senddata (0x00);

SS = 1;

}

//******************录音******************//

void isd_rec (void)

{

isd_senddata (0x41);

isd_senddata (0x00);

SS = 1;

}

//******************擦除******************//

void isd_erase (void)

{

isd_senddata (0x42);

isd_senddata (0x00);

SS = 1;

}

//******************全部擦出******************//

void isd_g_erase (void)

{

isd_senddata (0x43);

isd_senddata (0x00);

SS = 1;

}

//******************读APC寄存器内容******************//

void isd_rd_apc (void)

{

isd_senddata (0x44);

isd_senddata (0x00);

isd_senddata (0x00);

isd_senddata (0x00);

SS = 1;

delay(2);

SR0_L = isd_senddata (0x44);

SR0_H = isd_senddata (0x00);

APC_L = isd_senddata (0x00);

APC_H = isd_senddata (0x00);

SS = 1;

}

//******************写APC寄存器******************//

void isd_wr_apc2 (uchar apcdatl,apcdath)

{

isd_senddata (0x65);

isd_senddata (apcdatl);

isd_senddata (apcdath);

SS = 1;

}

//******************将APC寄存器内容写入NVCFG******************//

void isd_wr_nvcfg (uchar apcdatl,apcdath)

{

isd_senddata (0x46);

isd_senddata (apcdatl);

isd_senddata (apcdath);

SS = 1;

}

//******************将NVCFG内容写入APC******************//

void isd_ld_nvcfg (void)

{

isd_senddata (0x47);

isd_senddata (0x00);

SS = 1;

}

//******************快进******************//

void isd_fwd (void)

{

isd_senddata (0x48);

isd_senddata (0x00);

SS = 1;

}

//******************空检查******************//

void isd_chk_mem (void)

{

isd_senddata (0x49);

isd_senddata (0x00);

SS = 1;

}

//******************外部时钟的启用、关闭******************//

void isd_extclk (void)

{

isd_senddata (0x4a);

isd_senddata (0x00);

SS = 1;

}

//******************指定地址放音******************//

void isd_set_play (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x80);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//******************指定地址录音******************//

void isd_set_rec (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x81);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//******************指定地址擦除******************//

void isd_set_erase (uchar saddl,saddh,eaddl,eaddh)

{

isd_senddata (0x82);

isd_senddata (0x00);

isd_senddata (saddl);

isd_senddata (saddh);

isd_senddata (eaddl);

isd_senddata (eaddh);

isd_senddata (0x00);

SS = 1;

}

//******************芯片系统初始化******************//

void isd_init (void)

{

uchar i = 2;

SS = 1;

SCK = 1;

MOSI = 0;

do

{

isd_pu ();

isd_rd_status ();

}while(CMD_ERR||(!PU));

isd_wr_apc2 (0x40,0x04);

do

{

isd_rd_status ();

}while(RDY==0);

do

{

LED = 0;

delayms(300);

LED = 1;

delayms(300);

i--;

}while(i>0);

}

//******************isd1700的相关操作******************//

void isdwork (void)

{

uchar i;

switch (fang)

{

case 0x00:

{

do

{

isd_rd_status ();

}while(RDY==0);

delayms(10);

isd_play ();

delayms(2);

LED = 0;

do

{

isd_rd_status ();

if(STOP==0)

{

delayms (10);

if(STOP==0)

{

LED = 1;

isd_clr_int ();

isd_stop ();

isd_reset ();

isd_pd ();

isd_init ();

return;

}

}

}while(PLAY==1);

LED = 1;

isd_clr_int ();

do

{

isd_rd_status ();

}while(RDY==0);

delayms (10);

isd_fwd ();

do

{

isd_rd_status ();

}while(RDY==0);

}

break;

case 0x02:

{

isd_clr_int ();

do

{

isd_rd_status ();

}while(RDY==0);

delayms(10);

isd_rec ();

delayms(2);

LED = 0;

do

{

isd_rd_status ();

if(FULL==1)

{

for(i=3; i>0; i--)

{

LED = 0;

delayms (300);

LED = 1;

delayms (200);

}

}

}while(AN==0);

isd_clr_int ();

isd_stop ();

LED = 1;

}

break;

case 0x10:

{

do

{

isd_rd_status ();

}while(RDY==0);

delayms (10);

isd_g_erase ();

delayms (2);

do

{

isd_rd_status ();

}while(RDY==0);

for(i=3; i>0; i--)

{

LED = 0;

delayms (300);

LED = 1;

delayms (200);

}

}

break;

case 0x80:

{

isd_clr_int ();

isd_stop ();

isd_reset ();

isd_pd ();

}

break;

}

}

//******************主程序******************//

void main (void)

{

uchar i;

cpu_init ();

delayms (1);

isd_init ();

while(1)

{

if(AN==0)

{

delayms (10);

if(AN==0)

{

if(PR==1)

{

PR_fang = 1;

}

else

{

PR_fang = 0;

}

isdwork ();

}

}

if(STOP==0)

{

delayms (10);

if(STOP==0)

{

for(i=100; i>0; i--)

{

if(STOP==1)

{

STOP_fang = 1;

isdwork ();

isd_init ();

break;

}

delayms(30);

}

if (STOP_fang==1)

{

fang = 0;

continue;

}

Erase_fang = 1;

isdwork ();

}

}

}

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 5:25:48