第6章 基于S3C44B0X的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)_第1頁(yè)
第6章 基于S3C44B0X的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)_第2頁(yè)
第6章 基于S3C44B0X的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)_第3頁(yè)
第6章 基于S3C44B0X的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)_第4頁(yè)
第6章 基于S3C44B0X的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩158頁(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)介

第6章基于S3C44B0X的嵌入式系統(tǒng)應(yīng)用開(kāi)發(fā)

端口組件原理及應(yīng)用

6.2中斷組件原理及應(yīng)用

36.3嵌入式最小系統(tǒng)36.16.4UART組件原理及應(yīng)用

DMA組件原理及應(yīng)用

6.5PWM定時(shí)器原理及應(yīng)用

36.6I2C組件原理及應(yīng)用

36.76.1嵌入式最小系統(tǒng)簡(jiǎn)介

一個(gè)嵌入式處理器自己是不能獨(dú)立工作的,必須給它供電、加上時(shí)鐘信號(hào)、提供復(fù)位信號(hào),如果芯片沒(méi)有片內(nèi)程序存儲(chǔ)器,則還要加上存儲(chǔ)器系統(tǒng),然后嵌入式處理器芯片才可能工作。這些提供嵌入式處理器運(yùn)行所必須的條件的電路與嵌入式處理器共同構(gòu)成了這個(gè)嵌入式處理器的最小系統(tǒng)。返回6.1.1嵌入式最小系統(tǒng)組成嵌入式控制器時(shí)鐘系統(tǒng)調(diào)試測(cè)試接口復(fù)位及其配置系統(tǒng)存儲(chǔ)器系統(tǒng)供電系統(tǒng)(電源)可選,因?yàn)樵S多面向嵌入式領(lǐng)域的微控制器內(nèi)部集成了程序和數(shù)據(jù)存儲(chǔ)器最小系統(tǒng)框圖可選,但是在樣品階段通常都會(huì)設(shè)計(jì)這部分電路基于S3C44B0X的典型嵌入式系統(tǒng)硬件體系結(jié)構(gòu)

6.1.2電源模塊的選擇及電路設(shè)計(jì)

電源系統(tǒng)為整個(gè)系統(tǒng)提供能量,是整個(gè)系統(tǒng)工作的基礎(chǔ),具有極其重要的地位,但卻往往被忽略。如果電源系統(tǒng)處理得好,整個(gè)系統(tǒng)的故障往往減少了一大半。考慮因素:輸出的電壓、電流、功率;輸入的電壓、電流;安全因素;電池兼容和電磁干擾;體積限制;功耗限制;成本限制。電源模塊的選擇及電路設(shè)計(jì)為L(zhǎng)CD屏及USB接口等供電電源轉(zhuǎn)換模塊為I/O供電S3C44B0X的內(nèi)核6.1.3時(shí)鐘電源管理與時(shí)鐘源的設(shè)計(jì)

1.時(shí)鐘源的設(shè)計(jì)微處理器X1X2CCXtal使用內(nèi)部振蕩器使用外部時(shí)鐘源微處理器X1X2CClock可以使用穩(wěn)定的時(shí)鐘信號(hào)源,如有源晶振等。S3C44B0X的時(shí)鐘電路連接外部晶振

時(shí)鐘源的選擇

2.時(shí)鐘與電源管理概述1.時(shí)鐘的作用作為CPU及外設(shè)定時(shí)與同步信號(hào)。

S3C44B0X內(nèi)部的時(shí)鐘發(fā)生器可以產(chǎn)生CPU和外設(shè)所需要的時(shí)鐘信號(hào)。

S3C44B0X的時(shí)鐘電源管理模塊集中管理時(shí)鐘脈沖的發(fā)生與電源。

時(shí)鐘管理2.時(shí)鐘發(fā)生器的組成外部晶振外部時(shí)鐘鎖相環(huán)電路PLL輸出頻率供給CPU的主頻

電源管理S3C44B0X的電源管理方案有五種:正常模式(Normalmode)低速模式(Slowmode)空閑模式(Idlemode)停止模式(Stopmode)LCD的SL空閑模式(SLIdlemode)3.時(shí)鐘及電源管理的特殊功能寄存器

與時(shí)鐘發(fā)生器及電源管理有關(guān)的特殊功能寄存器包括時(shí)鐘控制寄存器、時(shí)鐘低速控制寄存器和鎖時(shí)計(jì)數(shù)寄存器等。

PLL控制寄存器一、PLLCON:控制PLL分頻,決定PLL輸出頻率。位19:12(8位)11:10(2位)9:4(6位)3:2(2位)1:0(2位)PLLCONMDIV保留PDIV保留SDIV含義主分頻控制無(wú)意義預(yù)分頻控制無(wú)意義分頻后控制初始值0x380x0800二、參數(shù)的范圍:

MDIV=0~255;PDIV=0~63,SDIV=0~3三、PLL輸出頻率:fpllo=(m×fin)/(p×2s)

其中:m=MDIV+8,p=PDIV+2,s=SDIV

PLL參數(shù)選擇原則:(1)fpllo×2s<170MHz且S的值應(yīng)該盡可能的大(2)1≤fin/p<2(3)20MHz<fpllo<66MHz

PLL值示例1已知:fin=20MHz,MDIV=100,PDIV=14,SDIV=2,求fpllo解:m=MDIV+8=108,p=PDIV+2=16,s=SDIV=2,則:PLL輸出頻率:fpllo=(m×fin)/(p×2s)=108×20/(16×4)≈33.75MHz

PLL值示例2已知:fin=11.0592MHz,fpllo=50MHz試確定PLLCON的值。解:由原則之一:1≤fin/p<2,知11.0592/2<p≤11.0592,可取值6~11(整數(shù))P=6時(shí),PDIV=p-2=4=000100由原則之二:fpllo×2s<170MHz,即2S<170/50≈3.4∴s=1,2S=2,SDIV=1=0150MHz=m×11.0592MHz/(6×2)m=50×48/11.0592=54.25取54,因此MDIV=m-8=54-8=46=2EH=00101110因此PLLCON=00101110000001000001=0x2E041

作業(yè)現(xiàn)場(chǎng)做(1)本題p取7,8,9,10,11PLLCON=?(2)本題fin=33MHz,試求PLLCON的值

時(shí)鐘控制寄存器一、時(shí)鐘控制寄存器CLKCON

決定其它各組件的時(shí)鐘。CLKCON共15位,控制IIS、IIC、ADC、RTC、GPIO、UART、DMA、LCD、PWM等組件的時(shí)鐘允許。二、時(shí)鐘控制寄存器的格式

CLKCON各位的含義如表6-75所示。CLKCON位名稱(chēng)位描述初始值IIS14控制ISS時(shí)鐘0=禁止;1=允許1IIC13控制I2C時(shí)鐘0=禁止;1=允許1ADC12控制ADC時(shí)鐘0=禁止;1=允許1RTC11控制RTC時(shí)鐘0=禁止;1=允許1GPIO10控制GPIO時(shí)鐘0=禁止;1=允許EINT[7:4]中斷1UART19控制UART1時(shí)鐘0=禁止;1=允許1UART08控制UART0時(shí)鐘0=禁止;1=允許1BDMA0,17控制BDMA0,1時(shí)鐘0=禁止;1=允許1LCDC6控制LCD時(shí)鐘0=禁止;1=允許1SIO5控制SIO時(shí)鐘0=禁止;1=允許1ZDMA04控制ZDMA時(shí)鐘0=禁止;1=允許1PWMTIMER3控制PWM定時(shí)器時(shí)鐘0=禁止;1=允許1IDLE2控制進(jìn)入IDLE模式0=禁止;1=允許進(jìn)入IDLE模式0SL_IDLE1控制進(jìn)入SL_IDLE模式0=禁止;1=允許進(jìn)入SL_IDLE0STOP0控制進(jìn)入停止模式0=禁止;1=進(jìn)入停止模式0

