第5章 設計實例精講_第1頁
第5章 設計實例精講_第2頁
第5章 設計實例精講_第3頁
第5章 設計實例精講_第4頁
第5章 設計實例精講_第5頁
已閱讀5頁,還剩112頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第5章設計實例精講第5章設計實例精講1.最小引導系統(tǒng)及UART開發(fā)實例2.中斷處理開發(fā)實例3.IIS設計開發(fā)5.1最小系統(tǒng)及UART開發(fā)實例概述

一個嵌入式處理器自己是不能獨立工作的,必須給它供電、加上時鐘信號、提供復位信號,如果芯片沒有片內程序存儲器,則還要加上存儲器系統(tǒng),然后嵌入式處理器芯片才可能工作。這些提供嵌入式處理器運行所必須的條件的電路與嵌入式處理器共同構成了這個嵌入式處理器的最小系統(tǒng)。而大多數(shù)基于ARM7處理器核的微控制器都有調試接口,這部分在芯片實際工作時不是必需的,但因為這部分在開發(fā)時很重要,所以也把這部分也歸入最小系統(tǒng)中。5.1最小系統(tǒng)及UART開發(fā)框圖嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)可選,因為許多面向嵌入式領域的微控制器內部集成了程序和數(shù)據(jù)存儲器可選,但是在樣品階段通常都會設計這部分電路嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)各部件簡介——電源供電系統(tǒng)(電源)電源系統(tǒng)為整個系統(tǒng)提供能量,是整個系統(tǒng)工作的基礎,具有極其重要的地位,但卻往往被忽略。如果電源系統(tǒng)處理得好,整個系統(tǒng)的故障往往減少了一大半。5.1.1硬件電路設計各部件簡介——電源嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)供電系統(tǒng)(電源)設計電源時要考慮的因素:1.輸出的電壓、電流、功率;2.輸入的電壓、電流;3.安全因素;4.輸出紋波;5.電池兼容和電磁干擾;6.體積限制;7.功耗限制;8.成本限制。各部件簡介——電源1.分析需求

S3C44B0x需要3組電源輸入:數(shù)字3.3V、數(shù)字2.5V、模擬3.3V。因此,理想情況下電源系統(tǒng)需要提供3組獨立的電源:兩組3.3V電源和一組2.5V電源,它們需要單點接地或大面積接地。如果系統(tǒng)的其它部分還有其它電源需求,則還需要更多的末級電源。但如果不使用AD功能,或對AD的要求不高,模擬電源和數(shù)字電源可以不分開供電。這里假設不使用的AD功能,且其它部分對電源沒有特殊要求。這樣,末級只需要提供兩組電源。各部件簡介——電源2.設計末級電源電路

S3C44B0x微控制2.5V消耗電流的極限值為80mA。為了保證可靠性并為以后升級留下余量,則電源系統(tǒng)2.5V能夠提供的電流應當大于300mA。整個系統(tǒng)在3.3V上消耗的電流與外部條件有很大的關系,這里假設電流不超過200mA,這樣,電源系統(tǒng)3.3V能夠提供600mA電流即可。分析得到以下參數(shù):3.3V電源設計最大電流:600mA;2.5V電源設計最大電流:300mA。各部件簡介——電源LM1117主要特點:

0.8A穩(wěn)定輸出電流;

1A穩(wěn)定峰值電流;

3V可調節(jié); 低靜態(tài)電流;

0.8A時低壓差為1.1V;

0.1%線形調整率;

0.2%負載調整率; 過流及溫度保護;

多種封裝供選擇。

