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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

0.8A時(shí)低壓差為1.1V;

0.1%線形調(diào)整率;

0.2%負(fù)載調(diào)整率; 過流及溫度保護(hù);

多種封裝供選擇。

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

發(fā)送UART

5.1.2軟件開發(fā)1

工程文件組織2

代碼分析軟件完成功能設(shè)計(jì):1)引導(dǎo)系統(tǒng)啟動(dòng)2)以115200波特率接受上位計(jì)算機(jī)的串口數(shù)據(jù),并轉(zhuǎn)發(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

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

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

8)ResetHandler處理

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

12)設(shè)置IRQhandler

1,44binit.s 13)設(shè)置IRQhandler 14)RWdata/zeroinitializeddata 15)跳轉(zhuǎn)到C-Main()函數(shù)---其它數(shù)據(jù)區(qū)定義RAM地址范圍(0x0c000000~0x0c7fffff)ROM地址范圍(0x00000000~0x001fffff)a,RAM及ROM區(qū)存儲(chǔ)安排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運(yùn)行流程分析中斷處理下節(jié)分析/*************************************************NAME :MAIN.C **BY:WangJianping*DESC:C程序的入口主程序,用戶相關(guān)開發(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及相關(guān)PLL處理區(qū)

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

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

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

Port_Init(); Uart_Init(0,115200);

//4)平臺(tái)中斷處理區(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ā)實(shí)例S3C44B0X中斷特點(diǎn)1、支持30個(gè)中斷源,包括8個(gè)外部中斷源2、中斷控制器支持26個(gè)中斷信號(hào),其中外部中斷4/5/6/7復(fù)用到一個(gè)中斷信號(hào)上(讀EXTINTPND寄存器來判斷)3、每個(gè)中斷信號(hào)處理均可獨(dú)立設(shè)置成FIQ或者IRQ模式4、中斷信號(hào)處理均可采用矢量處理方法(vectorinterruptmode)或者非矢量處理方法5、支持中斷優(yōu)先級(jí)排隊(duì)非矢量中斷處理方式非矢量中斷處理模式是一種傳統(tǒng)的中斷處理方法。當(dāng)系統(tǒng)產(chǎn)生中斷的時(shí)候,系統(tǒng)將interruptpending寄存器中對(duì)應(yīng)中斷的標(biāo)志位置位,然后跳轉(zhuǎn)到位于0x18處的統(tǒng)一中斷處理函數(shù)中,該中斷函數(shù)通過讀取interruptpending寄存器來判斷中斷源,并根據(jù)優(yōu)先級(jí)關(guān)系再跳轉(zhuǎn)到對(duì)應(yīng)中斷源的處理代碼內(nèi)。非矢量中斷處理流程圖矢量中斷處理方式

①當(dāng)CPU讀取位于0x18處的IRQ中斷處理指令時(shí)候,系統(tǒng)自動(dòng)讀取對(duì)應(yīng)于該中斷源的確定地址上的指令取代0x18處的指令.②通過跳轉(zhuǎn)指令,系統(tǒng)就直接跳轉(zhuǎn)到對(duì)應(yīng)的中斷處理函數(shù)中,節(jié)省了中斷處理時(shí)間,提高了中斷處理速度。矢量中斷處理流程圖中斷相關(guān)操作寄存器程序狀態(tài)寄存器中的F-bit和I-bit;中斷模式設(shè)置(FIQ,IRQ);未處理中斷寄存器I-flag/F-flag,I-ISPC/F-ISPC中斷屏蔽寄存器INTMSK,如果該寄存器的某一個(gè)位被置1,則該位對(duì)應(yīng)的中斷響應(yīng)被禁止了。如果某個(gè)中斷在INTMSK寄存器的對(duì)應(yīng)位為0,則這個(gè)中斷發(fā)生時(shí)將會(huì)正常被響應(yīng)。如果某個(gè)中斷的在INTMSK的寄存器中的對(duì)應(yīng)位為1,但是這個(gè)中斷發(fā)生了,它的pending位還是會(huì)置位。如果全局屏蔽位被置1,那么當(dāng)中斷發(fā)生時(shí),中斷pending位還是會(huì)置位,但是所有的中斷都不會(huì)得到服務(wù);中斷源中斷優(yōu)先級(jí)(P239)向量中斷地址中斷相關(guān)寄存器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.軟件設(shè)計(jì)功能要求實(shí)現(xiàn)嵌套中斷使用定時(shí)器4,采用中斷方式實(shí)現(xiàn)RUNLED閃爍使用外部中斷0,控制RUNLED是否閃爍軟件設(shè)計(jì)代碼實(shí)現(xiàn)及分析1,44binit.s中斷模塊設(shè)計(jì)及實(shí)現(xiàn)2,Interrupt.h

及Interrupt.c

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

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

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

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

Port_Init(); Uart_Init(0,115200);

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

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

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

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

//1,設(shè)置外部中斷0工作模式

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

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

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

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

RegisterIntSvrFun(NUM_EINT0,fSvr);

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

//1)初始化Timer5相關(guān)寄存器

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,注冊(cè)服務(wù)函數(shù)

RegisterIntSvrFun(NUM_TIMER5,fSvr);

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

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

//4)啟動(dòng)Time5

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

uiTemp=0x05<<24;

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

rI_ISPC=BIT_EINT0;//清除中斷標(biāo)志

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

if(bBlind==0)

bBlind=1; else

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

iFlag=0;

rI_ISPC=BIT_TIMER5;//清除中斷標(biāo)志

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ā)實(shí)例學(xué)習(xí)要點(diǎn)1)IIS基本原理及使用方法2)DMA數(shù)據(jù)傳輸方法5.3.1IIS控制器原理IIS即音頻數(shù)據(jù)接口,它是SONY、PHILIPS等電子巨頭共同推出的接口標(biāo)準(zhǔn)。S3C44B0XIIS(Inter-ICSound)用來連接一個(gè)外部8/16bit立體聲聲音,IIS采用FIFO隊(duì)列方式存取數(shù)據(jù),可以采用DMA或中斷模式,可以同時(shí)收發(fā)數(shù)據(jù).支持IIS格式與MSB-justified格式,每個(gè)通道16、32、48fs的時(shí)鐘頻率(fs為取樣頻率)每個(gè)通道可為8bit或16bit數(shù)據(jù)格式可采用256、384fs主時(shí)鐘頻率對(duì)主時(shí)鐘頻率和外部CODEC時(shí)鐘頻率可編程的頻率分頻器

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

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

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

發(fā)送和接收FIFO的存取由DMA控制器來實(shí)現(xiàn),由FIFO準(zhǔn)備好標(biāo)志自動(dòng)請(qǐng)求DMA的服務(wù)。3.發(fā)送和接收同時(shí)時(shí)模式:

因?yàn)橹挥幸粋€(gè)DMA源,因此在該模式下只能有一個(gè)通道用正常傳輸模式,另一個(gè)則用DMA傳輸模式,以實(shí)現(xiàn)同時(shí)工作的目的。(3)IIS聲音格式1.IIS格式

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

IISCLK可以為采樣頻率的16、32和48倍,如表5.3.2所示。表5.3.1系統(tǒng)主頻和取樣頻率對(duì)應(yīng)關(guān)系表5.3.2串行時(shí)鐘頻率(6)IIS控制寄存器(7)IIS模式寄存器(8)IISFIFO控制寄存器(9)IIS分頻寄存器5.3.2DMA原理DMA來源于I/O模型。一般說來,I/O技術(shù)有三種:ProgrammedI/O,Interrupt-DrivenI/O和DirectMemoryAccess(DMA)下面簡單列出這三種技術(shù)的流程圖,通過比較他們的特點(diǎn),我們可以發(fā)現(xiàn)DMA是如何成為一種關(guān)鍵的I/O技術(shù)的。ProgrammedI/O和Interrupt-DrivenI/O的不足I/O傳送速度受處理器測試和給設(shè)備提供服務(wù)的速度的限制處理器負(fù)責(zé)管理I/O傳送,對(duì)于每一次的I/O傳送,處理器必須執(zhí)行一些指令當(dāng)傳送大量數(shù)據(jù)時(shí),需要有更有效的技術(shù):DMADMA技術(shù)在實(shí)現(xiàn)上需要在系統(tǒng)總線上有一個(gè)附加模塊——DMAController為了傳送數(shù)據(jù)給存儲(chǔ)器或從存儲(chǔ)器讀取數(shù)據(jù),DMAController數(shù)據(jù)線需要掌管總線,一般需要將CPU暫時(shí)掛起(cycle-stealing)當(dāng)CPU想要讀寫數(shù)據(jù)塊時(shí),它發(fā)送一個(gè)命令給DMAController,向DMAController發(fā)送信息如下:是請(qǐng)求讀還是寫所涉及的I/O設(shè)備地址讀或?qū)憰r(shí)存儲(chǔ)器中的起始單元地址讀或?qū)懙淖謹(jǐn)?shù)然后DMA開始工作,而CPU不參與,即數(shù)據(jù)不經(jīng)過CPU.當(dāng)傳送結(jié)束時(shí),DMAController發(fā)送一個(gè)中斷信號(hào)給CPU,因此,CPU只是在數(shù)據(jù)傳送的開始和結(jié)束時(shí)參與.CPU掛起不是中斷,CPU不保存現(xiàn)場,也不做其他事情,而只是等待總線.S3C44B0XDMATheS3C44B0Xhas4channelDMAControllers.TwoZDMAs:GeneralDMATwoBDMAs:BridgeDMAZDMATheZDMAisinterfacedtoSSBandcantransferdatafromexternalmemorytoexternalmemory.UnlikelytheBDMA(BridgeDMA),thisDMAcanbeusedtotransferdatabetweenmemory-mappeddeviceormemories.Inotherwords,datatransferbetweenfixedsourceandexternalmemory,externalmemoryandexternalmemory,andexternalmemoryandfixeddestinationcanbedonebyusingthisDMA.TheDMAoperationcanbestartedbyS/WoranexternalDMArequestsignal,whichwillbeexplainedlater.ZDMA用來對(duì)寄存器到寄存器、寄存器到I/O存儲(chǔ)器、I/O裝置到存儲(chǔ)器之間的傳輸數(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設(shè)備(如UART、IIS和SIO)與存儲(chǔ)器器之間的數(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接口電路設(shè)計(jì)該系統(tǒng)把IIS接口與PHILIPS公司的UDAl341TS音頻數(shù)字信號(hào)編譯碼器相連接,得到MICROPHONE音頻輸入通道和SPEAKER音頻輸出通道。UDAl341TS可把立體聲模擬信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),同樣也能把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),并可用PGA(可編程增益控制)、AGC(自動(dòng)增益控制)對(duì)模擬信號(hào)進(jìn)行處理。對(duì)于數(shù)字信號(hào),該芯片提供了DSP數(shù)字音頻處理功能。在實(shí)際中,UDAl341TS可廣泛應(yīng)用于MD、CD、Note—Book、PC和數(shù)碼攝像機(jī)等。S3C44B0X的IIS接口可與UDAl341TS的BCK、WS、DATAI、DATAO和SYSCLK相連。對(duì)于UDAl341TS的L3總線,它是該芯片工作于微控制器輸入模式時(shí)使用的,它包括L3DATA、L3MODE和L3CLOCK共3根接線,它們分別表示為微處理器接口數(shù)據(jù)線、微處理器接口模式線和微處理器接口時(shí)鐘線。 通過這個(gè)接口,微處理器能夠?qū)DAl341TS中的數(shù)字音頻處理參數(shù)和系統(tǒng)控制參數(shù)進(jìn)行配置。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論