時(shí)鐘低速控制寄存器時(shí)鐘低速控制寄存器CLKSLOW控制時(shí)鐘在低速模式下開(kāi)關(guān)PLL、低速分頻系數(shù)以及低速控制位。位543:0CLKSLOWPLL_OFFSLOW_BITSLOW_VAL含義關(guān)閉PLL0=開(kāi)PLL1=關(guān)PLL(僅限SLOW_BIT=1關(guān)閉)低速控制位0:fout=fpllo1:fout=fin(2×SLOW_VAL);SLOW_VAL>0fout=fin;SLOW_VAL=0低速分頻值4位編碼決定SLOW_BIT=1時(shí)低速分頻的值初始值000x09

鎖時(shí)計(jì)數(shù)寄存器鎖時(shí)計(jì)數(shù)寄存器CLKTIME存放PLL鎖時(shí)的計(jì)數(shù)值。共12位。位11:0位名稱(chēng)LTIMECNT含義PLL鎖時(shí)計(jì)數(shù)值初始值0x9應(yīng)用中時(shí)鐘的設(shè)定

頭文件.h中的宏定義#defineFIN8000000#defineMCLK64000000#if(MCLK==64000000)#defineM_DIV(0x38)#defineP_DIV(0x2)#defineS_DIV(0x1)#elif(MCLK==60000000)#defineM_DIV(0x34)#defineP_DIV(0x3)#defineS_DIV(0x1)#endif在啟動(dòng)代碼.s文件中對(duì)PLLCON值的加載。ldr r0,=PLLCON /*temporarysettingofPLL*/ldr r1,=((M_DIV<<12)+(P_DIV<<4)+S_DIV)/*Fin=8MHz,Fout=64MHz*/str r1,[r0]6.1.4復(fù)位電路設(shè)計(jì)與模式選擇

1.復(fù)位電路的作用負(fù)責(zé)將處理器初始化為某個(gè)確定的狀態(tài)。2.S3C44B0X的復(fù)位

復(fù)位引腳為nRESET,至少保持4個(gè)MCLK時(shí)鐘周期的低電平,才能復(fù)位。接口設(shè)計(jì)之

復(fù)位電路設(shè)計(jì)與模式選擇(3)OM1=0且OM0=1選擇16位數(shù)據(jù)寬度

大小端格式選擇及數(shù)據(jù)寬度選擇連接電路大端格式

小端格式S3C44B0X的數(shù)據(jù)存儲(chǔ)模式有大端和小端的選擇,由引腳ENDIAN決定。[OM1:OM0]啟動(dòng)FLASH的數(shù)據(jù)寬度。6.1.5存儲(chǔ)器組件與接口模塊

嵌入式系統(tǒng)使用的存儲(chǔ)器有多種類(lèi)型,主要包括Flash、EPROM、SDRAM以及SRAM等,為滿足不同類(lèi)型的存儲(chǔ)器對(duì)不同速度、不同類(lèi)型、不同總路線寬度等的存儲(chǔ)器的管理和控制,存儲(chǔ)控制組件是必不可少的。正是存儲(chǔ)控制器為片外存儲(chǔ)器訪問(wèn)提供必要的控制信號(hào),管理著片外存儲(chǔ)部件。不同存儲(chǔ)器組織的

存儲(chǔ)器地址線與系統(tǒng)地址總線的連接表6.6S3C44B0X不同存儲(chǔ)器組織的存儲(chǔ)器地址線與系統(tǒng)地址總線的連接存儲(chǔ)器地址線8位存儲(chǔ)器組織下的系統(tǒng)地址總線16位存儲(chǔ)器組織下的系統(tǒng)地址總線32位存儲(chǔ)器組織下的系統(tǒng)地址總線A0A0A1A2A1A1A2A3A2A2A3A4A3A3A4A5::::Am-1Am-1Am-2Am-3存儲(chǔ)器組件中的

特殊功能寄存器之一

返回

總線寬度與等待控制寄存器—BWSCONSTi寫(xiě)高/低字節(jié)使能:1=使能;0=禁止(表示SRAM映射在Banki時(shí)寫(xiě)高/低字節(jié)使能)WSi等待:1=等待;0=禁止等待(表示SRAM映射在Banki時(shí)等待)DWi總線寬度:00=8位,01=16位,10=32位,11=不用DW0為Bank0的寬度:00=8位,01=16位,10=32位,11=不用(DW0只讀,不可寫(xiě))ENDIAN大小端模式:0=小端模式;1=大端模式存儲(chǔ)器組件中的

特殊功能寄存器之二

返回

內(nèi)存通道控制寄存器—BANKCONi存儲(chǔ)器類(lèi)型16:1514:1312:1110:87:65:4321:0ROM或SRAMMT=00TacsTcosTaccTochTcahTacpPMCFPDRAM或EDODRAMMT=01或10TrcdTcasTcpCANSDRAMMT=11TrcdCAN決定BANK6、7的類(lèi)型nGCSi選擇之前地址時(shí)鐘個(gè)數(shù)0,1,2,4分頁(yè)模式配置1,4,8,16個(gè)數(shù)據(jù)訪問(wèn)時(shí)鐘個(gè)數(shù)1,2,3,4,6,8,10,14保持nOE時(shí)鐘個(gè)數(shù)0,1,2,4,nGCSi選擇前的保持時(shí)鐘個(gè)數(shù)0,1,2,4RAS到CAS的延時(shí)時(shí)鐘個(gè)數(shù)1,2,3,4頁(yè)訪問(wèn)周期(時(shí)鐘個(gè)數(shù))2,3,4,6CAS脈沖寬度(時(shí)鐘個(gè)數(shù))1,2CAS預(yù)充電時(shí)間(時(shí)鐘個(gè)數(shù))1,2列地址位數(shù)8,9,10,11位選擇nOE時(shí)鐘個(gè)數(shù)0,1,2,4,RAS到CAS的延時(shí)時(shí)間1,2,3,4存儲(chǔ)器組件中的

特殊功能寄存器之三

返回

刷新控制寄存器—REFRESH232221:2019:1817:1615:121110:0REFENTREFMDTrpTrcTchr000RefreshCounterREFEN刷新使能:0=禁止刷新,1=刷新

刷新模式:0=CBR(CASbeforeRAS)/自動(dòng)刷新

1=自刷新(控制信號(hào)為電平)

行預(yù)充電時(shí)間DRAM:00=1.5個(gè)時(shí)鐘01=2.5個(gè)時(shí)鐘10=3.5個(gè)時(shí)鐘11=4.5個(gè)時(shí)鐘SDRAM:00=2個(gè)時(shí)鐘01=3個(gè)時(shí)鐘 10=4個(gè)時(shí)鐘11=不支持SDRAMRC最小時(shí)間:00=4個(gè)時(shí)鐘01=5個(gè)時(shí)鐘10=6個(gè)時(shí)鐘11=7個(gè)時(shí)鐘CAS保持時(shí)間(DRAM):

00=1個(gè)時(shí)鐘01=2個(gè)時(shí)鐘

10=3個(gè)時(shí)鐘11=4個(gè)時(shí)鐘刷新計(jì)數(shù)值:刷新周期=(211-刷新計(jì)數(shù)值+1)/MCLK存儲(chǔ)器組件中的

特殊功能寄存器之四

返回

Bank容量寄存器—BANKSIZE在SDRAM訪問(wèn)周期SCLK使能位:0=禁止,1=允許。BK76MAPBANK6/7存儲(chǔ)器容量大小:000=32M100=2M101=4M 110=8M432:0SCLKEN0BK76MAP存儲(chǔ)器組件中的

特殊功能寄存器之五

返回

SDRAM模式設(shè)置寄存器—MRSRB6和MRSRB711:1098:76:432:0保留WBLTMCLBTBLWBL(writeburstlength)寫(xiě)突發(fā)脈沖長(zhǎng)度:0為推薦值TM(Testmode)測(cè)試模式選擇:00:由模式寄存器設(shè)置01,10,11:保留