各部件簡介——電源3.設計前級電源電路盡管LM1117允許的輸入電壓可達20V(參考芯片數(shù)據(jù)手冊),但太高的電壓使芯片的發(fā)熱量上升,散熱系統(tǒng)不好設計,同時影響芯片的性能。這樣,就需要前級電路調整一下。如果系統(tǒng)可能使用多種電源(如交流電和電池),各種電源的電壓輸出不一樣,就更需要前級調整以適應末級的輸入。通過之前的分析,前級的輸出選擇為5V。選擇5V作為前級的輸出有兩個原因:這個電壓滿足LM1117的要求;目前很多器件還是需要5V供電的,這個5V可以兼做前級和末級了。各部件簡介——電源3.設計前級電源電路根據(jù)系統(tǒng)在5V上消耗的電流和體積、成本等方面的考慮,前級電路可以使用開關電源,也可以使用模擬電源。它們的特別如下:開關電源:效率較高,可以減少發(fā)熱量,因而在功率較大時可以減小電源模塊的體積;模擬電源:電路簡單,輸出電壓紋波較小,并且干擾較開關電源小得多。開關電源嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)各部件簡介——時鐘目前所有的微控制器均為時序電路,需要一個時鐘信號才能工作,大多數(shù)微控制器具有晶體振蕩器。簡單的方法是利用微控制器內部的晶體振蕩器,但有些場合(如減少功耗、需要嚴格同步等情況)需要使用外部振蕩源提供時鐘信號。時鐘系統(tǒng)各部件簡介——時鐘目前所有的微控制器均為時序電路,需要一個時鐘信號才能工作,大多數(shù)微控制器具有晶體振蕩器。簡單的方法是利用微控制器內部的晶體振蕩器,但有些場合(如減少功耗、需要嚴格同步等情況)需要使用外部振蕩源提供時鐘信號。S3C44b0XX1X2CCXtalS3C44b0XX1X2CClock使用內部振蕩器使用外部時鐘源可以使用穩(wěn)定的時鐘信號源,如有源晶振等。嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)各部件簡介——存儲器系統(tǒng)對于大部分微控制器來說,存儲器系統(tǒng)不是必需的,但如果微控制器沒有片內程序存儲器或數(shù)據(jù)存儲器時,就必須設計存儲器系統(tǒng),這一般通過微控制器的外部總線接口實現(xiàn)。存儲器系統(tǒng)各部件簡介——存儲器系統(tǒng)SDRAM存儲器系統(tǒng)FLASH存儲器系統(tǒng)嵌入式控制器時鐘系統(tǒng)調試測試接口復位及其配置系統(tǒng)存儲器系統(tǒng)供電系統(tǒng)(電源)各部件簡介——調試與測試接口調試與測試接口不是系統(tǒng)運行必須的,但現(xiàn)代系統(tǒng)越來越強調可測性,調試、測試接口的設計也要重視了。S3C44B0X有一個內置JTAG調試接口,通過這個接口可以控制芯片的運行并獲取內部信息。調試測試接口FLASH存儲器系統(tǒng)固態(tài)硬盤UART接口電路UART是通用異步收發(fā)器的簡稱連接兩個計算機系統(tǒng)的簡單而且低成本的串行接口具有工業(yè)標準的異步數(shù)據(jù)通訊接口比高速的串行通訊更加穩(wěn)定可靠所需的通訊線路比并行傳輸少可進行長距離傳輸(RS232=50英尺,RS485為4千英尺)UART是如何運作的?各種系統(tǒng)間互相通訊的手段UART發(fā)送端從發(fā)送處理器處獲取數(shù)據(jù)并逐位把每個字節(jié)發(fā)送出去UART接收端每次接收一個位,然后把接收到的位拼接成數(shù)據(jù)發(fā)送給接收處理器在UART的發(fā)送和接收過程中能夠檢測到通訊的錯誤大幅的減輕了處理器在管理通訊信道方面的任務負擔CPU發(fā)送端CPU接收端中斷中斷串口通訊滿載空載空載發(fā)送移位寄存器接收移位寄存器滿載并行接口發(fā)送UART

發(fā)送UART

5.1.2軟件開發(fā)1

工程文件組織2

