DSP芯片應(yīng)用-ppt課件_第1頁(yè)
DSP芯片應(yīng)用-ppt課件_第2頁(yè)
DSP芯片應(yīng)用-ppt課件_第3頁(yè)
DSP芯片應(yīng)用-ppt課件_第4頁(yè)
DSP芯片應(yīng)用-ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩176頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 第第8章章 DSP芯片應(yīng)用芯片應(yīng)用 8.1 引言引言 8.2 DSP芯片芯片C語(yǔ)言開(kāi)發(fā)簡(jiǎn)介語(yǔ)言開(kāi)發(fā)簡(jiǎn)介 8.3 模模/數(shù)接口設(shè)計(jì)數(shù)接口設(shè)計(jì) 8.4 存儲(chǔ)器接口設(shè)計(jì)存儲(chǔ)器接口設(shè)計(jì) 8.5 G.726語(yǔ)音編解碼系統(tǒng)語(yǔ)音編解碼系統(tǒng) 8.6 語(yǔ)音實(shí)時(shí)變速系統(tǒng)語(yǔ)音實(shí)時(shí)變速系統(tǒng) 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.1 引引 言言 前面幾章我們介紹了DSP芯片的原理以及CCS開(kāi)發(fā)工具。TMS320C5409是目前性能價(jià)格比較高的一種定點(diǎn)DSP芯片,已經(jīng)在很多領(lǐng)域得到了廣泛的應(yīng)用。本章以TMS320C5409為例,介紹DSP應(yīng)用系統(tǒng)的設(shè)計(jì)、調(diào)試和開(kāi)發(fā)

2、過(guò)程。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.2 DSP芯片芯片C語(yǔ)言開(kāi)發(fā)簡(jiǎn)介語(yǔ)言開(kāi)發(fā)簡(jiǎn)介 8.2.1 TMS320C54x C/C+編譯器支持的數(shù)據(jù)類型 表8-1列出了TMS320C54x C/C+編譯器支持的數(shù)據(jù)類型的大小、表示形式和表示范圍,這些數(shù)據(jù)類型在float.h和limits.h中定義。在C語(yǔ)言開(kāi)發(fā)的過(guò)程中,采用合適的數(shù)據(jù)類型對(duì)于系統(tǒng)的正確運(yùn)行有著極為重要的意義。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 表8-1 TMS320C54x C/C+編譯器支持的數(shù)據(jù)類型 類 型大小/bit表示形式最小值最大值signed char16ASCII32 76832 767ch

3、ar, unsigned char16ASCII065 535short, signed short162s Complement32 76832 767unsigned short16Binary065 535int, signed int162s Complement32 76832 767第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 類 型大小/bit表示形式最小值最大值unsigned int16Binary065 535long, signed long322s Complement2 147 483 6482 147 483 647unsigned long32Binary04 2

4、94 967 295enum162s Complement32 76832 767float32IEEE 32-bit1.175 494e383.402 823 46e+38double32IEEE 32-bit1.175 494e383.402 823 46e+38long double32IEEE 32-bit1.175 494e383.402 823 46e+38pointers16Binary00 xFFFF第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.2.2 C語(yǔ)言的數(shù)據(jù)訪問(wèn)方法 1DSP片內(nèi)寄存器的訪問(wèn) DSP片內(nèi)寄存器在C語(yǔ)言中一般采用指針?lè)绞絹?lái)訪問(wèn),常常采用的方法是將DSP

5、寄存器地址的列表定義在頭文件中(如reg.h)。DSP寄存器地址定義的形式為宏,如下所示:第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 #define IMR (volatile unsigned int *)0 x0000#define IFR (volatile unsigned int *)0 x0001#define ST0 (volatile unsigned int *)0 x0006#define ST1 (volatile unsigned int *)0 x0007#define AL (volatile unsigned int *)0 x0008#define AH (v

6、olatile unsigned int *)0 x0009#define AG (volatile unsigned int *)0 x000A#define BL (volatile unsigned int *)0 x000B#define BH (volatile unsigned int *)0 x000C#define BG (volatile unsigned int *)0 x000D第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 #define T (volatile unsigned int *)0 x000E#define TRN (volatile unsigned in

7、t *)0 x000F#define AR0 (volatile unsigned int *)0 x0010#define AR1 (volatile unsigned int *)0 x0011#define AR2 (volatile unsigned int *)0 x0012#define SP (volatile unsigned int *)0 x0018#define BK (volatile unsigned int *)0 x0019第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 #define BRC (volatile unsigned int *)0 x001A#def

8、ine RSA (volatile unsigned int *)0 x001B#define REA (volatile unsigned int *)0 x001C#define PMST (volatile unsigned int *)0 x001D#define XPC (volatile unsigned int *)0 x001E第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 在主程序中,若要讀出或者寫(xiě)入一個(gè)特定的寄存器,就要對(duì)相應(yīng)的指針進(jìn)行操作。下例通過(guò)指針操作對(duì)SWWSR和BSCR進(jìn)行初始化。 #define SWWSR (volatile unsigned int *)0 x

9、0028 #define BSCR (volatile unsigned int *)0 x0029 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 int func ( ). *SWWSR = 0 x2000;*BSCR = 0 x0000;.第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2DSP內(nèi)部和外部存儲(chǔ)器的訪問(wèn) 同DSP片內(nèi)寄存器的訪問(wèn)相類似,對(duì)存儲(chǔ)器的訪問(wèn)也采用指針?lè)绞絹?lái)進(jìn)行。下例通過(guò)指針操作對(duì)內(nèi)部存儲(chǔ)器單元0 x3000和外部存儲(chǔ)器單元0 x8FFF進(jìn)行操作。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 int *data1 = 0 x3000; /*內(nèi)部存儲(chǔ)器單元*/int *d