CL(CASlatency)CAS發(fā)送時(shí)鐘000=1個(gè)時(shí)鐘 010=2個(gè)時(shí)鐘011=3個(gè)時(shí)鐘 其它=保留BT(Bursttype)突發(fā)類(lèi)型:0:順序(推薦)1:未用(Burstlength)突發(fā)長(zhǎng)度:000:1,其余未用存儲(chǔ)器接口電路設(shè)計(jì)及應(yīng)用

S3C44B0X內(nèi)部沒(méi)有存儲(chǔ)器,因此必須采用總線方式擴(kuò)展外部存儲(chǔ)器,包括程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,此處主要介紹擴(kuò)展外部存儲(chǔ)器的方法。NORFlashNandFlashFlash典型Flash芯片及與S3C44B0的連接程序存儲(chǔ)器采用SST39VF160,它是1M*16位的Flash存儲(chǔ)器芯片。

Flash的地址范圍為0x00000000~0x001FFFFF

典型SDRAM芯片及與S3C44B0的連接

SDRAMHY57V651620B內(nèi)部有4個(gè)1M×16的存儲(chǔ)器陣列,所以容量為211*2*16=222*16=4M*16=8MB。SDRAM必須放到BANK6開(kāi)始的區(qū)域。

SDRAM地址范圍為0x0C000000~0x0C7FFFFF。13個(gè)存儲(chǔ)控制寄存器的配置示例6.1.6JTAG接口電路設(shè)計(jì)1.

ARM公司提供的標(biāo)準(zhǔn)20腳JTAG仿真調(diào)試接口電路,芯片內(nèi)部有JTAGCORE。2.S3C44B0X通過(guò)外部JTAG/ICE端口支持ARM標(biāo)準(zhǔn)的嵌入式在線仿真,共有四個(gè)管腳:3.JTAG接口電路

TMS:測(cè)試模式選擇TDI:測(cè)試數(shù)據(jù)輸入TDO:測(cè)試數(shù)據(jù)輸出TCK:測(cè)試時(shí)鐘6.2端口組件原理及應(yīng)用

1.處理器通過(guò)I/O口和外圍硬件連接;

2.ARM芯片的I/O口通常都是和其他引腳復(fù)用的;

3.熟悉I/O口的功能,通過(guò)特殊功能寄存器的配置對(duì)I/O口進(jìn)行編程;

4.S3C44B0有71個(gè)通用可編程多功能輸入/輸出引腳,共7類(lèi)端口,如下所示:返回端口組件之

端口功能

一、雙功能端口

A,B、D端口具有兩種功能二、三功能端口

C,E、G端口具有三種功能三、四功能端口

F端口具有四種功能返回端口組件之

端口寄存器

每個(gè)端口都可以通過(guò)軟件設(shè)置來(lái)滿足各種各樣的系統(tǒng)設(shè)置和設(shè)計(jì)要求。每個(gè)端口的功能通常都要在主程序開(kāi)始前被定義。如果一個(gè)引腳的多功能沒(méi)有使用,那么這個(gè)引腳將被設(shè)置為I/O端口。在引腳配置以前,需要對(duì)引腳的初始化狀態(tài)進(jìn)行設(shè)定來(lái)避免一些問(wèn)題的出現(xiàn)。GPIOIISDIEINT5GPG5引腳配置引腳功能選擇使用示例

S3C44B0微控制器的引腳一般是多個(gè)功能復(fù)用,但是同一引腳在同一引腳在同一時(shí)刻只能使用其中一個(gè)功能,這可以通過(guò)設(shè)置PCONx寄存器來(lái)選擇。通過(guò)PCONG控制引腳功能端口組件之

端口寄存器(P49)

1.端口配置寄存器:PCONA~PCONG

決定A~G各相應(yīng)端口每個(gè)引腳的功能。2.端口數(shù)據(jù)寄存器:PDATA~PDATG

寄存I/O端口的數(shù)據(jù)。3.端口上拉寄存器:PUPC~PUPG

決定端口是否內(nèi)部接通上拉電阻。

0=上拉;1=禁止4.特殊上拉電阻控制寄存器:SPUPR

決定對(duì)數(shù)據(jù)總線引腳是否內(nèi)部接上拉電阻。

0=上拉;1=禁止返回例題:例1:設(shè)置A端口均為輸出端口,并設(shè)置PGA4,PGA6為1,其他引腳均為0;

答案:PCONA=0x0;PDATA=0x50;例題:例2:設(shè)置C端口均為數(shù)據(jù)總線,并讀取數(shù)據(jù)總線的值,當(dāng)值為0x80時(shí),讓變量i=0,否則i=1;答案:PCONC=0xAAAAAAAA;if(PDATC==0x80)i=0;elsei=1;練習(xí)1.設(shè)置D端口的PD0~PD3分別為VD0~VD3功能,其他D端口為輸出引腳,則PCOND=?2.設(shè)置G端口的PG6和PG7分為EINT6和EINT7,PG1為輸出端口,輸出值為1,其他為輸入端口,并且輸出端口使能上拉電阻,其他禁止,則PCONG=?,PUPG=?,PDATG=?簡(jiǎn)易鍵盤(pán)接口應(yīng)用(查詢(xún)方式)端口初始化及簡(jiǎn)單鍵盤(pán)I/O方式處理匯編程序:PCONGequ0x01D20040 ;G口配置寄存器地址 PDATGequ0x01D20044 ;G口數(shù)據(jù)寄存器地址PUPGequ0x01D20048 ;G口上拉電阻寄存器地址 MOVR0,#0 LDRR1,=PCONG STRHR0,[R1];GPG口為輸入端口 MOVR1,PUPG STRBR0,[R1]

;GPG口內(nèi)部上拉 LDRR0,=PDATG LDRR1,[R0];取鍵值 ANDR1,#0x0FC;提取GP2~GP7 CMPR1,#0x0FC BEQLNOKEY CMPR1,#0x0F8 BEQLKEY1 CMPR1,#0x0F4 BEQLKEY2 :LNOKEYLKEY1LKEY2 :此處沒(méi)有消抖處理,如何消抖?鍵盤(pán)接口C語(yǔ)言代碼voidPortInit(void){//端口初始化函數(shù),本函數(shù)只針對(duì)圖6.17電路進(jìn)行了鍵盤(pán)初始化

rPCONG=rPCONG&0xf;//設(shè)置PG2~PG7為輸入功能rPUDG=rPUDG|0xfC; //因?yàn)殡娐分蠵G2~PG7端口已接外部上拉,所以?xún)?nèi)部上拉可不使用}uint8GetKey(void)//讀按鍵程序{KeyValue=0;if((rPDATG&(1<<2))==0)//判斷KEY1鍵是否按下

{longdelay(3);//延時(shí)函數(shù),用于鍵盤(pán)消抖

if((rPDATG&(1<<2))==0)//再次判斷KEY1鍵是否按下

KeyValue=1;}elseif((rPDATG&(1<<3))==0)//判斷KEY2鍵是否按下

{longdelay(3);if((rPDATG&(1<<3))==0)KeyValue=2;}。。。。。。

returnKeyValue;}6.3中斷組件原理及應(yīng)用

中斷處理過(guò)程中斷的定義是什么?什么是中斷?返回什么是中斷服務(wù)程序在響應(yīng)一個(gè)特定中斷的時(shí)候,內(nèi)核會(huì)執(zhí)行一個(gè)函數(shù),該函數(shù)叫做中斷處理程序(interrupthandler)或中斷服務(wù)程序(interruptserviceroutine(ISR))。產(chǎn)生中斷的每個(gè)設(shè)備都有相應(yīng)的中斷處理程序。例如,由一個(gè)函數(shù)專(zhuān)門(mén)處理來(lái)自系統(tǒng)時(shí)鐘的中斷,而另外一個(gè)函數(shù)專(zhuān)門(mén)處理由鍵盤(pán)產(chǎn)生的中斷。S3C44B0X中斷控制1.中斷模式