代碼分析軟件完成功能設計:1)引導系統(tǒng)啟動2)以115200波特率接受上位計算機的串口數(shù)據(jù),并轉發(fā)給上位顯示(1)軟件模塊插件安裝步驟(2)軟件工程建立(3)打開工程(4)編寫用戶程序(5)編譯及測試程序最基本boot程序FirstBoot工程代碼5.1.3代碼分析1,44binit.s1)常數(shù)定義2)MACRO定義

$HandlerLabelHANDLER$HandleLabel3)IMPORTADS環(huán)境定義4)ENTRY匯編入口(AREAInit,CODE,READONLY)5)VECTOR_BRANCH向量表6)LTORG

用于聲明一個數(shù)據(jù)緩沖池,(也稱為文字池)的開始。

(1)44binit.s代碼分析1,44binit.s 7)非矢量中斷處理

8)ResetHandler處理

9)Setclockcontrolregisters 10)Setmemorycontrolregister 11)初始化堆棧

12)設置IRQhandler

1,44binit.s 13)設置IRQhandler 14)RWdata/zeroinitializeddata 15)跳轉到C-Main()函數(shù)---其它數(shù)據(jù)區(qū)定義RAM地址范圍(0x0c000000~0x0c7fffff)ROM地址范圍(0x00000000~0x001fffff)a,RAM及ROM區(qū)存儲安排RAM地址安排1中斷向量區(qū)

_ISR_STARTADDRESS

(0x0c7f

ff00~0x0c7f

ff84)2中斷向量區(qū)

(_ISR_STARTADDRESS-9216-16)

UserStack # 4096 ;c1(c7)ffa00

SVCStack # 1024 ;c1(c7)ffb00

UndefStack # 1024 ;c1(c7)ffc00

AbortStack # 1024 ;c1(c7)ffd00

IRQStack # 2048 ;c1(c7)ffe00

FIQStack # 0 ;c1(c7)fff003RW和ZI數(shù)據(jù)區(qū)

LDRr1,=|Image$$RW$$Base|;由RWbase地址指定

LDRr3,=|Image$$ZI$$Base|

RAM地址安排RAM地址安排|Image$$RW$$Base|;由RWbase地址指定|Image$$RW$$Limit|=|Image$$RW$$Base|+RWData|Image$$ZI$$Base|=|Image$$RW$$Limit|+1|Image$$ZI$$Limit|=|Image$$ZI$$Base|+ZIData

ROM地址安排LDR r0,=|Image$$RO$$Limit| ;GetpointertoROMdataROM地址安排|Image$$RO$$Base|=Imageentrypoint|Image$$RO$$Limit|=程序代碼起始地址+代碼長度+1

44binit.s運行流程分析中斷處理下節(jié)分析/*************************************************NAME :MAIN.C **BY:WangJianping*DESC:C程序的入口主程序,用戶相關開發(fā)均在該文件開始*Version:2008-09-12 ************************************************/

//頭文件引用#include"..\inc\option.h"#include"..\inc\44b.h"#include"..\inc\44blib.h"#include"..\inc\def.h"voidMain(void){ //1)變量定義區(qū)

//2)系統(tǒng)CACHE及相關PLL處理區(qū)

rSYSCFG=SYSCFG_8KB;#if(PLLON==1)

ChangePllValue(PLL_M,PLL_P,PLL_S);#endif(1)main.c代碼分析

//3)平臺端口處理區(qū)

Port_Init(); Uart_Init(0,115200);

//4)平臺中斷處理區(qū)

//5)用戶代碼處理區(qū)