10、ata2= 0 x8FFF; /*外部存儲(chǔ)器單元*/int func ( ). * data1 = 2000;* data2 = 0;.第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 3DSP I/O端口的訪問(wèn) DSP I/O端口的訪問(wèn)通過(guò)ioport關(guān)鍵字實(shí)現(xiàn)。定義的形式為 ioport type port hex_num 其中:ioport是關(guān)鍵字,表明變量是io變量;type 必須是char、short、int和unsigned;port表示io地址,hex_num是十六進(jìn)制地址。 下例聲明了一個(gè)io變量,地址為10H,并對(duì)I/O端口做讀/寫(xiě)操作。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)

11、用 ioport unsigned port10; /* 定義地址為10H的I/O端口變量*/int func ( ).port10 = 20; /* write a to port 10H */.b = port10; /* read port 10H into b */.第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.2.3 C語(yǔ)言和匯編語(yǔ)言的混合編程方法 用C語(yǔ)言和匯編語(yǔ)言混合編程的方法主要有以下三種: (1) 獨(dú)立編寫(xiě)C程序和匯編程序,分開(kāi)編譯或匯編以形成各自的目標(biāo)代碼模塊,然后用鏈接器將C模塊和匯編模塊鏈接起來(lái)。例如,主程序用C語(yǔ)言編寫(xiě),中斷向量文件(vector.asm)用匯編語(yǔ)

12、言編寫(xiě)。若要從C程序中訪問(wèn)匯編程序的變量,將匯編語(yǔ)言程序在.bss塊中定義的變量或函數(shù)名前面加一下劃線_,將變量說(shuō)明為外部變量,同時(shí)在C程序中也將變量說(shuō)明為外部變量,如下例所示:第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 匯編程序: .bss _var, 1 ;定義變量 .global _var ;說(shuō)明為外部變量 C程序: extern int var; /*外部變量*/ var1; /*訪問(wèn)變量*/ 若要在匯編程序中訪問(wèn)C程序變量或函數(shù),也可以采用同樣的方法。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 C程序:global int i; /* 定義i為全局變量*/global float

13、 x; /* 定義x為全局變量*/main( ) 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 匯編程序:.ref _i; ; 說(shuō)明_i為外部變量.ref _x; ; 說(shuō)明_x為外部變量LD _i, DP STL _x, A第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (2) 在C語(yǔ)言程序的相應(yīng)位置直接嵌入?yún)R編語(yǔ)句,這是一種C和匯編之間比較直接的接口方法。 嵌入?yún)R編語(yǔ)句的方法比較簡(jiǎn)單,只需在匯編語(yǔ)句的左、右加上一個(gè)雙引號(hào),用小括弧將匯編語(yǔ)句括住,在括弧前加上asm標(biāo)識(shí)符即可,如下所示: asm( 匯編語(yǔ)句 ); 如上所述,在C程序中直接嵌入?yún)R編語(yǔ)句的一個(gè)典型應(yīng)用是控制DSP芯片的一些硬件資源。

14、 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 對(duì)于TMS320C5409,在C程序中一般采用下列匯編語(yǔ)句實(shí)現(xiàn)一些硬件控制: asm( NOP ); /*插入等待周期*/ asm( ssbx INTM); /* 關(guān)中斷*/ asm( rsbx INTM); /* 開(kāi)中斷*/ (3) 對(duì)C程序進(jìn)行編譯生成相應(yīng)的匯編程序,然后對(duì)匯編程序進(jìn)行手工優(yōu)化和修改。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.2.4 中斷函數(shù) TMS320C54x C/C+中可以通過(guò)兩種方式定義中斷函數(shù)。 (1) 通過(guò)給每個(gè)中斷函數(shù)前面加關(guān)鍵字interrupt來(lái)聲明一個(gè)函數(shù)為中斷處理函數(shù)。中斷函數(shù)的返回值是void

15、的,函數(shù)沒(méi)有任何的形參。中斷函數(shù)可以任意使用局部變量和堆棧。例如:第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 interrupt void int_handler ( )unsigned int flags;.第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 為了能夠讓相應(yīng)的中斷信號(hào)調(diào)用不同的中斷函數(shù),還需要在中斷向量文件(vector.asm)中定義中斷向量表。如下例所示: .ref _c_int00 .ref _ int_handler.sect vectors RS: BD _c_int00 NOPNOP第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 .BRINT1: BD _ int_ha

16、ndler ; McBSP1接收中斷 NOP NOP .end第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (2) C中斷程序采用特殊的函數(shù)名,其格式為c_intnn。其中,nn代表0099之間的兩位數(shù),如c_int01就是一個(gè)有效的中斷函數(shù)名。下面是一個(gè)中斷函數(shù)的例子: int datain, dateout; void c_int05( ) datain=sample(dataout); 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.2.5 存儲(chǔ)器模式 TMS320C54x將存儲(chǔ)器分為程序空間和數(shù)據(jù)空間。程序空間存放的是可執(zhí)行的代碼,數(shù)據(jù)空間存放的是外部變量、靜態(tài)變量和系統(tǒng)的堆棧。由C