FIQ模式和IRQ模式矢量中斷模式2.CPSR的F位和I位

1:表示不接受中斷請(qǐng)求;

0:表示接受中斷請(qǐng)求。

中斷源及中斷向量一、中斷源共有30個(gè)中斷源,其中:(1)26個(gè)中斷源是單獨(dú)的直接接到中斷控制器上(2)4個(gè)外部中斷源(EINT4/EINT5/EINT6/EINT7)是通過(guò)邏輯或之后加到中斷控制器上的另外兩個(gè)UART0/1錯(cuò)誤中斷也是一個(gè)中斷控制器。二、中斷向量各中斷源及向量地址如表6.9所示。返回向量中斷控制器(VIC)向量中斷控制器概述

ARM7TDMI內(nèi)核具有兩個(gè)中斷輸入,分別為IRQ中斷和FIQ中斷。但是芯片內(nèi)外部有許多中斷源,最多可以有30個(gè)中斷輸入請(qǐng)求。向量中斷控制器的作用就是允許哪些中斷源可以產(chǎn)生中斷、可以產(chǎn)生哪類(lèi)中斷、產(chǎn)生中斷后執(zhí)行哪段服務(wù)程序。ARM7TDMIIRQFIQVIC中斷請(qǐng)求輸入1中斷請(qǐng)求輸入30...6.3.2中斷功能控制寄存器

1.中斷控制寄存器

2.中斷掛起寄存器

3.中斷模式寄存器

4.中斷屏蔽寄存器

5.中斷服務(wù)掛起寄存器

6.外部中斷控制寄存器

7.外部中斷請(qǐng)求寄存器

中斷組件之一

中斷控制寄存器返回中斷控制寄存器INTCON(4位): 決定IRQ和FIQ中斷是否允許。格式:位3210SPUPR保留VIF說(shuō)明00=矢量中斷模式1=非矢量中斷模式0=IRQ中斷允許1=IRQ中斷禁止0=FIQ中斷允許1=FIQ中斷禁止初始值0111地址:0x01E00000初值:0x07(IRQ和FIQ全部禁止中斷)示例:設(shè)定S3C44B0處理器的IRQ中斷允許,采用矢量中斷模式,不允許FIQ中斷,則INTCON=?

0x01

中斷組件之二

中斷掛起寄存器返回INTPND(26位,表6-62),指示中斷請(qǐng)求狀態(tài)位名稱(chēng)位位名稱(chēng)位含義初始值EINT025INT_TIMER1120=無(wú)請(qǐng)求;1=有請(qǐng)求全為0EINT124INT_TIMER211EINT223INT_TIMER310EINT322INT_TIMER49EINT4/5/6/721INT_TIMER58INT_TICK20INT_URXD07INT_ZDMA019INT_URXD16INT_ZDMA118INT_IIC5INT_BDMA017INT_SIO4INT_BDMA116INT_UTXD13INT_WDT15INT_UTXD02INT_UERR0/114INT_RTC1INT_TIMER013INT_ADC0示例:查詢(xún)外部中斷3是否有中斷請(qǐng)求,應(yīng)該使用什么判斷語(yǔ)句?答案:if((INTPND&0x400000)!=0)

中斷組件之三

中斷模式寄存器返回

INTMOD(26位):設(shè)置26個(gè)中斷源中斷處于IRQ還是FIQ模式。位名稱(chēng)位位名稱(chēng)位含義EINT025INT_TIMER1120=IRQ模式;1=FIQ模式EINT124INT_TIMER211EINT223INT_TIMER310EINT322INT_TIMER49EINT4/5/6/721INT_TIMER58INT_TICK20INT_URXD07INT_ZDMA019INT_URXD16INT_ZDMA118INT_IIC5INT_BDMA017INT_SIO4INT_BDMA116INT_UTXD13INT_WDT15INT_UTXD02INT_UERR0/114INT_RTC1INT_TIMER013INT_ADC0示例:設(shè)置S3C44B0處理器中的定時(shí)器0為快速中斷模式,其余全為普通中斷,則INTMOD=?0x1<<13

中斷組件之四

中斷屏蔽寄存器返回中斷屏蔽寄存器INTMSK(27位): 決定26個(gè)中斷源中斷是否允許中斷響應(yīng)。各位:(1)25~0位:1=禁止中斷0=允許中斷(2)26位(全局屏蔽):1=禁止0=允許必須滿足:全局允許且各自允許方可進(jìn)入中斷響應(yīng)!位名稱(chēng)位位名稱(chēng)位含義保留27INT_TIMER013

0=服務(wù)允許;1=屏蔽Global26INT_TIMER112EINT025INT_TIMER211EINT124INT_TIMER310EINT223INT_TIMER49EINT322INT_TIMER58EINT4/5/6/721INT_URXD07INT_TICK20INT_URXD16INT_ZDMA019INT_IIC5INT_ZDMA118INT_SIO4INT_BDMA017INT_UTXD13INT_BDMA116INT_UTXD02INT_WDT15INT_RTC1INT_UERR0/114INT_ADC0示例:設(shè)置使定時(shí)器2中斷服務(wù)允許,其它中斷服務(wù)屏蔽,則INTMSK=

?

1<<11×(1<<26)|(1<<11)×正確答案:~((1<<26)|(1<<11))

中斷組件之五

IRQ/FIQ中斷服務(wù)及清除寄存器返回中斷服務(wù)掛起寄存器(26位):I_ISPR只讀寄存器,反映26個(gè)中斷源中斷是否被響應(yīng)。各位:1=中斷被響應(yīng)0=中斷未被響應(yīng)中斷清除寄存器(26位):I_ISPC和F_ISPC

清除26個(gè)中斷源中某一中斷服務(wù)(結(jié)束)。各位:1=清除中斷請(qǐng)求0=不變

中斷組件之六

外部中斷控制寄存器返回外部中斷控制寄存器EXTINT(12位): 決定8個(gè)外部中斷源(EINT0-7)的觸發(fā)方式每個(gè)中斷源3位:

位位名稱(chēng)描述[30:28]EINT7000=低電平觸發(fā)001=高電平觸發(fā)01X=下降沿觸發(fā)10X=上升沿觸發(fā)11X=雙邊沿觸發(fā)

[26:24]EINT6[22:20]EINT5[18:16]EINT4[14:12]EINT3[10:8]EINT2[6:4]EINT1[2:0]EINT0

中斷組件之七

外部中斷請(qǐng)求寄存器返回外部中斷請(qǐng)求寄存器EXTINTPND(4位):

記錄4個(gè)外部中斷源(EINT4-7)的中斷請(qǐng)求狀態(tài): 0=無(wú)中斷申請(qǐng)1=有中斷申請(qǐng)位3210EXTINTPNDEXINTPND3EXINTPND2EXINTPND1EXINTPND0含義1=EINT7有中斷同時(shí)INTPND21=11=EINT6有中斷同時(shí)INTPND21=11=EINT5有中斷同時(shí)INTPND21=11=EINT4有中斷同時(shí)INTPND21=1示例:如何判斷外部中斷7有中斷產(chǎn)生?