Uart_SendString(0,"\n\t歡迎使用測試程序,編寫:王劍平\n"); while(1) { charucTemp;

ucTemp=Uart_GetKey(0);

if(ucTemp!=0) { Uart_SendByte(0,ucTemp); } RunLed_Blind(1000); }}5.2中斷系統(tǒng)開發(fā)實例S3C44B0X中斷特點1、支持30個中斷源,包括8個外部中斷源2、中斷控制器支持26個中斷信號,其中外部中斷4/5/6/7復用到一個中斷信號上(讀EXTINTPND寄存器來判斷)3、每個中斷信號處理均可獨立設置成FIQ或者IRQ模式4、中斷信號處理均可采用矢量處理方法(vectorinterruptmode)或者非矢量處理方法5、支持中斷優(yōu)先級排隊非矢量中斷處理方式非矢量中斷處理模式是一種傳統(tǒng)的中斷處理方法。當系統(tǒng)產(chǎn)生中斷的時候,系統(tǒng)將interruptpending寄存器中對應中斷的標志位置位,然后跳轉到位于0x18處的統(tǒng)一中斷處理函數(shù)中,該中斷函數(shù)通過讀取interruptpending寄存器來判斷中斷源,并根據(jù)優(yōu)先級關系再跳轉到對應中斷源的處理代碼內。非矢量中斷處理流程圖矢量中斷處理方式

①當CPU讀取位于0x18處的IRQ中斷處理指令時候,系統(tǒng)自動讀取對應于該中斷源的確定地址上的指令取代0x18處的指令.②通過跳轉指令,系統(tǒng)就直接跳轉到對應的中斷處理函數(shù)中,節(jié)省了中斷處理時間,提高了中斷處理速度。矢量中斷處理流程圖中斷相關操作寄存器程序狀態(tài)寄存器中的F-bit和I-bit;中斷模式設置(FIQ,IRQ);未處理中斷寄存器I-flag/F-flag,I-ISPC/F-ISPC中斷屏蔽寄存器INTMSK,如果該寄存器的某一個位被置1,則該位對應的中斷響應被禁止了。如果某個中斷在INTMSK寄存器的對應位為0,則這個中斷發(fā)生時將會正常被響應。如果某個中斷的在INTMSK的寄存器中的對應位為1,但是這個中斷發(fā)生了,它的pending位還是會置位。如果全局屏蔽位被置1,那么當中斷發(fā)生時,中斷pending位還是會置位,但是所有的中斷都不會得到服務;中斷源中斷優(yōu)先級(P239)向量中斷地址中斷相關寄存器1,INTERRUPTCONTROLREGISTER(INTCON);2,INTERRUPTPENDINGREGISTER(INTPND);3,INTERRUPTMODEREGISTER(INTMOD);4,INTERRUPTMASKREGISTER(INTMSK);5,IRQPRIORITYOFSLAVEREGISTER(I_PSLV);6,IRQPRIORITYOFMASTERREGISTER(I_PMST);7,CURRENTIRQPRIORITYOFSLAVEREGISTER(I_CSLV);8,CURRENTIRQPRIORITYOFMASTERREGISTER(I_CMST);9,IRQINTERRUPTSERVICEPENDINGREGISTER(I_ISPR);10,IRQ/FIQINTERRUPTSERVICEPENDINGCLEARREGISTER(I_ISPC/F_ISPC);1,INTERRUPTCONTROLREGISTER(INTCON)2,INTERRUPTPENDINGREGISTER(INTPND)2,INTERRUPTPENDINGREGISTER(INTPND)Eachofthe26bitsintheinterruptpendingregister,INTPND,correspondstoaninterruptsource.Whenaninterruptrequestisgenerated,itwillbesetto1.Theinterruptserviceroutinemustthenclearthependingconditionbywriting'1'tothecorrespondingbitofI_ISPC/F_ISPC.Althoughseveralinterruptsourcesgeneraterequestssimultaneously,theINTPNDwillindicateallinterruptsourcesthatgenerateaninterruptrequest.EveniftheinterruptsourceismaskedbyINTMSK,thecorrespondingpendingbitcanbesetto1.3,INTERRUPTMODEREGISTER(INTMOD)4,INTERRUPTMASKREGISTER(INTMSK)IRQVECTOREDMODEREGISTERSTheprioritygeneratingblockconsistsoffiveunits,1masterunitand4slaveunits.Eachslaveprioritygeneratingunitmanagessixinterruptsources.Themasterprioritygeneratingunitmanages4slaveunitsand2interruptsources.Eachslaveunithas4programmableprioritysource(sGn)and2fixedprioritysources(kn).Thepriorityamongthe4sourcesineachslaveunitisdeterminedtheI_PSLVregister.Theother2fixedprioritieshavethelowestpriorityamongthe6sources.Themasterprioritygeneratingunitdeterminestheprioritybetween4slaveunitsand2interruptsourcesusingtheI_PMSTregister.The2interruptources,INT_RTCandINT_ADC,havethelowestpriorityamongthe26interruptsources.Ifseveralinterruptsarerequestedatthesametime,theI_ISPRregistershowsonlytherequestedinterruptsourcewiththehighestpriority.5,IRQPRIORITYOFSLAVEREGISTER(I_PSLV)6,IRQPRIORITYOFMASTERREGISTER(I_PMST);7,CURRENTIRQPRIORITYOFSLAVEREGISTER(I_CSLV);8,CURRENTIRQPRIORITYOFMASTERREGISTER(I_CMST);9,IRQINTERRUPTSERVICEPENDINGREGISTER(I_ISPR);參見官方pdf文檔10,RQ/FIQINTERRUPTSERVICEPENDINGCLEARREGISTER(I_ISPC/F_ISPC)IRQINTERRUPTSERVICEPENDINGREGISTER(I_ISPR),I_ISPRindicatestheinterruptbeingcurrentlyserviced.Althoughtheseveralinterruptpendingbitsareallturnedononlyonebitwillbeturnedon.軟件設計功能要求實現(xiàn)嵌套中斷使用定時器4,采用中斷方式實現(xiàn)RUNLED閃爍使用外部中斷0,控制RUNLED是否閃爍軟件設計代碼實現(xiàn)及分析1,44binit.s中斷模塊設計及實現(xiàn)2,Interrupt.h