17、程序產(chǎn)生的代碼和數(shù)據(jù)就被放置在存儲(chǔ)空間的各個(gè)段中。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 1C編譯器生成的段 C編譯器對(duì)C語(yǔ)言程序編譯后生成6個(gè)可以進(jìn)行重定位的代碼和數(shù)據(jù)段,這些段可以用不同的方式分配至存儲(chǔ)器以符合不同系統(tǒng)配置的需要。這6個(gè)段可以分為兩種類型,一是已初始化段,二是未初始化段。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 已初始化段主要包括數(shù)據(jù)表和可執(zhí)行代碼。C編譯器共創(chuàng)建3個(gè)已初始化段:.text、 .cinit、.const。 .text段:包含可執(zhí)行代碼和字符串。 .cinit段:包含初始化變量和常數(shù)表。 .const段:字符串和switch表。 .bs段:保留全局和

18、靜態(tài)變量空間。 .stack段:為系統(tǒng)堆棧分配存儲(chǔ)器。 .sysmem段:為動(dòng)態(tài)存儲(chǔ)器函數(shù)malloc、calloc和realloc分配存儲(chǔ)器空間。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 一般地,.text、.cinit和.const連同匯編語(yǔ)言中的.data段可鏈入到系統(tǒng)的ROM或RAM中,而.bss、.stack和.sysmem段則應(yīng)鏈入到RAM中。需要注意的是,如果系統(tǒng)不支持將.data塊鏈入到數(shù)據(jù)空間,則必須將.data段鏈入到程序空間,運(yùn)行的時(shí)候再調(diào)入數(shù)據(jù)空間,它的cmd文件如下所示: 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 MEMORYPAGE 0 : PROG :

19、.PAGE 1 : DATA : .SECTIONS.const : load = PROG PAGE 1, run = DATA PAGE 1第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /* GET RUN ADDRESS */_const_run = .;/* MARK LOAD ADDRESS */*(.c_mark)/* ALLOCATE .const */*(.const)/* COMPUTE LENGTH */_const_length = .-_ const_run;.第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2C系統(tǒng)的堆棧 C編譯器利用TMS320C54x內(nèi)置的堆棧機(jī)制來(lái)

20、實(shí)現(xiàn)如下功能: (1) 保護(hù)函數(shù)的返回地址; (2) 分配局部變量; (3) 傳遞函數(shù)變量; (4) 保護(hù)臨時(shí)結(jié)果。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 3動(dòng)態(tài)存儲(chǔ)器分配 編譯器提供的運(yùn)行支持函數(shù)中包含幾個(gè)允許在運(yùn)行時(shí)為變量動(dòng)態(tài)分配存儲(chǔ)器的函數(shù),如malloc、calloc和recalloc。動(dòng)態(tài)分配并不是C語(yǔ)言本身的標(biāo)準(zhǔn),而是由標(biāo)準(zhǔn)運(yùn)行支持函數(shù)所提供的。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 4存儲(chǔ)器大小模式 編譯器支持兩種存儲(chǔ)器模式:小存儲(chǔ)器模式和大存儲(chǔ)器模式。 (l) 小存儲(chǔ)器模式。小存儲(chǔ)器模式是編譯器的缺省存儲(chǔ)器模式。 (2) 大存儲(chǔ)器模式。大存儲(chǔ)器模式與小存儲(chǔ)器模式的區(qū)

21、別在于它不限制.bss段的大小,因此對(duì)全局變量和靜態(tài)變量來(lái)說(shuō),具有無(wú)限的空間。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.2.6 其他注意事項(xiàng) 下面介紹C語(yǔ)言編程的一些其他注意事項(xiàng)。 (1) c_int00函數(shù)包含在運(yùn)行支持庫(kù)中,必須與其他的C目標(biāo)模塊相鏈接。 (2) 采用C優(yōu)化編譯時(shí),為了保證程序的正確性,要特別注意,如果使用asm行匯編語(yǔ)句,則必須對(duì)編譯后得到的匯編語(yǔ)言進(jìn)行仔細(xì)的檢查,以確保asm語(yǔ)句在程序中的正確性。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (3) 可以使用volatile關(guān)鍵字避免優(yōu)化。對(duì)于下例這樣的語(yǔ)句: unsigned int *data; whil

22、e(*data!=4); 由于*data是一個(gè)循環(huán)不變的表達(dá)式,因此這個(gè)循環(huán)將被優(yōu)化為一個(gè)存儲(chǔ)器讀指令。為了避免這樣的優(yōu)化,需要將data定義為volatile,例如: volatile unsigned int *data;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 做了這樣的定義后,優(yōu)化器就不再對(duì)上述語(yǔ)句進(jìn)行優(yōu)化了。一般在reg.h中定義的寄存器地址都定義為volatile,例如: #define IMR (volatile unsigned int *)0 x0000 #define IFR (volatile unsigned int *)0 x0001 第第8 8章章 DSPDSP

23、芯片應(yīng)用芯片應(yīng)用 (4) C54x C/C+ 編譯器支持標(biāo)準(zhǔn)C的關(guān)鍵字const,這個(gè)關(guān)鍵字用來(lái)定義那些值不變的變量,但是,在定義時(shí)const的位置是十分重要的。例如,下面這個(gè)例子中,第一句定義了一個(gè)常量指針p,指向一個(gè)int變量,第二句定義了一個(gè)指針q,指向一個(gè)常量int變量,所以要注意const的位置。 int * const p = &x; const int * q = &x;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (5) 由于在C語(yǔ)言的環(huán)境下,局部變量的尋址必須通過(guò)SP寄存器實(shí)現(xiàn),在混合編程的時(shí)候,為了使匯編語(yǔ)言不影響堆棧寄存器SP,常用的方式是在匯編環(huán)境中使用