if((EXTINTPND&0x8))!=0S3C44B0X中斷控制器應(yīng)用①②④⑤⑥③Eint4567IsrpISR_EINT4567Eint4567Isr⑤LDRPC,[PC,#-0xff0]0x000000000xFFFFFFFF用戶程序中斷服務(wù)程序異常向量表IRQ中斷的設(shè)計(jì)實(shí)例實(shí)例:設(shè)置外部中斷4產(chǎn)生向量IRQ中斷后,執(zhí)行中斷服務(wù)程序“Eint4567Isr()”。...rPCONG=0xffff;rINTMOD=0x0; rINTCON=0x1;rINTMSK=~(1<<26|1<<21);pISR_EINT4567=(int)Eint4567Isr;rEXTINT=rEXTINT|0x22220020;rI_ISPC|=BIT_EINT4567;rEXTINTPND=0xf;...C代碼:1.設(shè)置引腳連接模塊,設(shè)置端口為外部中斷功能;步驟:2.設(shè)置所有中斷為IRQ中斷并允許IRQ中斷;3.打開(kāi)全局中斷使能和外部中斷4567使能;4.將外部中斷4的中斷服務(wù)程序?qū)懭雽?duì)應(yīng)向量地址寄存器中;6.清除外部中斷4的標(biāo)志(1)(2)(3)(4)(6)(6)(2)5.設(shè)置中斷觸發(fā)方式(5)0x000000000xFFFFFFFF用戶程序中斷服務(wù)程序異常向量表1.正在執(zhí)行用戶程序;①2.外部中斷4發(fā)生中斷;②3.VIC硬件將中斷服務(wù)程序地址裝入pISR_EINT4567寄存器;④4.程序跳轉(zhuǎn)至異常向量表中IRQ入口0x0018處;5.執(zhí)行指令跳轉(zhuǎn)至pISR_EINT4567寄存器中的中斷服務(wù)地址;⑤⑥6.中斷服務(wù)程序執(zhí)行完畢,返回被中斷的用戶程序繼續(xù)執(zhí)行被中斷的代碼。圖示IRQ中斷的發(fā)生過(guò)程③Eint4567Isr???pISR_EINT4567Eint4567Isr⑤LDRPC,[PC,#-0xff0]S3C44B0X中斷控制器應(yīng)用

有一嵌入式系統(tǒng)采用S3C44B0X處理器,系統(tǒng)的外部中斷連接如下圖所示,請(qǐng)針對(duì)此圖,要求KEY1鍵按下,二極管LED1點(diǎn)亮(函數(shù)LedOn()已知);KEY2鍵按下,二極管LED1熄滅(函數(shù)LedOff()已知);KEY3鍵按下LED1閃爍(LedShine()已知),寫(xiě)出外部中斷的相關(guān)程序片段。

S3C44B0X中斷控制器應(yīng)用編程外部中斷初始化函數(shù)#defineBIT_EINT1 (0x1<<24)#defineBIT_EINT4567(0x1<<21)#defineBIT_GLOBAL(0x1<<26)voidinit_Eint(void){rINTCON=0x1;//使能IRQ中斷rINTMOD=0x0;//選擇IRQ中斷模式

rINTMSK=~(BIT_GLOBAL|BIT_EINT4567|BIT_EINT1;

pISR_EINT4567=(int)Eint4567Isr;pISR_EINT1=(int)Eint1Isr;

rPCONG=rPCONG&(0x3<<2)&(0xf<<8);rPUPG=0x0;

rEXTINT=rEXTINT|(0x4<<4)|(0x2<<16)|(0x2<<20);rI_ISPC=rI_ISPC|BIT_EINT4567|BIT_EINT1;rEXTINTPND&=0x3;}S3C44B0X中斷控制器應(yīng)用編程中斷服務(wù)程序voidEint1Isr(void)//外部中斷1服務(wù)程序{ rI_ISPC&=BIT_EINT1; //清除掛起位LedShine();//LED1閃爍}voidEint1Isr(void)//外部中斷4/5/6/7服務(wù)程序{unsignedcharwhich_int;which_int=rEXTINTPND;rEXTINTPND=0xf; //清除EXTINTPND寄存器

rI_ISPC&=BIT_EINT4567; //清除掛起位if((which_int&0x1)!=0)//外部中斷4產(chǎn)生中斷

LedOn();if((which_int&0x2)!=0)//外部中斷5產(chǎn)生中斷

LedOff();}6.4UART組件原理及應(yīng)用 1.定義:UART(UniversalAsynchronousReceiver/Transmitter)通用異步收發(fā)器,用于控制計(jì)算機(jī)與串行設(shè)備的接口;2.S3C44B0X的UART單元提供兩個(gè)獨(dú)立的異步串行I/O口,每個(gè)通信口均可工作于中斷模式;3.最高傳輸速率115.2kbps;4.特性:可編程波特率,紅外發(fā)送/接收、一個(gè)開(kāi)始位、一個(gè)或兩個(gè)停止位、5/6/7/8位的數(shù)據(jù)寬度和奇偶校驗(yàn);5.組成:波特率發(fā)生器、接收器、發(fā)送器和控制單元

返回UART的硬件組成1.數(shù)據(jù)傳輸2.數(shù)據(jù)接收3.中斷請(qǐng)求的產(chǎn)生4.波特率的產(chǎn)生5.紅外模式操作同步和異步簡(jiǎn)單講:

同步是指:發(fā)送方發(fā)出數(shù)據(jù)后,等接收方發(fā)回響應(yīng)以后才發(fā)下一個(gè)數(shù)據(jù)包的通訊方式。

異步是指:發(fā)送方發(fā)出數(shù)據(jù)后,不等接收方發(fā)回響應(yīng),接著發(fā)送下個(gè)數(shù)據(jù)包的通訊方式。異步傳輸

異步傳輸是以字符為傳輸單位,每個(gè)字符都要附加1位起始位和1位停止位,以標(biāo)記一個(gè)字符的開(kāi)始和結(jié)束,并以此實(shí)現(xiàn)數(shù)據(jù)傳輸同步。所謂異步傳輸是指字符與字符(一個(gè)字符結(jié)束到下一個(gè)字符開(kāi)始)之間的時(shí)間間隔是可變的,并不需要嚴(yán)格地限制它們的時(shí)間關(guān)系。一個(gè)字符占用5~8位,具體取決于數(shù)據(jù)所采用的字符集。此外,還要附加1位奇偶校驗(yàn)位;發(fā)送端與接收端除了采用相同的數(shù)據(jù)格式,還應(yīng)當(dāng)采用相同的傳輸速率。典型的速率有:9600b/s、56kb/s、115.2kb/s等。

同步傳輸同步傳輸是以數(shù)據(jù)塊為傳輸單位。每個(gè)數(shù)據(jù)塊的頭部和尾部都要附加一個(gè)特殊的字符或比特序列,標(biāo)記一個(gè)數(shù)據(jù)塊的開(kāi)始和結(jié)束,一般還要附加一個(gè)校驗(yàn)序列(如16位或32位CRC校驗(yàn)碼),以便對(duì)數(shù)據(jù)塊進(jìn)行差錯(cuò)控制。所謂同步傳輸是指數(shù)據(jù)塊與數(shù)據(jù)塊之間的時(shí)間間隔是固定的,必須嚴(yán)格地規(guī)定它們的時(shí)間關(guān)系。

使用UART0通信需要兩個(gè)引腳,分別為:引腳名稱(chēng)類(lèi)型描述RxD0輸入串行輸入,接收數(shù)據(jù)TxD0輸出串行輸出,發(fā)送數(shù)據(jù)使用UART通信S3C44B0的I/O電壓為3.3V(可承受5V),連接時(shí)須注意電平的匹配。與PC機(jī)相連時(shí),由于PC機(jī)串口是RS232電平,所以連接時(shí)需要使用RS232轉(zhuǎn)換器。S3C44B0PC機(jī)串口232電平轉(zhuǎn)換TxD0RxD0TxD0RxD0S3C44B0其它通信設(shè)備TxD0RxD0TxD0RxD0

UART組件

UART的特殊功能寄存器UART線控制寄存器UART控制寄存器發(fā)送/接收狀態(tài)寄存器UART發(fā)送/接收(緩沖區(qū))寄存器UART波特率除數(shù)寄存器FIFO控制寄存器Modem控制寄存器UART錯(cuò)誤狀態(tài)寄存器FIFO狀態(tài)寄存器Modem狀態(tài)寄存器UART組件之一