及Interrupt.c

關于中斷設計3,服務函數(shù)設計代碼實現(xiàn)voidMain(void){ //1)變量定義區(qū)

//2)系統(tǒng)CACHE及相關PLL處理區(qū)

rSYSCFG=SYSCFG_8KB;#if(PLLON==1)

ChangePllValue(PLL_M,PLL_P,PLL_S);#endif //3)平臺端口處理區(qū)

Port_Init(); Uart_Init(0,115200);

//4)平臺中斷處理區(qū)

InitInterrupt(); InitEint0(Isr_Eint0);//初始化外部中斷0; InitTimer5(Isr_Timer5);//初始化Timer5;

//5)用戶代碼處理區(qū)

Uart_SendString(0,"\n\t歡迎使用中斷測試程序,編寫:王劍平\n"); while(1) { //RunLed_Blind(1000); }}/*************************初始化設置外部中斷0**************************///fSvr-中斷服務函數(shù)voidInitEint0(void__irq(*fSvr)(void)){ U32uiTemp;

//1,設置外部中斷0工作模式

uiTemp=0x02;//0x00-低電平,0x01-高電平,0x02-下降沿,0x04-上升沿,0x06-雙邊沿

rEXTINT&=0xfffffff8;//清楚低3位

rEXTINT|=uiTemp;//下降沿觸發(fā)

//2,注冊服務函數(shù)

RegisterIntSvrFun(NUM_EINT0,fSvr);

//3,使能外部中斷0 EnInterruptByNum(NUM_EINT0);}/*************************初始化設置時鐘5**************************///fSvr-中斷服務函數(shù)#defineOS_TICKS_PER_SEC100#defineOS_CLOCK (MCLK/150/16/OS_TICKS_PER_SEC)voidInitTimer5(void__irq(*fSvr)(void)){ U32uiTemp;

//1)初始化Timer5相關寄存器

rTCFG0|=0x95<<16; //deadzone=0,Prescaler0=149 rTCFG1|=0x03<<20; //allinterrupt,MUX0=1/16 rTCNTB5=OS_CLOCK; //由MCK和OS_TICKS_PER_SEC決定

rTCON|=0x02<<24; //updateTimer0,butTimer0stopyet

//2,注冊服務函數(shù)

RegisterIntSvrFun(NUM_TIMER5,fSvr);

//3,使能Timer5 EnInterruptByNum(NUM_TIMER5);

rINTMSK=~(BIT_GLOBAL|BIT_EINT0|BIT_TIMER5);//中斷掩碼

//4)啟動Time5

rTCON&=0xf0ffffff; //清除24~27位

uiTemp=0x05<<24;

rTCON|=uiTemp; //StartTimer5}//全局變量聲明U32bBlind=1; //表明是否允許閃爍//**********************外部中斷0服務函數(shù)****************//void__irqIsr_Eint0(void){ staticinti=0;

rI_ISPC=BIT_EINT0;//清除中斷標志

Uart_Printf(0,"收到外部中斷0->%d\n",i++);

if(bBlind==0)

bBlind=1; else

bBlind=0;}//**********************時鐘5中斷服務函數(shù)*************************//void__irqIsr_Timer5(void){ staticint

iFlag=0;

rI_ISPC=BIT_TIMER5;//清除中斷標志

if(bBlind==1)//閃爍

{

iFlag++;

if(iFlag<10) {

rPDATE=rPDATE&0xff7f; }

if(iFlag>10) {

rPDATE=rPDATE|0x80; }

if(iFlag>20) {

iFlag=0; } } else//停止閃爍

{

rPDATE=rPDATE|0x80; }}5.3數(shù)字音頻系統(tǒng)開發(fā)實例學習要點1)IIS基本原理及使用方法2)DMA數(shù)據(jù)傳輸方法5.3.1IIS控制器原理IIS即音頻數(shù)據(jù)接口,它是SONY、PHILIPS等電子巨頭共同推出的接口標準。S3C44B0XIIS(Inter-ICSound)用來連接一個外部8/16bit立體聲聲音,IIS采用FIFO隊列方式存取數(shù)據(jù),可以采用DMA或中斷模式,可以同時收發(fā)數(shù)據(jù).支持IIS格式與MSB-justified格式,每個通道16、32、48fs的時鐘頻率(fs為取樣頻率)每個通道可為8bit或16bit數(shù)據(jù)格式可采用256、384fs主時鐘頻率對主時鐘頻率和外部CODEC時鐘頻率可編程的頻率分頻器