24、DP方式尋址,這樣可以使二者互不干擾,編程時(shí)只要注意對(duì)CPL位正確設(shè)置即可。CPL位是編譯模式控制位,它表示在相對(duì)直接尋址時(shí)采用哪種指針。當(dāng)CPL=0時(shí),使用頁(yè)指針DP;當(dāng)CPL=1時(shí),使用堆棧指針SP。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (6) 編譯后的C程序“跑飛一般是對(duì)不存在的存儲(chǔ)區(qū)訪問(wèn)造成的。首先,要查.map文件與memory map圖對(duì)比,看是否超出范圍。如果在有中斷的程序中“跑飛”,則應(yīng)重點(diǎn)檢查在中斷程序中是否對(duì)所用到的寄存器進(jìn)行了壓棧保護(hù);如果在中斷程序中調(diào)用了C程序,則要查匯編后的C程序中是否用到了沒(méi)有被保護(hù)的寄存器并提供保護(hù)(在C程序的編譯中是不對(duì)A、B等寄存器進(jìn)

25、行保護(hù)的)。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.3 模模/數(shù)接口設(shè)計(jì)數(shù)接口設(shè)計(jì) 模/數(shù)接口設(shè)計(jì)是DSP系統(tǒng)設(shè)計(jì)中一個(gè)重要的組成部分。A/D或D/A芯片一般均采用并行數(shù)字接口。這些芯片與TMS320C5409接口時(shí)需要設(shè)計(jì)相應(yīng)的譯碼電路,將A/D或D/A芯片的數(shù)據(jù)線映射到DSP芯片的I/O地址,可以通過(guò)指令I(lǐng)N和OUT(匯編語(yǔ)言)或者在程序中設(shè)定unsigned int ioport 變量(C語(yǔ)言)與模/數(shù)接口芯片交換數(shù)據(jù)。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 TMS320C5409提供了可與串行通信器件接口的3個(gè)多通道緩沖串行口(McBSP,TMS320C542串行口的加

26、強(qiáng)形式),為模數(shù)接口的設(shè)計(jì)提供了極大的便利。本節(jié)將介紹TI公司的常用語(yǔ)音編解碼器TLC320AD50與TMS320C5409的McBSP的接口方法。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.3.1 TLC320AD50及其接口 1TLC320AD50控制寄存器功能簡(jiǎn)介 TLC320AD50具有7個(gè)可編程的內(nèi)部寄存器,通過(guò)軟件編程能隨時(shí)控制TLC320AD50的采樣頻率,模擬輸入及輸出的增益等。 控制寄存器0(CR0):不執(zhí)行任何操作,但是CR0能夠響應(yīng)握手通信請(qǐng)求而不改變其他控制寄存器的值。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-1 TLC320AD50的引腳圖 1REFP

27、2REFM3AUXP4AUXM5INP6INM7AVDD(PLL)8AVSS(PLL)9DVDD10DVSS11DOUT12DIN13FLAG14ALTDATAFILT28MONOUT27AVSS26AVDD25OUTM24OUTP23M/S22FSD21FS20SCLK19MCLK18FC17PWRDWN16RESET15DW Package(Top View)第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 控制寄存器1(CR1):控制AD50的軟件重啟,選擇數(shù)字反饋以及數(shù)/模轉(zhuǎn)換器的模式。 控制寄存器2(CR2):選擇模擬反饋以及模/數(shù)轉(zhuǎn)換器的模式,并且包括TLC320AD50內(nèi)部FIR濾波

28、器的溢出標(biāo)志。 控制寄存器3(CR3):包含主設(shè)備連接從器件個(gè)數(shù)的信息。(當(dāng)某個(gè)器件向其他器件發(fā)送信息時(shí),稱為主器件,而某器件從其他器件接收信息時(shí),稱為從器件。) 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 控制寄存器4(CR4):選擇輸入和輸出放大器的增益,確定TLC320AD50的采樣頻率,選擇PLL模式。 控制寄存器5(CR5):工業(yè)測(cè)試使用。 控制寄存器6(CR6):工業(yè)測(cè)試使用。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2TLC320AD50器件功能簡(jiǎn)介 1) 采樣頻率和濾波器控制 TLC320AD50的采樣頻率由控制寄存器4設(shè)定。當(dāng)選擇PLL模式時(shí)(D7=0),TLC320A

29、D50的采樣率為N128MCLKfs (8-1) 當(dāng)不選擇PLL模式時(shí)(D7=1),TLC320AD50的采樣率為 N256MCLKfs (8-2) 其中,N為18的整數(shù)。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 輸出的串口時(shí)鐘(SCLK)由采樣頻率決定而不是由主時(shí)鐘決定,串口時(shí)鐘與采樣頻率之間的關(guān)系為 SCLK=256fs TLC320AD50內(nèi)部濾波器的截止頻率是不能通過(guò)軟件編程改變的。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2) 模/數(shù)轉(zhuǎn)化模塊 輸入的模擬信號(hào)經(jīng)過(guò)前端的放大器放大后,送入到A/D轉(zhuǎn)換器的輸入端。A/D轉(zhuǎn)換器將輸入的模擬信號(hào)轉(zhuǎn)化為以二進(jìn)制補(bǔ)碼表示的數(shù)字信號(hào)。 第