UART線控制寄存器ULCON0和ULCON1:P11D0D1D2D3D4D5D6D70位6[5:3]2[1:0]功能紅外模式奇偶校驗(yàn)停止位數(shù)據(jù)位數(shù)停止位(1~2位)數(shù)據(jù)(5~8位)奇偶校驗(yàn)位(可選)起始位ULCON寄存器:

ULCON控制發(fā)送和接收數(shù)據(jù)幀的格式。TXDUART組件之一

UART線控制寄存器位6[5:3]2[1:0]功能紅外模式奇偶校驗(yàn)停止位數(shù)據(jù)位數(shù)數(shù)據(jù)位數(shù):這些位控制數(shù)據(jù)長(zhǎng)度。

00:5位字符長(zhǎng)度; 01:6位字符長(zhǎng)度;

10:7位字符長(zhǎng)度; 11:8位字符長(zhǎng)度;ULCON0和ULCON1:UART組件之一

UART線控制寄存器位6[5:3]2[1:0]功能紅外模式奇偶校驗(yàn)停止位數(shù)據(jù)位數(shù)ULCON0和ULCON1:停止位:控制每幀數(shù)據(jù)包含的停止位個(gè)數(shù)。

0:1位停止位; 1:2位停止位;UART組件之一

UART線控制寄存器位6[5:3]2[1:0]功能紅外模式奇偶校驗(yàn)停止位數(shù)據(jù)位數(shù)ULCON0和ULCON1:校驗(yàn)位:控制校驗(yàn)的使能和選擇。

0XX=無(wú)校驗(yàn)100=奇校驗(yàn)

101=偶校驗(yàn)110=校驗(yàn)位強(qiáng)置1111=校驗(yàn)位強(qiáng)清0

UART組件之一

UART線控制寄存器位6[5:3]2[1:0]功能紅外模式奇偶校驗(yàn)停止位數(shù)據(jù)位數(shù)紅外模式:是否選擇紅外模式。

0:正常模式1:紅外模式ULCON0和ULCON1:示例設(shè)置UART1為數(shù)據(jù)傳輸模式為7位數(shù)據(jù)位,1位停止位,偶校驗(yàn),正常模式,請(qǐng)問(wèn)對(duì)哪個(gè)寄存器設(shè)置?值為多少?位6[5:3]2[1:0]功能紅外模式奇偶校驗(yàn)停止位數(shù)據(jù)位數(shù)1001010ULCON1=0x2A

UART組件之二

UART控制寄存器UCON0和UCON1:位9876543:21:0UCON0UCON1發(fā)送中斷請(qǐng)求類(lèi)型接收中斷請(qǐng)求類(lèi)型接收超時(shí)中斷使能接收錯(cuò)誤中斷使能回送模式發(fā)送中止信號(hào)發(fā)送模式接收模式含義0=脈沖1=電平0=脈沖1=電平0=禁止1=允許0=禁止1=允許0=正常模式1=回送模式0=正常工作1=發(fā)中止信號(hào)00=禁止01=中斷請(qǐng)求10=BDMA0請(qǐng)求11=BDMA1請(qǐng)求00=禁止01=中斷請(qǐng)求10=BDMA0請(qǐng)求11=BDMA1請(qǐng)求示例:寄存器UCON0=0x245,表示什么意思?

UART組件之三

FIFO控制寄存器UFCON0和UFCON1:位7:65:43210UFCON0UFCON1發(fā)送FIFO觸發(fā)電平接收FIFO觸發(fā)電平保留發(fā)送FIFO復(fù)位接收FIFO復(fù)位FIFO使能含義00=空01=4字節(jié)10=8字節(jié)11=12字節(jié)00=4字節(jié)01=8字節(jié)10=12字節(jié)11=16字節(jié)0=正常1=發(fā)送FIFO復(fù)位0=正常1=發(fā)送FIFO復(fù)位0=FIFO禁止1=FIFO使能

UART組件之四

Modem控制寄存器UMCON0和UMCON1:位7:543:10UMCON0UMCON1保留000自動(dòng)流控制AFC保留000請(qǐng)求發(fā)送含義0=AFC禁止1=AFC允許若AFC允許該位不起作用若AFC禁止,則0=高電平(不激活nRTS)1=低電平(激活nRTS)

UART組件之五

發(fā)送/接收(緩沖區(qū))寄存器發(fā)送寄存器UTXH0和UTXH1接收寄存器URXH0和URXH1正是通過(guò)發(fā)送寄存器才將數(shù)據(jù)從UART0或UART1的TXD0或TXD1腳發(fā)送出去。外部經(jīng)RXD0或RXD1引腳送來(lái)的串行數(shù)據(jù)經(jīng)移位后存在URXH0或URXH1中。示例:從UART1口發(fā)送數(shù)據(jù)0x83,應(yīng)如何發(fā)送?

UART組件之六

UART錯(cuò)誤狀態(tài)寄存器UERSTAT0和UERSTAT1:返回位3210UERSTAT0UERSTAT1間隔中斷數(shù)據(jù)幀錯(cuò)誤奇偶錯(cuò)誤溢出錯(cuò)誤含義0=未收到中止信號(hào)1=收到中止信號(hào)0=接收無(wú)幀錯(cuò)誤1=接收數(shù)據(jù)幀錯(cuò)0=無(wú)奇偶校驗(yàn)錯(cuò)1=奇偶校驗(yàn)出錯(cuò)0=無(wú)溢出錯(cuò)1=溢出錯(cuò)誤

UART組件之七

FIFO狀態(tài)寄存器UFSTAT0和UFSTAT1:返回位15:10987:43:0UFSTAT0UFSTAT1保留發(fā)送FIFO滿接收FIFO滿發(fā)送FIFO計(jì)數(shù)器接收FIFO計(jì)數(shù)器含義無(wú)含義0=發(fā)送FIFO數(shù)據(jù)個(gè)數(shù)不超過(guò)15字節(jié)1=發(fā)送FIFO滿0=接收FIFO數(shù)據(jù)個(gè)數(shù)不超過(guò)15字節(jié)1=接收FIFO滿編碼表示發(fā)送FIFO數(shù)據(jù)數(shù)量(字節(jié)數(shù))編碼表示接收FIFO數(shù)據(jù)數(shù)量(字節(jié)數(shù))

UART組件之八

Modem狀態(tài)寄存器UMSTAT0和UMSTAT1:返回位43:10UMSTAT0UMSTAT1△CTS保留CTS含義0=CTS無(wú)變化1=CTS有變化無(wú)含義0=CTS未激活(nCTS引腳為高)1=CTS已激活(nCTS引腳為低)

UART組件之九

發(fā)送/接收狀態(tài)寄存器UTRSTAT0和UTRSTAT1:位210UTRSTAT0UTRSTAT1發(fā)送移位寄存器狀態(tài)發(fā)送緩沖器狀態(tài)接收緩沖器數(shù)據(jù)狀態(tài)含義0=發(fā)送寄存器非空1=發(fā)送寄存器為空0=緩沖寄存器非空1=緩沖寄存器為空0=完全為空,無(wú)數(shù)據(jù)1=接收緩沖寄存器中有數(shù)據(jù)示例:用何語(yǔ)句等待發(fā)送緩沖器為空?

UART組件之十

UART波特率除數(shù)寄存器UBRDIV0和UBRDIV1:存放波特率因子除數(shù)寄存器的值與波特率的關(guān)系:UBRDIVn=round_off(MCLK/(波特率×16))-1實(shí)用公式:UBRDIVn=INT(MCLK/(波特率×16)+0.5)-1