32B(=2X16B)的發(fā)送和接收FIFO(每個FIFO為8X半字)正常模式和DMA傳輸模式(1)IIS總線結構示意圖(2)IIS傳輸方式1.正常模式:

IIS控制寄存器有一個FIFO準備標志。 當發(fā)送數(shù)據(jù)時,如果發(fā)送FIFO不空則標志為1,F(xiàn)IFO準備好發(fā)送數(shù)據(jù);如果發(fā)送FIFO

空則該標志為0; 當接收數(shù)據(jù)時,如果接收FIFO不滿該標志為1,指示可以接收數(shù)據(jù),F(xiàn)IFO滿則該標志為0,通過該標志可以確定CPU讀寫FIFO的時間,通過該方式實現(xiàn)發(fā)送和收收FIFO的存取來發(fā)送和接收數(shù)據(jù)。2.DMA傳輸方式:

發(fā)送和接收FIFO的存取由DMA控制器來實現(xiàn),由FIFO準備好標志自動請求DMA的服務。3.發(fā)送和接收同時時模式:

因為只有一個DMA源,因此在該模式下只能有一個通道用正常傳輸模式,另一個則用DMA傳輸模式,以實現(xiàn)同時工作的目的。(3)IIS聲音格式1.IIS格式

IIS有四條線分別為IISDI(serialdatainput),IISDO(serialdataoutput),IISLRCK(left/rightchannelselect)和IISCLK(serialbitclock);產(chǎn)生IISLRCK的設備和IISCLK為主要,傳送時是以2的補數(shù)作傳送,在IISLRCK改變之後,傳送者則在一個時鐘周期期后傳送下一個MSB字節(jié)。2.MSBJUSTIFIED MSB/leftjustifiedbus和IIS使用一樣的線,都是用IISbus傳送只是差別在于當IISLRCK改變時則傳送下一個MSB字節(jié)。(4)IIS-Bus和MSB-JUSTIFIED數(shù)據(jù)接口格式(5)采樣頻率和主頻率音頻系統(tǒng)主時鐘CODECLK,一般為采樣頻率256倍或384倍,記為256fs或384fs,其中fs采樣頻率。CODECLK通過處理主時鐘分頻獲得,可以通過在程序中設定定分頻寄存器獲取。數(shù)值可以設為1到16。CODECLK與采樣的對應如下表5.3.1所示。應用中需要正確的選擇IISLRCK和CODECLK。串行時鐘