30、第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 3) 數(shù)/模轉(zhuǎn)化模塊 DIN管腳從外部設(shè)備讀入16 bit的二進(jìn)制數(shù)據(jù),以補(bǔ)碼形式表示。在串口時(shí)鐘(SCLK)的下降沿,TLC320AD50讀入這些二進(jìn)制數(shù)據(jù),每一個(gè)串口時(shí)鐘周期輸入1 bit。這些二進(jìn)制數(shù)據(jù)通過(guò)由數(shù)字插值濾波器和數(shù)字調(diào)制器組成的- D/A轉(zhuǎn)換器后轉(zhuǎn)換為脈沖串。這些脈沖串再被送入到TLC320AD50內(nèi)部的低通濾波器恢復(fù)出模擬信號(hào)。模擬信號(hào)通過(guò)可編程放大器后在OUTP和OUTM輸出。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 4) 數(shù)字串行接口 數(shù)字串行接口由串行時(shí)鐘(SCLK)、幀同步信號(hào)(FS)、A/D轉(zhuǎn)換器輸出DOUT和D/A

31、轉(zhuǎn)換器輸入(DIN)組成。在每一個(gè)串行時(shí)鐘周期(SCLK)中,A/D轉(zhuǎn)換器從DOUT輸出轉(zhuǎn)化好的二進(jìn)制數(shù)據(jù),D/A轉(zhuǎn)換器從DIN輸入需要轉(zhuǎn)化的二進(jìn)制數(shù)據(jù)。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.3.2 模/數(shù)接口的硬件電路設(shè)計(jì) 圖8-2是TLC320AD50與TMS320C5409的McBSP之間的接口連線圖。 從圖8-2可以看出,TLC320AD50與TMS320C5409的McBSP之間的接口連接十分簡(jiǎn)單,兩者之間的接口不需要其他的硬件支持。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-2 TLC320AD50與TMS320C5409的McBSP之間的接口 XFCLOCK

32、OUTBDXBDRFCMCLKDINDOUTFSSCLKM/SBFSXBFSRBCLKXBCLKRTLS320AD50第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-3中的兩個(gè)電容和相應(yīng)的磁珠用來(lái)去耦,濾除電源輸出的噪聲。此外,TLC320AD50的許多管腳在與相應(yīng)的電源或地相連時(shí),需要連接相應(yīng)的去耦電容。這些管腳的詳細(xì)說(shuō)明與連線如圖8-4所示。其中,REFP和REFM之間的電容是帶隙基準(zhǔn)電壓的去耦電容;連接到FILT的電容是帶隙基準(zhǔn)的濾波電容。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-3 數(shù)字和模擬電源的設(shè)計(jì) 100 MHz時(shí)為90 DVDD0.1 FDVSSAVSS0.1

33、FAVDD第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-4 TLC320AD50的去耦電路 REFPFILTREFMAVSS(PLL)INPINMOUTPOUTM0.1 FAVDD(PLL)0.1 F5 VAVDDAVSS0.1 F22 FDVDDDVSS0.1 F22 FDGND5 VAGND3.3V or 5 V第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.3.3 模/數(shù)接口的軟件設(shè)計(jì) 1TMS320C5409內(nèi)部寄存器的初始化 (1) 初始化TMS320C5409的SWWSR、BSCR、ST0、ST1、PMST等寄存器,設(shè)置中斷屏蔽寄存器IMR,屏蔽所有的中斷,并置IFR =

34、0 xFFFF; (2) 設(shè)置定時(shí)器寄存器TIM、PRD和TCR的值,使得CLOCKOUT的輸出滿足TLC320AD50的要求。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2TMS320C5409緩沖串口的初始化 TMS320C5409的McBSP由SPCR、RCR、XCR、SRGR、MCR、PCR等寄存器控制。 (1) 復(fù)位McBSP并設(shè)置控制寄存器(SPCR)幀同步信號(hào)和串口時(shí)鐘信號(hào)均為External;設(shè)置接受中斷信號(hào)由幀同步信號(hào)產(chǎn)生,用中斷方式來(lái)向McBSP發(fā)送數(shù)據(jù)(也可以采用DSP輪詢或DMA的方式,ABU模式),使能串行口中斷。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (2)

35、 設(shè)置McBSP的發(fā)送(XCR)和接受(RCR)控制寄存器,使接收到的每一幀包含一個(gè)字,每個(gè)字為16 bit。 (3) 設(shè)置McBSP的引腳控制寄存器(PCR),使串行口的所有引腳工作在串行口方式,而不是通用I/O方式。 (4) 使能全局中斷,并使緩沖串行口脫離復(fù)位狀態(tài), 和 置1。 RRSTXRST第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 3TLC320AD50的初始化 在對(duì)上述TMS320C5409的初始化工作之前,首先置TLC320AD50的 =0,用于復(fù)位TLC320AD50,使得TLC320AD50設(shè)置為缺省配置狀態(tài),并暫停TLC320AD50的工作。在TMS320C5409的內(nèi)

36、部寄存器和McBSP初始化完成后,將 置高,使TLC320AD50脫離復(fù)位狀態(tài),并且開(kāi)始以缺省配置方式工作。 RESETRESET第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 TLC320AD50的初始化參數(shù)可以根據(jù)實(shí)際需要,利用式(8-1)和式(8-2)計(jì)算。 TLC320AD50和McBSP之間同步串行通信的時(shí)序如圖8-5所示。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-5 TLC320AD50與McBSP的串行通信時(shí)序 D15D15SCLKBFSXBDXBDRD14D14D13D13D2D2D1D1D0D0第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-6 C程序的流程圖

37、TMS320C5409 內(nèi)部寄存器的初始化 FS低?開(kāi)始McBSP的初始化否建立握手通信(D01) FS低?否傳送CR1是 FS低?否從TLC320AD50傳送和接收數(shù)據(jù)是結(jié)束是第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 【例1】 TLC320AD50應(yīng)用程序。程序的流程圖如圖8-6所示。C程序代碼如下所示:reg.h#define SPSA1 (volatile unsigned int *)0 x0048 /McBSP1 sub_address register#define SPSD1 (volatile unsigned int *)0 x0049#define SPCR11 0 x