波特率除數(shù)計(jì)算示例題:某系統(tǒng)采用S3C44B0要求UART1的波特率為115200bps,主時(shí)鐘50MH時(shí)鐘,求UBRDIV1的值答案:UBRDIV1=26UART0應(yīng)用示例——操作流程設(shè)置引腳連接模塊將對(duì)應(yīng)IO連接到UART0設(shè)置串口工作模式設(shè)置串口波特率發(fā)送或接收數(shù)據(jù)檢查串口狀態(tài)字或等待串口中斷UART0應(yīng)用示例——初始化代碼UART初始化代碼:voidUART0_Init(intmclk,intbaud){if(mclk==0)mclk=MCLK;rPCONE=0x28;rULCON0=0x3;rUCON0=0x245;rUBRDIV0=((int)(mclk/16./baud+0.5)-1);

}mclk為CPU主頻,baud是波特率設(shè)置線控制寄存器設(shè)置控制寄存器,接收和發(fā)送根據(jù)波特率計(jì)算分頻值設(shè)置引腳連接模塊例如:設(shè)置UART0波特率為9600bps,則調(diào)用函數(shù)為,

UART0_Init(0,9600);UART0應(yīng)用示例——初始化代碼UART初始化代碼:voidUART0_Init(intmclk,intbaud){if(mclk==0)mclk=MCLK;rPCONE=0x28;rULCON0=0x3;rUCON0=0x245;rUBRDIV0=((int)(mclk/16./baud+0.5)-1);

}設(shè)置引腳連接模塊將對(duì)應(yīng)IO連接到UART0設(shè)置串口工作模式設(shè)置串口波特率發(fā)送或接收數(shù)據(jù)檢查串口狀態(tài)字或等待串口中斷UART0應(yīng)用示例——收發(fā)數(shù)據(jù)voidUART0_SendByte(uint8data){rUTXH0=data;while((rUTRSTAT0&0x2)==0);}uint8UART0_RcvByte(void){uint8rcv_data;while((rUTRSTAT0&0x01)==0);rcv_data=

rURXH0;return(rcv_data);}查詢(xún)方式發(fā)送一字節(jié)數(shù)據(jù):查詢(xún)方式接收一字節(jié)數(shù)據(jù):將要發(fā)送的一字節(jié)數(shù)據(jù)寫(xiě)入U(xiǎn)TXH0等待數(shù)據(jù)發(fā)送完畢等待數(shù)據(jù)到達(dá)從URXH0中讀出接收的數(shù)據(jù)返回接收的數(shù)據(jù)UART0應(yīng)用示例——收發(fā)字符串voidUART0_RcvString(char*string){charc;c=UART0_RcvByte();while((c!='\r'){*string++=c;c=UART0_RcvByte();}*string='\0';}發(fā)送字符串?dāng)?shù)據(jù):接收字符串?dāng)?shù)據(jù):voidUART0_SendString(char*string){while(*pt!='\0')Uart_SendByte(*pt++);}6.5DMA組件原理及應(yīng)用

一、DMA概述二、DMA特殊功能寄存器BDMA控制寄存器BDMA初始源/當(dāng)前源地址寄存器BDMA初始目標(biāo)/當(dāng)前目標(biāo)地址寄存器BMDA初始/當(dāng)前計(jì)數(shù)寄存器返回

DMA組件之

DMA組件概述1.S3C44B0內(nèi)部集成了4個(gè)通道的DMA控制器。(1)2個(gè)通用DMA控制器(ZDMA或GDMA)

連接SSB(三星系統(tǒng)總線)

ZDMA:從存儲(chǔ)器到存儲(chǔ)器,從存儲(chǔ)器到固定目標(biāo)的I/O設(shè)備,以及I/O設(shè)備到存儲(chǔ)器之間的數(shù)據(jù)傳輸。(2)2個(gè)橋DMA控制器(BDMA0和BDMA1)

連接SSB和SPB(外圍總線)間的接口層。BDMA0,BDMA1:用于存儲(chǔ)器到I/O或I/O到存儲(chǔ)器之間的數(shù)據(jù)傳輸。這里的I/設(shè)備即外設(shè)(SIO,IIS,UART等)。2.DMA的主要特點(diǎn)

在兩地自動(dòng)傳輸數(shù)據(jù)而無(wú)需CPU干涉。

ZDMA最重要的特性:OnTheFly模式。

DMA組件之一

BMDA的控制寄存器BDCON0和BDCON1:位7:65:43:21:0BDCON0BDCON1保留DMA通道的狀態(tài)STE禁止/使能外部/內(nèi)部DMA請(qǐng)求QDS軟件命令CMD含義無(wú)00=準(zhǔn)備好01=沒(méi)有終止計(jì)數(shù)10=終止計(jì)數(shù)11=未用00=使能其它=禁止00=無(wú)命令01=保留10=保留11=取消DMA操作

DMA組件之二

BMDA的初始源

/當(dāng)前源地址寄存器初始源地址寄存器BDISRC0和BDISRC1當(dāng)前源地址寄存器BDCSRC0和BDCSRC1位31:3029:2827:0BDISRC0,BDISRC1BDCSRC0,BDCSRC1DST數(shù)據(jù)類(lèi)型DAL載入地址方向ISADDR初始源地址CSADDR當(dāng)前源地址含義00=字節(jié)(8位)01=半字(16位)10=字(32位)11=未用00=未用01=增加10=減少11=固定28位相應(yīng)地址思考:DMA尋址范圍?

DMA組件之三

BMDA的初始源

/當(dāng)前目標(biāo)地址寄存器初始目標(biāo)地址寄存器BDIDES0和BDIDES1當(dāng)前目標(biāo)地址寄存器BDCDES0和BDCDES1位31:3029:2827:0BDIDES0,BDIDES1BDCDES0,BDCDES1TMD傳輸方向模式DAS地址方向IDADDR初始目標(biāo)地址CDADDR當(dāng)前目標(biāo)地址含義00=保留01=M→IO(從外部存儲(chǔ)器到內(nèi)部外設(shè))10=IO→M(從內(nèi)部外設(shè)到外部存儲(chǔ)器)11=IO→IO(從內(nèi)部外設(shè)到外部外設(shè))00=未用01=增加10=減少11=固定28位相應(yīng)地址

DMA組件之四

BMDA的初始

/當(dāng)前計(jì)數(shù)器初始目標(biāo)地址寄存器BDICNT0和BDICNT1當(dāng)前目標(biāo)地址寄存器BDCCNT0和BDCCNT1位31:3029:2827:2625:2423:22212019:0BDICNT0BDICNT1BDCCNT0BDCCNT1QSCDMA請(qǐng)求源保留保留保留INS中斷模式設(shè)置AR當(dāng)DMA計(jì)到0時(shí)自動(dòng)加載和自動(dòng)開(kāi)始ENDMA硬件使能ICNT/CCNTBDMAn的傳輸計(jì)數(shù)器含義00=保留01=IIS10=UART11=SIO00握手模式01單元傳輸模式00不支持on-the-fly模式00=查詢(xún)模式01=未用10=傳輸時(shí)產(chǎn)生中斷11=終止計(jì)數(shù)時(shí)產(chǎn)生中斷0=禁止1=允許0=禁止1=允許以字節(jié)為單位時(shí),每次減1;以半字為單位時(shí),每次減2以字為單位時(shí),每次減46.6PWM定時(shí)器原理及應(yīng)用

一、PWM概述二、PWM特殊功能寄存器定時(shí)器配置寄存器0定時(shí)器配置寄存器1定時(shí)控制寄存器定時(shí)器觀察寄存器6.6.1PWM功能控制

返回

PWM組件之

PWM概述及組成PWM(PulseWidthModulation):脈沖寬度調(diào)制器。

S3C44B0X有6個(gè)16位定時(shí)器,每個(gè)定時(shí)器可以按照中斷模式或DMA模式工作。定時(shí)器0,1,2,3和4具有PWM功能并具有輸出功能。定時(shí)器5是一個(gè)內(nèi)部定時(shí)器不具有對(duì)外輸出口線。2.PWM組成如圖所示。