IISCLK可以為采樣頻率的16、32和48倍,如表5.3.2所示。表5.3.1系統(tǒng)主頻和取樣頻率對應關系表5.3.2串行時鐘頻率(6)IIS控制寄存器(7)IIS模式寄存器(8)IISFIFO控制寄存器(9)IIS分頻寄存器5.3.2DMA原理DMA來源于I/O模型。一般說來,I/O技術有三種:ProgrammedI/O,Interrupt-DrivenI/O和DirectMemoryAccess(DMA)下面簡單列出這三種技術的流程圖,通過比較他們的特點,我們可以發(fā)現(xiàn)DMA是如何成為一種關鍵的I/O技術的。ProgrammedI/O和Interrupt-DrivenI/O的不足I/O傳送速度受處理器測試和給設備提供服務的速度的限制處理器負責管理I/O傳送,對于每一次的I/O傳送,處理器必須執(zhí)行一些指令當傳送大量數(shù)據(jù)時,需要有更有效的技術:DMADMA技術在實現(xiàn)上需要在系統(tǒng)總線上有一個附加模塊——DMAController為了傳送數(shù)據(jù)給存儲器或從存儲器讀取數(shù)據(jù),DMAController數(shù)據(jù)線需要掌管總線,一般需要將CPU暫時掛起(cycle-stealing)當CPU想要讀寫數(shù)據(jù)塊時,它發(fā)送一個命令給DMAController,向DMAController發(fā)送信息如下:是請求讀還是寫所涉及的I/O設備地址讀或寫時存儲器中的起始單元地址讀或寫的字數(shù)然后DMA開始工作,而CPU不參與,即數(shù)據(jù)不經(jīng)過CPU.當傳送結束時,DMAController發(fā)送一個中斷信號給CPU,因此,CPU只是在數(shù)據(jù)傳送的開始和結束時參與.CPU掛起不是中斷,CPU不保存現(xiàn)場,也不做其他事情,而只是等待總線.S3C44B0XDMATheS3C44B0Xhas4channelDMAControllers.TwoZDMAs:GeneralDMATwoBDMAs:BridgeDMAZDMATheZDMAisinterfacedtoSSBandcantransferdatafromexternalmemorytoexternalmemory.UnlikelytheBDMA(BridgeDMA),thisDMAcanbeusedtotransferdatabetweenmemory-mappeddeviceormemories.Inotherwords,datatransferbetweenfixedsourceandexternalmemory,externalmemoryandexternalmemory,andexternalmemoryandfixeddestinationcanbedonebyusingthisDMA.TheDMAoperationcanbestartedbyS/WoranexternalDMArequestsignal,whichwillbeexplainedlater.ZDMA用來對寄存器到寄存器、寄存器到I/O存儲器、I/O裝置到存儲器之間的傳輸數(shù)據(jù)。ZDMAControllerBlockDiagramBDMATheBDMAisintheBridge,whichistheinterfacelayerbetweenSSBandSPB.ThemainroleofBDMAistotransferthedatabetweenexternalmemoryandinternalperipheralslikeUART,IISandSIO,whichareattachedtoSPB.ThetimercanalsorequestaDMAoperationanytime;itisusefulforoperatingtheADCblockautomatically.Usually,theCPUorothermasterdevicesshouldaccesstheexternalmemorythroughmemorycontroller,whichisattachedtoSPB.PleaseberemindedthattheBDMAisalsoatypeofmasterdevice.Totransferthedatafrommemory(peripheraldevices)toperipheraldevices(memory)attachedtoSPB(SSB),thememorycontrollerattachedtoSSBshouldbeused.BecausetheBDMAisintheBridge,whichisaninterfacelayerbetweenSSBandSPB,itcantransferthedatabetweentwodevices,whichareattachedtoSSBaswellasSPB.BDMA用在連到SPB上的I/O設備(如UART、IIS和SIO)與存儲器器之間的數(shù)據(jù)傳輸。BDMAControllerBlockDiagramExternalDMAREQ/ACKProtocolHandshakeModeSingleStepModeWholeServiceModeDemandModeHandshakeModeSingleStepModeWholeServiceModeDemandModeDMATransferModeUnittransfer:1unitread,then1unitwriteBlocktransfer:4unitburstread,then4unitburstwriteOn-the-flytransfer:1unitreador1unitwriteexclusivelyUnitaryTransferMode