38、0000#define SPCR21 0 x0001第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 #define RCR11 0 x0002#define RCR21 0 x0003#define XCR11 0 x0004#define XCR21 0 x0005#define PCR1 0 x000E main.c/* 本程序是TLC320AD50與TMS320C5409通過(guò)緩沖串行口 */第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /* 通信的實(shí)例 */#include #include reg.h /* 聲明所有用到的函數(shù)原型*/void inline disable(void);v

39、oid inline enable(void);void interrupt essp_rx(void);void init_core(void);void init_bsp(void);void init_codec(void);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /* 主程序 */main( ) init_core( );init_codec( ); /* 使能中斷屏蔽 */enable( );/* 等待直到下一個(gè)中斷到來(lái)*/while(1);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /* 初始化DSP內(nèi)部寄存器 */void init_core( ) /* 設(shè)置外部存儲(chǔ)器的

40、等待周期為0,I/O等待周期為2 */ *SWWSR = 0 x2000; *BSCR = 0 x0000;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *ST0 = 0 x1800; *ST1 = 0 x2900; /* 設(shè)置中斷向量表的首地址為0 x0080 */ *PMST = 0 x00A0; *IMR = 0 x0000; *IFR = 0 xFFFF; /* 清除所有的中斷標(biāo)志*/ 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 void init_bsp( ) /*McBSP0 接收字符為右對(duì)齊,接收中斷由幀同步信號(hào)產(chǎn)生*/ *SPSA1 = SPCR11; *SPSD1 = 0

41、x0020; 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /*發(fā)送中斷由幀同步信號(hào)產(chǎn)生,McBSP0 Tx = FREE(軟件中斷后時(shí)鐘停止運(yùn)行)*/ *SPSA1 = SPCR21; *SPSD1 = 0 x0201; /*接收幀長(zhǎng)1個(gè)字,數(shù)據(jù)長(zhǎng)度為16 bit*/ *SPSA1 = RCR11; *SPSD1 = 0 x0040;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /*設(shè)置奇數(shù)幀和偶數(shù)幀相同,數(shù)據(jù)長(zhǎng)度為16 bit*/ *SPSA1 = RCR21; *SPSD1 = 0 x0000; /*與接收寄存器的設(shè)置相同*/ *SPSA1 = XCR11; *SPSD1 = 0 x00

42、40; /*與接收寄存器的設(shè)置相同*/ *SPSA1 = XCR21; *SPSD1 = 0 x0000;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *SPSA1 = PCR1; *SPSD1 = 0 x000C; asm( NOP ); asm( NOP ); /* 初始化TLC320AD50 */void init_codec( ) 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 disable( ); /* 關(guān)閉所有中斷*/ /* 初始化McBSP0*/ init_bsp( ); /*設(shè)置中斷為串口發(fā)出而不是DMA*/ *DMPREC = *DMPREC & 0 xff3f; *