PWM組件之一

定時(shí)器配置寄存器0TCFG0:決定T0~T5的預(yù)分頻系數(shù)等。位31:2423:1615:87:0TCFG0DZL死區(qū)長(zhǎng)度PRC2預(yù)分頻系數(shù)2PRC1預(yù)分頻系數(shù)1PRC0預(yù)分頻系數(shù)0含義8位確定死區(qū)長(zhǎng)度8位決定定時(shí)器4,5的預(yù)分頻器的值8位決定定時(shí)器3,2的預(yù)分頻器的值8位決定定時(shí)器1,0的預(yù)分頻器的值死區(qū):對(duì)于開(kāi)關(guān)設(shè)備,一個(gè)開(kāi)與另一個(gè)關(guān)之間的時(shí)間間隔。在死區(qū)中,不允許同時(shí)開(kāi)。

PWM組件之二

定時(shí)器配置寄存器1TCFG1:決定T0~T5的DMA請(qǐng)求及預(yù)分頻系數(shù)。位27:2423:2019:1615:1211:87:43:0TCFG1DMAMODEDMA請(qǐng)求通道MUX5選擇定時(shí)器5的MUX輸入MUX4選擇定時(shí)器4的MUX輸入MUX3選擇定時(shí)器3的MUX輸入MUX2選擇定時(shí)器2的MUX輸入MUX1選擇定時(shí)器1的MUX輸入MUX0選擇定時(shí)器0的MUX輸入含義0000=未選擇0001=定時(shí)器00010=定時(shí)器10011=定時(shí)器20100=定時(shí)器30101=定時(shí)器40110=定時(shí)器50111=保留0000=1/20001=1/40010=1/80011=1/1601XX=EXTCLK0000=1/20001=1/40010=1/80011=1/1601XX=TCLK0000=1/20001=1/40010=1/80011=1/1601XX=1/320000=1/20001=1/40010=1/80011=1/1601XX=1/320000=1/20001=1/40010=1/80011=1/1601XX=1/320000=1/20001=1/40010=1/80011=1/1601XX=1/32

PWM組件之三

定時(shí)器控制寄存器一、TCON功能:控制T0~T5的具體工作。包括:是否自動(dòng)重裝值、啟動(dòng)和停止、反轉(zhuǎn)輸出、死區(qū)使能等。二、各位含義如表6.29所示。

PWM組件之四定時(shí)器計(jì)數(shù)緩沖寄存器

與定時(shí)器比較寄存器一、定時(shí)器計(jì)數(shù)緩沖寄存器:TCNTB0為T(mén)0的定時(shí)計(jì)數(shù)緩沖寄存器TCNTB1為T(mén)1的定時(shí)計(jì)數(shù)緩沖寄存器TCNTB2為T(mén)2的定時(shí)計(jì)數(shù)緩沖寄存器TCNTB3為T(mén)3的定時(shí)計(jì)數(shù)緩沖寄存器TCNTB4為T(mén)4的定時(shí)計(jì)數(shù)緩沖寄存器TCNTB5為T(mén)5的定時(shí)計(jì)數(shù)緩沖寄存器存放T0~T5的計(jì)數(shù)值。二、定時(shí)器比較寄存器TCMPB0為T(mén)0的定時(shí)比較寄存器TCMPB1為T(mén)1的定時(shí)比較寄存器TCMPB2為T(mén)2的定時(shí)比較寄存器TCMPB3為T(mén)3的定時(shí)比較寄存器TCMPB4為T(mén)4的定時(shí)比較寄存器TCMPB5為T(mén)5的定時(shí)比較寄存器存入T0~T5的計(jì)數(shù)比較值。

PWM組件之五

定時(shí)器觀察寄存器定時(shí)器觀察寄存器:TCNTO0為T(mén)0的觀察寄存器TCNTO1為T(mén)1的觀察寄存器TCNTO2為T(mén)2的觀察寄存器TCNTO3為T(mén)3的觀察寄存器TCNTO4為T(mén)4的觀察寄存器TCNTO5為T(mén)5的觀察寄存器存放T0~T5的觀察值。6.6.2PWM定時(shí)器的應(yīng)用

1.PWM的作用

利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中?;赑WM的燈控原理及波形圖

2.PWM定時(shí)器產(chǎn)生方波的應(yīng)用執(zhí)行PWM操作之前,微處理器要求在軟件中完成以下工作:(1)設(shè)置提供調(diào)制方波的片上定時(shí)器/計(jì)數(shù)器的周期(2)在PWM控制寄存器中設(shè)置接通時(shí)間(3)啟動(dòng)定時(shí)器通過(guò)PWM控制器控制PWM輸出波形即可方便地控制蜂鳴器的發(fā)聲,

//輸出脈沖:頻率從4000HZ到14000HZ,使用2/3的占空比f(wàn)or(freq=4000;freq<14000;freq+=1000) { div=(MCLK/256/4)/freq;

rTCON=0x0; rTCNTB0=div; rTCMPB0=(2*div)/3;

rTCON=0xa; //手工裝載定時(shí)器的計(jì)數(shù)值

rTCON=0x9; //啟動(dòng)定時(shí)器

for(index=0;index<100000;index++); rTCON=0x0; //延時(shí)并停止定時(shí)器}3.PWM定時(shí)器的普通定時(shí)功能應(yīng)用定時(shí)中斷初始化函數(shù)#defineBIT_TIMER0(0x1<<13)voidtimer_init(void){

rINTMOD=0x0;rINTCON=0x1;rINTMSK=~(BIT_GLOBAL|BIT_TIMER0);pISR_TIMER0=(int)timer_Int;rTCFG0=255;rTCFG1=0x1;rTCNTB0=65535;rTCMPB0=12800;rTCON=0x19;}中斷服務(wù)程序voidtimer_Int(void){Uart_Printf(“Timeison!");rI_ISPC=BIT_TIMER0;}關(guān)閉定時(shí)voidtimer_close(void){pISR_TIMER0=NULL;rINTMSK=rINTMSK|BIT_TIMER0;rTCON=0x0;}6.7I2C組件原理及應(yīng)用

一、I2C總線控制器的組成二、I2C總線接口的操作模式三、I2C總線的特殊功能寄存器I2C總線控制寄存器I2C總線狀態(tài)寄存器I2C總線數(shù)據(jù)(移位)和地址寄存器6.7.1I2C總線控制器原理返回

I2C總線組件之

I2C總線接口工作模式S3C44B0XI2C總線接口有4種操作模式:主傳送模式、主接收模式、從傳送模式以及從接收模式。I2C總線操作時(shí)序1010a10a9a8R/只寫(xiě):011100SA0R/(SA0為該器件的引腳)只寫(xiě):011100SA0R/(SA0為該器件的引腳)從地址:070H讀:0A3H寫(xiě):0A2H

1010A2A1A0R/1010A2A1A0R/1010A2A1A0R/CAT1161/2內(nèi)嵌I2C總線、E2PROM、RESET、WDT功能的電源監(jiān)控器件PCF8576通用低復(fù)用率LCD驅(qū)動(dòng)器PCF8562帶32×4位RAM低復(fù)用率的通用LCD驅(qū)動(dòng)器ZLG7290鍵盤(pán)及LED驅(qū)動(dòng)器PCF8563實(shí)時(shí)時(shí)鐘/日歷時(shí)鐘AT24C01-04AT24C16~64FM24CXXX128BE2RPM~512BE2RPM2KBE2RPM~8KBBE2RPM鐵電存儲(chǔ)器FM系列器件地址及尋址字節(jié)型號(hào)種類(lèi)常見(jiàn)I2C總線的器件

I2C總線特殊功能寄存器之一

I2C總線控制寄存器I2C總線控制寄存器IICCON:位76543:0IICCONACKEN應(yīng)答使能TXCLKSELTX時(shí)鐘源選擇

溫馨提示

  • 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)論