withHandshakeBlockTransferMode

withSingleStepOn-the-flyTransferMode

withWholeserviceDMARequestSourceSelectionZDMAS/WorH/WproducesthenXDREQ(externalDMArequestsignal),whichistheDMArequestsourceBDMAInBDMA,therearesixhardwarerequestsources,UART0,UART1,SIO,TimerandIIS.TheBDMAcanbeinitiatedbysoftwareastheZDMARegistersConfiguration…AutoRe-loadModeThiskindofAuto-reloadingcanpre-scheduleDMAoperationautomaticallyButthiskindofparameterauto-reloadingcannotguaranteetheDMAre-runautomaticallyafterthecurrentDMAoperation5.3.3接口電路設計該系統(tǒng)把IIS接口與PHILIPS公司的UDAl341TS音頻數(shù)字信號編譯碼器相連接,得到MICROPHONE音頻輸入通道和SPEAKER音頻輸出通道。UDAl341TS可把立體聲模擬信號轉化為數(shù)字信號,同樣也能把數(shù)字信號轉換成模擬信號,并可用PGA(可編程增益控制)、AGC(自動增益控制)對模擬信號進行處理。對于數(shù)字信號,該芯片提供了DSP數(shù)字音頻處理功能。在實際中,UDAl341TS可廣泛應用于MD、CD、Note—Book、PC和數(shù)碼攝像機等。S3C44B0X的IIS接口可與UDAl341TS的BCK、WS、DATAI、DATAO和SYSCLK相連。對于UDAl341TS的L3總線,它是該芯片工作于微控制器輸入模式時使用的,它包括L3DATA、L3MODE和L3CLOCK共3根接線,它們分別表示為微處理器接口數(shù)據(jù)線、微處理器接口模式線和微處理器接口時鐘線。 通過這個接口,微處理器能夠對UDAl341TS中的數(shù)字音頻處理參數(shù)和系統(tǒng)控制參數(shù)進行配置。

溫馨提示

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

最新文檔

評論

0/150

提交評論