43、DXR11 = 0 x0; /*使能 McBSP0 接收數(shù)據(jù)*/ *SPSA1 = SPCR11; *SPSD1 |= 0 x0001;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /*使能 McBSP0 發(fā)送數(shù)據(jù)*/ *SPSA1 = SPCR21; *SPSD1 |= 0 x0001; /* 用軟件方式配置AD50寄存器*/*DXR11 = 0 x0003; *SPSA1 = SPCR21; while(!(*SPSD1 & 0 x0002); /* 循環(huán)直到字傳送完畢*/第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *DXR11 = 0 x 0181; /* 向控制寄存器CR1寫(xiě)

44、入0 x 0181(D71),復(fù)位TLC320AD50 */ while(!(*SPSD1 & 0 x0002); for(i=0;i4000;i+); /*等待AD50 reset */ *DXR11 = 0 x0003; while(!(*SPSD1 & 0 x0002);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *DXR11 = 0 x0101; /* 向控制寄存器CR1寫(xiě)入0 x 0101(D70),啟動(dòng)TLC320AD50 */ while(!(*SPSD1 & 0 x0002); *DXR11 = 0 x0003; while(!(*SPSD1 &

45、; 0 x0002); *DXR11 = 0 x0210; /* 向控制寄存器CR2寫(xiě)入0 x0210,設(shè)置為16 bit ADC模式*/ while(!(*SPSD1 & 0 x0002);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *DXR11 = 0 x0003; while(!(*SPSD1 & 0 x0002); *DXR11 = 0 x0300; /* 向控制寄存器CR3寫(xiě)入0 x0300,TLC320AD50沒(méi)有從屬系統(tǒng)*/ while(!(*SPSD1 & 0 x0002); *DXR11 = 0 x0003; while(!(*SPSD1 &

46、 0 x0002);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *DXR11 = 0 x04D0; /* 向控制寄存器CR4寫(xiě)入0 x04D0,設(shè)置增益為0 dB,PLL模式*/ while(!(*SPSD1 & 0 x0002); asm( NOP ); asm( NOP ); *IMR = 0 x0400; /* 使能McBSP1的接收中斷*/ *IFR = 0 x0400; /* 清除相應(yīng)的中斷標(biāo)志位*/第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 enable( ); /*使能所有中斷 */ /* Send a dummy value to start things off

47、*/ *DXR11 = *DRR11; /* 關(guān)閉所有中斷*/void inline disable( ) asm( ssbx INTM);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 /* 使能所有中斷*/void inline enable( ) asm( rsbx INTM); /* 接收中斷處理函數(shù)*/void interrupt essp_rx( ) int sample_in;/* 讀入采樣數(shù)據(jù)*/sample_in = *DRR11;/* 傳送回TLC320AD50 */*DXR11 = sample_in;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 vector.asm.re

48、f _c_int00.ref _essp_rx.sect vectorsRS: BD _c_int00 NOPNOP第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 .space 4*16*25; 將接下來(lái)的25個(gè)中斷向量位置0BRINT1: BD _essp_rx; McBSP的接收中斷 NOPNOP .end第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.4 存儲(chǔ)器接口設(shè)計(jì)存儲(chǔ)器接口設(shè)計(jì) 8.4.1 TMS320C5409的存儲(chǔ)器接口 1TMS320C5409與外部SRAM的接口 除了內(nèi)部32K字RAM和16K字ROM之外,TMS320C5409還可以擴(kuò)展外部存儲(chǔ)器。其中,數(shù)據(jù)空間總共為64

49、K字(0000HFFFFH),I/O空間為64K字(0000HFFFFH),程序空間為8M。8 M程序空間的尋址是通過(guò)額外的7根地址線(A16A22)實(shí)現(xiàn)的,由XPC寄存器控制。下面介紹幾種擴(kuò)展外部RAM的方法。 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (1) 外接一個(gè)128K16位的RAM,將程序區(qū)和數(shù)據(jù)區(qū)分開(kāi)。圖8-7為采用128K字RAM分開(kāi)程序區(qū)和數(shù)據(jù)區(qū)的接口方法,圖中采用程序選通線( )接外部RAM的A16地址線實(shí)現(xiàn)。因而,程序區(qū)為RAM的前64K字(0000HFFFFH),數(shù)據(jù)區(qū)為RAM的后64K字(10000H1FFFFH)。對(duì)DSP而言,程序區(qū)和數(shù)據(jù)區(qū)的地址范圍均為000

50、0HFFFFH。RS第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 采用這種外部存儲(chǔ)器配置,需要注意以下幾點(diǎn): 如果內(nèi)部RAM設(shè)置為有效,則相同地址的外部RAM自動(dòng)無(wú)效。 當(dāng)外部RAM不能全速運(yùn)行時(shí),需要根據(jù)速度設(shè)置插入等待狀態(tài)(設(shè)置SWWSR寄存器)。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-7 分開(kāi)的數(shù)據(jù)和程序空間配置 A22A19A18A17A15A16A14A0A15A16A14A0PSDSIS15MSTRBCSR/WWEOE第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (2) 混合程序區(qū)和數(shù)據(jù)區(qū)。當(dāng)OVLY=1時(shí),內(nèi)部RAM既是數(shù)據(jù)區(qū)又是程序區(qū)。這樣設(shè)置的優(yōu)點(diǎn)是程序可以在內(nèi)部

51、全速運(yùn)行,缺點(diǎn)是由于程序和數(shù)據(jù)是共用的,因此存儲(chǔ)區(qū)就變小了。此外,在鏈接時(shí)必須將程序和數(shù)據(jù)分開(kāi),以避免重疊。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-8 混合的程序和數(shù)據(jù)空間配置 A22A19A18A17A15A16A14A0A15A16A14A0PSDSIS15STRBCSR/WWEOE第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 (3) 一種優(yōu)化的混合程序和數(shù)據(jù)區(qū)外接RAM方法。圖8-9所示為一種優(yōu)化的混合程序和數(shù)據(jù)區(qū)外接RAM方法。這種配置方法省去了DSP的A15地址線,將RAM分為32K字長(zhǎng)的塊。采用這種方法后,可充分利用外接的RAM,不會(huì)因內(nèi)部RAM和外部RAM的地址重疊而

52、造成外部RAM的浪費(fèi)。下面分析外部RAM的地址安排。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-9 優(yōu)化的混合程序和數(shù)據(jù)空間配置 A22A19A18A17A15A16A14A0A15A16A14A0PSDSIS15MSTRBCSR/WWEOE第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 外部RAM的0000H7FFFH對(duì)應(yīng)于DSP數(shù)據(jù)區(qū)的8000HFFFFH和程序區(qū)的08000H0FFFFH及18000H1FFFFH。 外部RAM的8000HFFFFH對(duì)應(yīng)于DSP程序區(qū)的28000H2FFFFH和38000H3FFFFH。 外部RAM的10000H1FFFFH對(duì)應(yīng)于DSP程序區(qū)的480

53、00H4FFFFH和58000H5FFFFH。 外部RAM的18000H1FFFFH對(duì)應(yīng)于DSP程序區(qū)的68000H6FFFFH和78000H7FFFFH。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2TMS320C5409與Flash的接口 1) 器件簡(jiǎn)介 SST39VF400A是Silicon Storage公司的新一代256K16位CMOS Flash Memory產(chǎn)品。它的特點(diǎn)是擦除和編程都采用SuperFlash技術(shù)來(lái)實(shí)現(xiàn),使得它編程所需的電流比較低,并且擦除時(shí)間短,進(jìn)而保證了SST39VF400A編程和擦寫(xiě)所需消耗的能量比較低。同時(shí),SuperFlash技術(shù)能夠保證編程和擦寫(xiě)時(shí)間

54、不受已編程數(shù)據(jù)塊的影響。這種特性使得在系統(tǒng)設(shè)計(jì)時(shí)不用考慮軟件或者硬件上調(diào)整系統(tǒng)的讀/寫(xiě)速率。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 SST39VF400A的引腳圖及引腳說(shuō)明(以DIP32封裝為例)見(jiàn)圖8-10。 SST39VF400A還有另外兩種封裝模式:TFBGA和TSOP32。由于Flash Memory結(jié)構(gòu)與EPROM和E2PROM都有明顯的區(qū)別,因此這里僅對(duì)它的基本工作原理做一簡(jiǎn)介。圖8-11給出它的結(jié)構(gòu)框圖。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-10 SST39VF400A的引腳圖及其說(shuō)明 SST39VF400A1A152A143A134A125A116A107A

55、98A89NC10NC11WE12NC13NC14NC15NC16NC17A1718A719A620A521A422A323A224A1A1648NC47VSS46DQ1545DQ744DQ1443DQ642DQ1341DQ540DQ1239DQ438VDD37DQ1136DQ335DQ1034DQ233DQ932DQ131DQ830DQ029OE28VSS27CE26A025A0A16:地址線DQ0DQ15:數(shù)據(jù)線CE:片選OE:輸出允許WE:寫(xiě)允許NC:空引腳VDD:電源VSS:地第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-11 SST39VF400A的結(jié)構(gòu)框圖 主存儲(chǔ)器Y譯碼器輸

56、入/輸出緩存DQ 15 DQ 0X譯碼器地址緩存控制邏輯CEOEWE存儲(chǔ)地址第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 輸入的存儲(chǔ)地址通過(guò)地址緩存后,分別送入到X地址譯碼器和Y地址譯碼器中,得到相應(yīng)的主存儲(chǔ)器陣列的X地址和Y地址。主存儲(chǔ)器通過(guò)X和Y地址找出相應(yīng)的主存儲(chǔ)器單元,將存儲(chǔ)單元中的值發(fā)送到輸入/輸出緩存中,通過(guò)控制邏輯來(lái)確定芯片的輸入/輸出。 表8-2給出了SST39VF400A的工作方式選擇真值表。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 表8-2 SST39VF400A工作方式選擇真值表 第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 2) SST39VF400A與TMS320

57、C5409的接口 圖8-12為TMS320C5409與Flash的一種接口方法。圖中,F(xiàn)lash采用SST39VF400A(256K16位)作為DSP的外部數(shù)據(jù)存儲(chǔ)器,地址總線和數(shù)據(jù)總線接至DSP的外部總線, 接至DSP的。DSP上的XF引腳用于啟動(dòng)編程,當(dāng)XF為低時(shí),F(xiàn)lash處于讀狀態(tài);當(dāng)XF為高時(shí),F(xiàn)lash可擦或編程。為了滿足SST39VF400A的時(shí)序要求,XF與 相“或后接至 ,R/ 引腳與 相或后接至 。DSMSTRBOEWMSTRBWE第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 圖8-12 DSP與Flash的接口 SST39VF400AD15D0A15A0D15D0A15A

58、0DSMSTRBCEOER/WWE1616第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 8.4.2 Flash擦寫(xiě) 在實(shí)際應(yīng)用中,選擇的片外存儲(chǔ)器通常是片外的RAM或Flash Memory。但由于RAM中數(shù)據(jù)掉電即丟失,不適合長(zhǎng)期保存數(shù)據(jù),因此當(dāng)需要保存到片外存儲(chǔ)器的是一些無(wú)需頻繁讀/寫(xiě)但需要長(zhǎng)期保存的數(shù)據(jù)時(shí),如字模數(shù)據(jù)、端口地址等,通常選擇使用片外的Flash擴(kuò)展DSP芯片的存儲(chǔ)器空間。使用片外Flash必須要解決對(duì)其擦寫(xiě)的問(wèn)題。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 在實(shí)際的應(yīng)用中,對(duì)片外Flash的擦寫(xiě)有兩種方式,一是使用通用編程器對(duì)Flash芯片進(jìn)行擦寫(xiě);二是直接由DSP對(duì)Fl

59、ash進(jìn)行擦寫(xiě)。對(duì)于需要反復(fù)修改或已安裝在電路板上的Flash芯片,無(wú)法使用第一種方式,只能采用第二種方式,這樣易于調(diào)試。這里介紹一種利用存儲(chǔ)器映射技術(shù),通過(guò)對(duì)DSP芯片編程實(shí)現(xiàn)片外Flash擦寫(xiě)的方法。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 假設(shè)要將一組二維數(shù)組形式的數(shù)據(jù)(character18032)存入片外數(shù)據(jù)Flash的0 x80000 xA000地址段中,先做以下準(zhǔn)備工作: (1) 利用一個(gè)GPIO端口,擴(kuò)展系統(tǒng)的可尋址數(shù)據(jù)存儲(chǔ)器空間。 (2) 編寫(xiě)Flash擦寫(xiě)程序,程序流程如圖8-13所示。第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 #define N 100 /*由于F

60、lash與RAM的讀寫(xiě)速度不同,因此需要在每項(xiàng)操作后加入若干個(gè)延時(shí)以保證正確性,延時(shí)的長(zhǎng)短可以根據(jù)具體情況做調(diào)整 */void main( ) unsigned int i,code; unsigned int *code_addr; unsigned int *flash_addr;第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用 *GPIO_ DR=0 x0002; /*映射方式設(shè)置為映射到片外數(shù)據(jù)Flash*/ delay(N); GPIOD_setup( ); /*GPIOD設(shè)置*/ delay(N);erase_flash( ); /*如果Flash上原有數(shù)據(jù)無(wú)需保留,則全部擦除;如果部分?jǐn)?shù)據(jù)需保留,也可部分擦除*/ delay(N);第第8 8章章 DSPDSP芯片應(yīng)用芯片應(yīng)用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論