ISD17240

ISD17240晶片是Winbond推出的單片優質語音錄放電路晶片。

基本介紹

  • 中文名:ISD17240
  • 工作電壓:DC2.4V~5.5V,最高不能超過6V
  • 靜態電流:0.5 ~1 μA
  • 工作電流:20mA
語音晶片,型號參數列表及管腳定義列表,ISD17240工作電路,獨立按鍵電路,SPI協定工作電路,ISD17240SPI操作例程,

語音晶片

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的獨立按鍵工作模式錄放電路非常簡單(後附圖),而且功能強大。不僅有錄、放功能,還有快進、擦除、音量控制、直通放音和復位等功能。這些功能僅僅通過按鍵就可完成。
ISD17240

SPI協定工作電路

ISD17240

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 ();
}
}
}
}

相關詞條

熱門詞條

聯絡我們