版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1,第5章 基于S3C2410X的硬件開發(fā)平臺(tái),5.1 基于 S3C2410X的GPIO、UART 5.2 基于 S3C2410X的中斷 5.3 基于 S3C2410X存儲(chǔ)器接口 5.4 基于 S3C2410X的PWM 5.5 基于 S3C2410X的LCD,2,5.1基于S3C2410X的GPIO、UART,1. S3C2410X通用 I/O端口 S3C2410有117個(gè)多功能輸入/輸出引腳。有如下8個(gè)端口: 端口A(GPA):23位輸出端口 端口B(GPB):11位輸入/輸出端口 端口C(GPC):16位輸入/輸出端口 端口D(GPD):16位輸入/輸出端口 端口E(GPE):16位輸入/
2、輸出端口 端口F(GPF):8位輸入/輸出端口 端口G(GPG):16位輸入/輸出端口 端口H(GPH):11位輸入/輸出端口,3,S3C2410X GPIO常用寄存器分類 端口控制寄存器(GPACON-GPHCON)。 在S3C2410X 中,大多數(shù)的引腳都復(fù)用,所以必須對(duì)每個(gè)引腳進(jìn)行配置。端口控制寄存器(GPnCON)定義了每個(gè)引腳的功能。 端口數(shù)據(jù)寄存器(GPADAT-GPHDAT)。 如果端口被配置成了輸出端口,可以向GPnDAT的相應(yīng)位寫數(shù)據(jù)。如果端口被配置成了輸入端口,可以從GPnDAT的相應(yīng)位讀出數(shù)據(jù)。 端口上拉寄存器(GPBUP-GPHUP)。 端口上拉寄存器控制每個(gè)端口組的上
3、拉電阻使能/禁止。當(dāng)相應(yīng)的位置0,引腳的上拉電阻被使能。為1時(shí),上拉電阻被禁止。,4,1)端口寄存器及引腳配置,(1)端口A寄存器及引腳配置,GPADAT輸出的數(shù)據(jù),值為23位22:0。(引腳狀態(tài)和相應(yīng)的位狀態(tài)一致) 注意: 當(dāng)A口引腳配置為非輸出功能時(shí),其輸出無意義; 從引腳輸入沒有意義。,5,端口A寄存器及引腳配置,6,GPBDAT輸出或輸入的數(shù)據(jù),值為11位10:0 GPBUP端口B上拉寄存器,位10:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 注意: 當(dāng)B口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,(2)端口B寄存器及引腳配置,7,端口B引腳配置寄存器,8,GPC
4、DAT輸出或輸入的數(shù)據(jù),值為16位15:0 GPCUP端口C上拉寄存器,位15:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 注意: 當(dāng)C口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,(3)端口C寄存器及引腳配置,9,端口C引腳配置寄存器,10,GPDDAT輸出或輸入的數(shù)據(jù),值為16位15:0 GPDUP端口D上拉寄存器,位15:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 初始化時(shí),15:12無上拉功能,而11:0有上拉 注意: 當(dāng)D口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,(4)端口D寄存器及引腳配置,11,端口D引腳配置寄存器,12,GPEDAT輸
5、出或輸入的數(shù)據(jù),其值為16位15:0 GPEUP端口E上拉寄存器,位15:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 初始化時(shí),各個(gè)引腳都有上拉功能。 注意: 當(dāng)E口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,(5)端口E寄存器及引腳配置,13,端口E引腳配置寄存器,14,GPFDAT輸出或輸入的數(shù)據(jù),值為8位7:0 GPFUP端口F上拉寄存器,位7:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 初始化時(shí),各個(gè)引腳都有上拉功能。 注意: 當(dāng)F口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,(6)端口F寄存器及引腳配置,15,端口F引腳配置寄存器,16,GPG
6、DAT輸出或輸入的數(shù)據(jù),值為16位15:0 GPGUP端口G上拉寄存器,位15:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 初始化時(shí),15:11引腳無上拉功能,其它引腳有。 注意: 當(dāng)G口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,(7)端口G寄存器及引腳配置,17,端口G引腳配置寄存器,LCD-PEN:POWER_ENABLE,nSS0:SPI0_SELECT,18,GPHDAT輸出或輸入的數(shù)據(jù),值為11位10:0 GPHUP端口H上拉寄存器,位10:0有意義。 0:對(duì)應(yīng)引腳設(shè)置為上拉 1:無上拉功能 注意: 當(dāng)H口引腳配置為非輸入/輸出功能時(shí),其寄存器中的值沒有意義。,
7、(8)端口H寄存器及引腳配置,19,端口H引腳配置寄存器,UCLK為USB的,20,利用S3C2410X的GPF4、GPF5、GPF6、GPF7四個(gè)I/O管腳控制4個(gè)LED發(fā)光二極管,使其有規(guī)律的閃爍。 電路連接 LED_1LED_4分別與GFP7GPF4相連 通過GFP7GPF4引腳的高低電平來控制發(fā)光二極管的亮與滅 當(dāng)引腳輸出高電平的時(shí)候發(fā)光二極管熄滅 當(dāng)引腳輸出低電平的時(shí)候發(fā)光二極管點(diǎn)亮,2)S3C2410X GPIO的應(yīng)用,21,寄存器設(shè)置 配置GPFCON寄存器將GPF4、GPF5、GPF6、GPF7設(shè)置為輸出屬性。 通過設(shè)置GFPDAT寄存器實(shí)現(xiàn)點(diǎn)亮與熄滅LED。,22,程序的編寫
8、 (1)相關(guān)寄存器定義(2410addr.inc) #define rGPFCON (*(volatile unsigned *)0 x56000050) /Port F control #define rGPFDAT (*(volatile unsigned *)0 x56000054) /Port F data #define rGPFUP (*(volatile unsigned *)0 x56000058) /Pull-up control F,23,(2)端口初始化(2410lib.c) void Port_Init(void) /PORT F GROUP /Ports: GPF7
9、GPF6 GPF5 GPF4 GPF3 GPF2 GPF1 GPF0 /Signal : LED_1 LED_2 LED_3 LED_4 nIRQ_PCMCIA EINT2 KBDINT EINT0 /Setting: Output Output Output Output EINT3 EINT2 EINT1 EINT0 /Binary : 01 01 , 01 01 , 10 10 , 10 10 rGPFCON = 0 x55aa; rGPFUP = 0 xff; / The pull up function is disabled GPF7:0 ,24,(3)開啟LED void led
10、_on(void) int i,nOut; nOut=0 xF0; rGPFDAT=nOut ,25,(4)關(guān)閉LED void led_off(void) int i,nOut; nOut=0; rGPFDAT = 0; for(i=0;i100000;i+); rGPFDAT = nOut | 0 x80; /關(guān)閉LED1 for(i=0;i100000;i+); rGPFDAT |= nOut | 0 x40; /關(guān)閉LED2 for(i=0;i100000;i+); rGPFDAT |= nOut | 0 x20; /關(guān)閉LED3 for(i=0;i100000;i+); rGPFDA
11、T |= nOut | 0 x10; /關(guān)閉LED4 for(i=0;i100000;i+); ,26,(5)所有LED交替亮滅 void led_on_off(void) int i; rGPFDAT=0; /所有LED全亮 for(i=0;i100000;i+); rGPFDAT=0 xF0; /所有LED全滅 for(i=0;i100000;i+); ,27,1)S3C2410X串口控制器概述 (1)S3C2410X串行通信(UART)單元 S3C2410 的UART有三個(gè)獨(dú)立的異步串行I/O 端口:UART0、UART1、UART2,每個(gè)串口都可以在中斷和DMA 兩種模式下進(jìn)行收發(fā)。U
12、ART支持的最高波特率達(dá)230.4kbps。 S3C2410 的3個(gè)UART都有遵從1.0規(guī)范的紅外傳輸功能, UART0、UART1有完整的握手信號(hào),可以連接MODEM。,2. S3C2410X異步串行通信,28,29,每個(gè)UART 包含:波特率發(fā)生器、接收器、發(fā)送器和控制單元。波特率發(fā)生器以PCLK或UCLK為時(shí)鐘源。發(fā)送器和接收器各包含1個(gè)16 字節(jié)的FIFO 寄存器和移位寄存器。 當(dāng)發(fā)送數(shù)據(jù)的時(shí)候,數(shù)據(jù)先寫到FIFO 然后拷貝到發(fā)送移位寄存器,然后從數(shù)據(jù)輸出端口(TxDn)依次被移位輸出。被接收的數(shù)據(jù)也同樣從接收端口(RxDn)移位輸入到移位寄存器,然后拷貝到FIFO 中。,30,(2
13、)波特率的產(chǎn)生 波特率由一個(gè)專用的UART 波特率分頻寄存器(UBRDIVn)控制。計(jì)算公式如下: UBRDIVn=(int)(UCLK/(波特率16) )1 UBRDIVn=(int)(PCLK/(波特率16) )1 時(shí)鐘選用UCLK還是PCLK由UART控制寄存器UCONn10的狀態(tài)決定。 UCONn10=0,選用PCLK UCONn10=1,選用UCLK UBRDIVn的值必須在1(2161)之間,31,若波特率為115200bps,時(shí)鐘源頻率PCLK為40MHz,除數(shù)UBRDIVn應(yīng)如何計(jì)算? 解:UBRDIVn =( int) (40000000/(11520016)-1 =( in
14、t)(21.7)-1 =20,32,(3)S3C2410X UART通信操作 數(shù)據(jù)幀格式:可編程,包含1個(gè)開始位、5 到8 個(gè)數(shù)據(jù)位、1個(gè)可選的奇偶校驗(yàn)位、1個(gè)或2個(gè)停止位,通過線路控制器(ULCONn)來設(shè)置。 發(fā)送中止信號(hào):迫使串口輸出邏輯0 ,這種狀態(tài)保持一個(gè)傳輸幀的時(shí)間長(zhǎng)度。通常在一幀傳輸數(shù)據(jù)完整地傳輸完之后,再通過這個(gè)全0 狀態(tài)將中止信號(hào)發(fā)送給對(duì)方。 接收器具有錯(cuò)誤檢測(cè)功能:可以檢測(cè)出溢出錯(cuò)誤、奇偶校驗(yàn)錯(cuò)誤、幀錯(cuò)誤和傳輸中斷,每種情況下都會(huì)將一個(gè)錯(cuò)誤標(biāo)志在接收狀態(tài)寄存器置位。 傳輸中斷:接收數(shù)據(jù)RxDn保持邏輯0超過一幀的傳輸時(shí)間,33,2)S3C2410X UART專用功能寄存器,
15、34,(1)行控制寄存器(ULCON),返回,35,(2)控制寄存器(UCON),36,返回,37,(3)FIFO控制寄存器(UFCON),38,返回,39,(4)MODEM控制寄存器(UMCON),返回,40,(5)發(fā)送緩沖寄存器(UTxH),41,(6)接收緩沖寄存器(URxH),42,(7)發(fā)送/接收狀態(tài)寄存器(UTRSTAT),返回,43,(8)波特率分頻寄存器(UBRDIV),44,(1)電路連接,3)接口電路與程序設(shè)計(jì),45,(2)寄存器設(shè)置 禁止串口控制器的FIFO功能 設(shè)置UFCON0的0為“0”。 禁止AFC自動(dòng)流控功能 設(shè)置UMCON0的4為“0” 設(shè)置通訊格式為正常串口通
16、訊模式、8個(gè)數(shù)據(jù)位、1個(gè)停止位、無奇偶校驗(yàn) 設(shè)置ULCON0的7:0為0 x03。 設(shè)置串口的接收、發(fā)送模式為輪詢模式 設(shè)置UCONn的3:0為“0101” 設(shè)置串口的時(shí)鐘源為PCLK 設(shè)置UCONn的10為“0”。,46,(3) 程序的編寫 相關(guān)寄存器定義(2410addr.h) #define rULCON0 (*(volatile unsigned *)0 x50000000) /UART 0 Line control #define rUCON0 (*(volatile unsigned *)0 x50000004) /UART 0 Control #define rUFCON0 (*
17、(volatile unsigned *)0 x50000008) /UART 0 FIFO control #define rUMCON0 (*(volatile unsigned *)0 x5000000c) /UART 0 Modem control #define rUTRSTAT0 (*(volatile unsigned *)0 x50000010) /UART 0 Tx/Rx status #define rUBRDIV0 (*(volatile unsigned *)0 x50000028) /UART 0 Baud rate divisor,47,#define rUTXH0
18、 (*(volatile unsigned char *)0 x50000020) /UART 0 Transmission Hold #define rURXH0 (*(volatile unsigned char *)0 x50000024) /UART 0 Receive buffer #define WrUTXH0(ch) (*(volatile unsigned char *)0 x50000020)=(unsigned char)(ch) #define RdURXH0() (*(volatile unsigned char *)0 x50000024),48,串口初始化函數(shù)(24
19、10lib.c) static int whichUart=0; void Uart_Init(int pclk,int baud) int i; if(pclk = 0) pclk = PCLK; rUFCON0 = 0 x0; /FIFO control register, FIFO disable rUFCON1 = 0 x0; rUFCON2 = 0 x0; rUMCON0 = 0 x0; MODEM control register, AFC disable rUMCON1 = 0 x0;,49,/* 串口0 */ rULCON0 = 0 x3; rUCON0 = 0 x245; /
20、 Control register rUBRDIV0=( (int)(pclk/16./baud) -1 ); /* 串口1 */ rULCON1 = 0 x3; rUCON1 = 0 x245; rUBRDIV1=( (int)(pclk/16./baud) -1 ); /* 串口2 */ rULCON2 = 0 x3; rUCON2 = 0 x245; rUBRDIV2=( (int)(pclk/16./baud) -1 ); for(i=0;i100;i+); ,50,void Uart_Select(int ch) whichUart = ch; /* option.h */ #def
21、ine FCLK 202800000 #define HCLK (FCLK/2) #define PCLK (FCLK/4) #define UCLK PCLK,51,串口接收一個(gè)字符(2410lib.c) char Uart_Getch(void) if(whichUart=0) while(!(rUTRSTAT0 ,52,串口發(fā)送一個(gè)字符 void Uart_SendByte(int data) if(whichUart=0) if(data=n) while(!(rUTRSTAT0 ,53,else if(whichUart=1) if(data=n) while(!(rUTRSTAT1
22、 ,54,else if(whichUart=2) if(data=n) while(!(rUTRSTAT2 ,55,主函數(shù) /* 包含文件 */ #include def.h #include 2410lib.h #include option.h #include 2410addr.h #include interrupt.h“ void Main(void) /* 配置系統(tǒng)時(shí)鐘 */ ChangeClockDivider(1,1); / 1:2:4 ChangeMPllValue(0 xa1,0 x3,0 x1); / FCLK=202.8MHz /* 初始化端口 */ Port_Ini
23、t();,56,/* 初始化串口 */ Uart_Init(0,115200); Uart_Select(0); /* 打印提示信息 */ PRINTF(n-UART測(cè)試程序-n); PRINTF(n請(qǐng)將UART0與PC串口進(jìn)行連接,然后啟動(dòng)超級(jí)終端程序(115200, 8, N, 1)n); PRINTF(n從現(xiàn)在開始您從超級(jí)終端發(fā)送的字符將被回顯在超級(jí)終端上n);,57,/* 開始回環(huán)測(cè)試 */ while(1) unsigned char ch = a; ch = Uart_Getch(); Uart_SendByte(ch); if(ch = 0 x0d) Uart_SendByte(
24、0 x0a); ,58,(4 )調(diào)試與運(yùn)行結(jié)果 運(yùn)行Windows操作系統(tǒng)下的超級(jí)終端(HyperTerminal)應(yīng)用程序,新建一個(gè)終端通信,取名為JXARM9-2410。單擊“確定”按鈕。 選擇終端連接串口,如串口2 設(shè)置通信格式和協(xié)議(波特率為115200Bd、1位停止位、無校驗(yàn)位、無硬件流控制) 設(shè)置完成超級(jí)終端后,使用串口連接線連接設(shè)定的計(jì)算機(jī)串口與JXARM9-2410的串口0,將JXARM9-2410上電,看超級(jí)終端中是否有打印信息,如果有,則表示配置正確。 建立UART工程,編譯鏈接工程,下載調(diào)試代碼到目標(biāo)系統(tǒng)的RAM中,運(yùn)行程序。,59,5.2 基于 S3C2410X的中斷,
25、1.S3C2410X中斷機(jī)制分析 S3C2410內(nèi)部集成了中斷控制器,能夠管理多個(gè)中斷源。 1)S3C2410X中斷系統(tǒng)結(jié)構(gòu) 中斷系統(tǒng)主要由中斷源和控制寄存器兩部分構(gòu)成。 提供56個(gè)中斷源。對(duì)外提供24個(gè)外中斷輸入引腳,內(nèi)部所有設(shè)備都有中斷請(qǐng)求信號(hào)。當(dāng)中斷源提出中斷服務(wù)請(qǐng)求后,中斷控制器經(jīng)過仲裁之后再請(qǐng)求ARM920T核的FIQ或IRQ中斷。 控制寄存器主要有4種:模式、屏蔽、優(yōu)先級(jí)、掛起(標(biāo)志)寄存器等。,60,S3C2410X的中斷處理流程 當(dāng)有中斷源請(qǐng)求中斷時(shí),中斷控制器處理中斷請(qǐng)求,并根據(jù)處理結(jié)果向CPU內(nèi)核發(fā)出IRQ請(qǐng)求或FIQ請(qǐng)求,同時(shí),CPU的程序指針PC將指向IRQ異常入口(0
26、 x18)或FIQ異常入口(0 x1C),程序從IRQ異常入口(0 x18)或FIQ異常入口(0 x1C)開始執(zhí)行。,61,2)S3C2410X中斷源,中斷系統(tǒng)有6個(gè)分仲裁器和1個(gè)總仲裁器,每一個(gè)仲裁器可以處理6路中斷。,62,63,3)S3C2410 中斷控制寄存器,(1)中斷控制器專用寄存器,64,1:對(duì)應(yīng)中斷源有中斷請(qǐng)求 0:對(duì)應(yīng)中斷源無中斷請(qǐng)求 注意: 必須在中斷處理程序中對(duì)其標(biāo)志位清0。方法為寫1.,SRCPND-中斷源掛起(標(biāo)志)寄存器,65,1:對(duì)應(yīng)中斷源設(shè)為FIQ中斷模式 0:對(duì)應(yīng)中斷源設(shè)為IRQ中斷模式,INTMOD-中斷模式寄存器,66,1:屏蔽對(duì)應(yīng)中斷源 0:開放對(duì)應(yīng)中斷
27、源,INTMSK-中斷屏蔽寄存器,67,1:對(duì)應(yīng)的中斷源被響應(yīng),且正在執(zhí)行中斷服務(wù) 0:對(duì)應(yīng)中斷源未被響應(yīng) 注意:必須在中斷處理程序中對(duì)其服務(wù)標(biāo)志位清0。方法為對(duì)某位寫1便清除為0。,INTPND-中斷掛起(服務(wù))寄存器,68,偏移值代表了中斷源號(hào),即在IRQ模式下,INTPND寄存器中某位置1,則INTOFFSET寄存器中的值是其對(duì)應(yīng)中斷源的偏移量。 注意:當(dāng)在中斷服務(wù)程序中對(duì)SRCPND、INTPND中的標(biāo)志位清0時(shí),該寄存器的對(duì)應(yīng)位自動(dòng)清0。,INTOFFSET-中斷偏移寄存器,69,(2)外部中斷寄存器,外中斷控制寄存器 EINT023-中斷請(qǐng)求信號(hào)觸發(fā)方式選擇 000:低電平觸發(fā)00
28、1:高電平觸發(fā) 01x:下降沿觸發(fā)10 x:上升沿觸發(fā) 11x:雙邊沿觸發(fā),70,EXTINT0 EXTINT2,71,外中斷屏蔽、掛起寄存器,72,外中斷屏蔽寄存器,0:允許中斷 1:禁止中斷 注意: EINT0- EINT3不能在此被屏蔽,在SRCPND中屏蔽。,73,外中斷掛起寄存器,0:無中斷請(qǐng)求 1:中斷請(qǐng)求被響應(yīng) 注意:對(duì)某位寫1,則清除相應(yīng)標(biāo)志,即清為0.,74,2.S3C2410X中斷處理程序?qū)嵗?1) JXARM9-2410中斷處理流程 執(zhí)行0 x18處指令:LDR pc, = 0 x03000018,由u-boot控制 0 x03000018:b HandlerIRQ 24
29、10init.s 執(zhí)行HandlerIRQ, 2410init.s 執(zhí)行HandleIRQ處保存的中斷分發(fā)例程, 2410init.s中初始化為IsrIRQ,75,在2410init.s文件中的中斷初始化部分程序開始及中斷入口,= Exception entry = bResetHandler bHandlerUndefhandler for Undefined mode bHandlerSWIhandler for SWI interrupt bHandlerPaborthandler for PAbort bHandlerDaborthandler for DAbort b.reserve
30、d bHandlerIRQhandler for IRQ interrupt bHandlerFIQhandler for FIQ interrupt,76,.LTORG HandlerFIQ: HANDLER HandleFIQ HandlerIRQ: HANDLER HandleIRQ HandlerUndef: HANDLER HandleUndef HandlerSWI: HANDLER HandleSWI HandlerDabort: HANDLER HandleDabort HandlerPabort: HANDLER HandlePabort,本段意義:利用后面定義的宏來展開上面
31、各行,使其進(jìn)入它們所對(duì)應(yīng)的中斷服務(wù)子程序,77,= MACROs = .MACRO HANDLER HandleLabel HandlerLabel: subsp,sp,#4 stmfdsp!,r0 ldr r0,=HandleLabel ldr r0,r0 str r0,sp,#4 ldmfd sp!,r0,pc .ENDM,subsp,sp,#4 stmfdsp!,r0 ldr r0,= HandleIRQ ldr r0,r0 str r0,sp,#4 ldmfd sp!,r0,pc,本宏意義:轉(zhuǎn)到相應(yīng)中斷服務(wù)子程序去執(zhí)行,78,執(zhí)行HandleIRQ處保存的中斷分發(fā)例程, 2410ini
32、t.s中初始化為IsrIRQ, Setup IRQ handler ldrr0,=HandleIRQ This routine is needed ldrr1,=IsrIRQ strr1,r0,79,= IRQ Handle = IsrIRQ: subsp,sp,#4 stmfdsp!,r8-r9 ldrr9,=INTOFFSET ldrr9,r9 ldrr8,=HandleEINT0 addr8,r8,r9,lsl #2 ldrr8,r8 strr8,sp,#8 ldmfdsp!,r8-r9,pc,根據(jù)INTOFFSET的值從中斷向量表中取出中斷服務(wù)函數(shù)地址,R8中為產(chǎn)生了中斷的中斷源的中斷
33、服務(wù)函數(shù)地址,跳轉(zhuǎn)到中斷服務(wù)函數(shù)地址處運(yùn)行,本段意義:根據(jù)中斷服務(wù)號(hào),轉(zhuǎn)去執(zhí)行相應(yīng)的中斷處理程序段。,80,= Interrupt vector table = .EQU HandleEINT0, _ISR_STARTADDRESS + 0 x20 .EQU HandleEINT1,_ISR_STARTADDRESS + 0 x24 .EQU HandleEINT2, _ISR_STARTADDRESS + 0 x28 .EQU HandleEINT3,_ISR_STARTADDRESS + 0 x2c .EQU HandleEINT4_7, _ISR_STARTADDRESS + 0 x30
34、 .EQU HandleEINT8_23, _ISR_STARTADDRESS + 0 x34 .EQU HandleRSV6,_ISR_STARTADDRESS + 0 x38 .EQU HandleBATFLT, _ISR_STARTADDRESS + 0 x3c .EQU HandleTICK,_ISR_STARTADDRESS + 0 x40 .EQU HandleWDT, _ISR_STARTADDRESS + 0 x44 ,從_ISR_STARTADDRESS + 0 x20開始每四個(gè)字節(jié)表示一個(gè)中斷源的中斷服務(wù)函數(shù)地址,81,2)編寫外部中斷處理程序,中斷的產(chǎn)生分別來至按鈕SB1
35、202和SB1203,當(dāng)按鈕按下時(shí),EINT2(對(duì)應(yīng)管腳GPF2)或EINT3(對(duì)應(yīng)管腳GPF3)和地連接,輸入低電平,從而向CPU發(fā)出中斷請(qǐng)求。當(dāng)CPU響應(yīng)中斷后,進(jìn)入相應(yīng)的中斷服務(wù)程序。,82,(1)寄存器設(shè)置,配置GPF2、GPF3管腳為中斷屬性。 將GPFCON的5:4為“10”從而將GPF2配置為EINT2屬性 將GPFCON的7:6為“10”從而將GPF3配置為EINT3屬性 配置EINT2、EINT3為下降沿觸發(fā)方式。 將EXTINT0的10:8設(shè)置為“010” 將EXTINT0的14:12設(shè)置為“010” 初始化SRCPND、INTPND掛起寄存器中對(duì)應(yīng)外部中斷2和3的位。 設(shè)
36、置SRCPND的2和3設(shè)置為0; 設(shè)置INTPND的2和3設(shè)置為0; 打開INTMSK中對(duì)應(yīng)外部中斷2和3的屏蔽位。 設(shè)置INTMSK的2和3為0。,83,(2)相關(guān)寄存器定義,在2410addr.h中 #define rGPFCON (*(volatile unsigned *)0 x56000050) #define rSRCPND (*(volatile unsigned *)0 x4a000000) #define rINTMOD (*(volatile unsigned *)0 x4a000004) #define rINTMSK (*(volatile unsigned *)0 x
37、4a000008) #define rINTPND (*(volatile unsigned *)0 x4a000010) #define rINTOFFSET (*(volatile unsigned *)0 x4a000014),84,(3)注冊(cè)中斷服務(wù)函數(shù)并使能中斷,函數(shù)實(shí)現(xiàn) /* 請(qǐng)求中斷 */ Irq_Request(IRQ_EINT2, eint2_isr); Irq_Request(IRQ_EINT3, eint3_isr); /* 使能中斷 */ Irq_Enable(IRQ_EINT2); Irq_Enable(IRQ_EINT3);,注冊(cè)中斷服務(wù)函數(shù),即將eint2_isr
38、中斷服務(wù)函數(shù)的地址賦值到中斷向量表中。,開啟中斷源,必須在注冊(cè)中斷服務(wù)函數(shù)完成后進(jìn)行。,85,Interrupt.c中,void Irq_Request(int irq_no, void* irq_routine) if(irq_no = IRQ_MIN ,86,void Irq_Enable(int irq_no) if(irq_no = IRQ_MIN ,87,(4)用C代碼編寫的中斷服務(wù)函數(shù),函數(shù)實(shí)現(xiàn),必須聲明為中斷服務(wù)函數(shù),清除中斷標(biāo)記,處理中斷,88,void Irq_Clear(int irq_no) rSRCPND = (1 (irq_no - 1); rINTPND = (1
39、(irq_no - 1); ,89,5.3 基于S3C2410X存儲(chǔ)器接口,嵌入式系統(tǒng)存儲(chǔ)器子系統(tǒng)與通用計(jì)算機(jī)并無本質(zhì)區(qū)別,但有自身特點(diǎn) 存儲(chǔ)密度要求 功耗要求 片內(nèi)集成存儲(chǔ)器、存儲(chǔ)控制器 2410:系統(tǒng)存儲(chǔ)控制器(片選邏輯,支持SRAM/NOR Flash/SDRAM)和NAND Flash控制器 一般焊接在板子上,較少采用內(nèi)存條 存儲(chǔ)空間分配 嵌入式系統(tǒng)一般具有多種類型存儲(chǔ)器 支持多種存儲(chǔ)器擴(kuò)展 接口靈活、可配置,90,1. S3C2410地址空間,91,S3C2410的Bank6/7地址分布,92,2.S3C2410存儲(chǔ)位寬控制,93,3. S3C2410與SDRAM接口,94,引腳名稱
40、 CLK時(shí)鐘 CKE時(shí)鐘使能 /CS片選 BA0,BA1組地址選擇 A12A0地址總線 /RAS行地址鎖 /CAS存列地址鎖 /WE存寫使能 LDQM,UDQM數(shù)據(jù)I/O屏蔽 DQ15DQ0數(shù)據(jù)總線 VDD/VSS電源/地 VDDQ/VSSQ電源/地 NC未連接,引腳描述 nSRAS:SDRAM行地址選通信號(hào) nSCAS:SDRAM列地址選通信號(hào) nGCS6:SDRAM芯片選擇信號(hào) nWBE3:0:SDRAM數(shù)據(jù)屏蔽信號(hào) SCLK01:SDRAM時(shí)鐘信號(hào) SCKE:SDRAM時(shí)鐘允許信號(hào) DATA0:31:32位數(shù)據(jù)信號(hào) ADDR2:14:行列地址信號(hào) ADDR25:24:bank選擇線,95
41、,4.S3C2410存儲(chǔ)控制寄存器,1)BWSCON寄存器(0 x48000000) BWSCON寄存器主要用來設(shè)置外接存儲(chǔ)器的總線寬度和等待狀態(tài) SDRAM(Bank6)采用32位總線寬度,因此,DW6=10,其他2位采用缺省值,96,2)BANKCONn寄存器(0 x48000004 0 x48000020) 8個(gè)BANKCONn寄存器,對(duì)應(yīng)著Bank0Bank7。 Bank6Bank7可以作為FP/EDO/SDRAM等類型存儲(chǔ)器的映射空間 BANKCONn寄存器在Bank6和Bank7上的位定義 BANKCONn寄存器在MT=11時(shí)的相關(guān)位定義,97,3)刷新控制寄存器REFRESH(
42、0 x48000024),98,4)BANKSIZE寄存器( 0 x48000028),99,5)MRSR寄存器,MRSR寄存器有2個(gè),為MRSRB6和MRSRB7對(duì)應(yīng)著Bank6和Bank7,100,5.S3C2410與NOR FLASH接口及操作,101,SST39VF160是一個(gè)1M16b的CMOS多功能Flash器件,Nor Flash操作,102,執(zhí)行3字節(jié)裝載時(shí)序,用于解除軟件數(shù)據(jù)保護(hù) 裝載字地址和字?jǐn)?shù)據(jù)在字編程操作中,地址在CE#或WE#的下升沿(后產(chǎn)生下降沿的那個(gè))鎖存,數(shù)據(jù)在CE#或WE#的上升沿(先產(chǎn)生上升沿的那個(gè))鎖存。 執(zhí)行內(nèi)部編程操作該操作在第4個(gè)WE#或CE#的上升
43、沿出現(xiàn)(先產(chǎn)生上升沿的那個(gè))之后啟動(dòng)編程操作。一旦啟動(dòng)將在20ms內(nèi)完成。,SST39VF160字編程操作,103,扇區(qū)操作通過在最新一個(gè)總線周期內(nèi)執(zhí)行一個(gè)6字節(jié)的命令時(shí)序(扇區(qū)擦除命令30H和扇區(qū)地址SA)來啟動(dòng)。塊擦除操作通過在最新一個(gè)總線周期內(nèi)執(zhí)行一個(gè)6字節(jié)的命令時(shí)序(塊擦除命令50H和塊地址BA)來啟動(dòng)。,SST39VF160扇區(qū)/塊擦除操作,104,芯片擦除操作通過在最新一個(gè)總線周期內(nèi)執(zhí)行一個(gè)6字節(jié)的命令5555H地址處的芯片擦除命令10H時(shí)序來啟動(dòng)在第6個(gè)WE#或CE#的上升沿(先出現(xiàn)上升沿的那個(gè))開始執(zhí)行擦除操作,擦除過程中只有觸發(fā)位DQ6或數(shù)據(jù)查詢位DQ7的讀操作有效。,SST
44、39VF160芯片擦除操作,105,6.S3C2410 NAND Flash控制器,S3C2410處理器在片內(nèi)集成了一個(gè)稱為“Steppingstone”(墊腳石)的4KB大小的內(nèi)部SRAM。如果系統(tǒng)工作在自動(dòng)啟動(dòng)模式,那么加電或者復(fù)位后,NAND閃存的前4KB代碼將加載到4KB的SRAM存儲(chǔ)器上,接著該存儲(chǔ)器的地址空間被重映射到片選信號(hào)nGCS0上,即成為BANK0存儲(chǔ)區(qū)。此后CPU從0 x0開始執(zhí)行4KB的內(nèi)部緩存里的啟動(dòng)代碼。,106,107,S3C2410在用NAND啟動(dòng)時(shí),要對(duì)NAND Flash進(jìn)行配置。 專用功能寄存器:配置寄存器(NFCONF) 、命令設(shè)置寄存器(NFCMD)
45、、 數(shù)據(jù)寄存器(NFDATA) 、操作狀態(tài)寄存器(NFSTAT) 、 ECC寄存器(NFECC) 。,108,7.S3C2410與 Nand Flash接口及操作,109,管腳名稱描述 I/O0 I/O7 數(shù)據(jù)輸入輸出 CLE命令鎖存使能 ALE地址鎖存使能 CE#片選 RE#讀使能 WE#寫使能 WP#寫保護(hù) R/B#準(zhǔn)備好/忙碌 輸出 VCC電源(+2.7V3.6V) VSS地 N.C空管腳,110,K9F1280芯片 1block=32page;1page=528byte=512byte(Main Area)+16byte(Spare Area) 總?cè)萘繛?4096(block數(shù)量)32
46、(page/block)512(byte/page)=64MB Nand Flash以頁(yè)為單位讀寫數(shù)據(jù),而以塊為單位擦除數(shù)據(jù)。 對(duì)Nand Flash的操作主要包括:讀操作、擦除操作、寫操作、壞塊設(shè)別、壞塊標(biāo)識(shí)等。,111,5.4 基于 S3C2410X的PWM,S3C2410X有5個(gè)16 位定時(shí)器 定時(shí)器0、定時(shí)器1、定時(shí)器2 與定時(shí)器3 具有脈沖寬度調(diào)制(PWM)功能 定時(shí)器4 僅供內(nèi)部定時(shí)而沒有輸出引腳 定時(shí)器0、定時(shí)器1使用相同的分頻器 定時(shí)器2 、定時(shí)器3 與定時(shí)器4使用相同的分頻器,112,執(zhí)行PWM操作需要編程完成的工作 設(shè)置調(diào)制方波的周期 設(shè)置接通時(shí)間 啟動(dòng)定時(shí)器,113,1)
47、定時(shí)器配置寄存器0 (TFCG0 ,0 x51000000 ) 定時(shí)器輸入時(shí)鐘頻率=PCLK/prescaler value+1/divider value prescaler value =1255; divider value =2、4、8、16,1. PWM定時(shí)器的寄存器,114,定時(shí)器配置寄存器1主要用于DMA通道選擇,PWM定時(shí)器的MUX輸入。,2)定時(shí)器配置寄存器1(TCFG1 ,0 x51000004 ),115,定時(shí)器控制寄存器主要用于自動(dòng)重載、定時(shí)器自動(dòng)更新、定時(shí)器啟停、輸出翻轉(zhuǎn)控制等。,3)定時(shí)器控制寄存器(TCON ,0 x51000004 ),116,117,該寄存器用
48、于PWM定時(shí)器的時(shí)間計(jì)數(shù) 5)定時(shí)器n比較緩沖寄存器(TCMPBn) 該寄存器用于PWM波形輸出占空比的設(shè)置,4)定時(shí)器n計(jì)數(shù)緩沖寄存器(TCNTBn),118,/* 預(yù)分頻率值:TIME0/1=255, TIME2/3/4=0 */ rTCFG0=0 xFF; /* 設(shè)置工作模式:中斷模式, 分頻率值:TIME0為1/4*/ rTCFG1=0 x1; /* 輸出脈沖:頻率從4000HZ到14000HZ, 使用2/3的占空比*/ for ( freq = 4000; freq 14000; freq+=500 ) div = (PCLK/256/4)/freq; rTCON=0 x0; rTC
49、NTB0= div; rTCMPB0= (2*div)/3; rTCON=0 xa; /* 手工裝載定時(shí)器的計(jì)數(shù)值*/ rTCON=0 x9; /* 啟動(dòng)定時(shí)器,并周期模式觸發(fā)*/ for( index = 0; index 800000; index+); rTCON=0 x0; /* 延時(shí)并停止定時(shí)器*/ ,2. PWM編程示例,119,/* 輸出脈沖:頻率1000HZ, 使用1/100 - 95/100的占空比*/ div = (PCLK/256/4)/1000; for ( rate = 1; rate 100; rate += 5 ) rTCNTB0= div; rTCMPB0= (
50、rate*div)/100;/* 修改占空比*/ rTCON=0 xa; /* 手工裝載定時(shí)器的計(jì)數(shù)值*/ rTCON=0 x9;/* 啟動(dòng)定時(shí)器,并周期觸發(fā)*/ for( index = 0; index 800000; index+); rTCON=0 x0; ,120,1. LCD顯示器,LCD(Liquid Crystal Display)是一種耗電少、體積小的數(shù)字式顯示器件。通過液晶、彩色過濾器過濾廣元,在平面面板上顯示字符、文字和圖像等信息。與陰極射線管CRT相比占用空間小、功耗低、輻射底、無閃爍,降低視覺疲勞。,5.5 基于 S3C2410X的LCD,121,在LCD顯示器中,顯
51、示面板薄膜被分成很多小柵格,每個(gè)柵格由一個(gè)電極控制,通過改變柵格上的電極就能控制柵格內(nèi)液晶分子的排列,從而控制光路的導(dǎo)通。彩色顯示利用三原色混合的原理顯示不同的色彩:此時(shí)每一個(gè)象素都是由3個(gè)液晶單元格構(gòu)成的。其中每一個(gè)單元格前面都分別有紅色R、綠色G或藍(lán)色B的過濾片,光線經(jīng)過過濾片的處理變成不同的色彩。 點(diǎn)陣式LCD由矩陣構(gòu)成,顯示文字字符以及其他符號(hào),常見的點(diǎn)陣LCD用5行8列的點(diǎn)表示一個(gè)字符,使用16行16列的點(diǎn)表示一個(gè)漢字。LCD驅(qū)動(dòng)器將輸入數(shù)據(jù)轉(zhuǎn)換為激發(fā)相應(yīng)的點(diǎn)所需的電信號(hào)。,122,1)LCD的分類,液晶顯示的原理是液晶在不同電壓的作用下會(huì)有不同的光特性。一類是STN型液晶屬于無源的
52、,這類液晶需要有外部提供光源,根據(jù)光源的位置又可以進(jìn)一步分成反射式和透射式兩種。這種液晶顯示的成本較低,但有效視角較小,色彩也不夠鮮艷。它具有省電的最大優(yōu)勢(shì)。其屏幕尺寸一般在5英寸以下(目前較少使用)。 另一類是有源發(fā)光器件TFT形式。TFT是薄膜晶體管Thin Film Transitor的縮寫,每個(gè)液晶就類似是一個(gè)可以發(fā)光的晶體管。液晶顯示屏就是有許多液晶排列成陣列而構(gòu)成的。,123,2)單色與彩色顯示器,在單色液晶顯示屏中,一個(gè)液晶就是一個(gè)象素。 在彩色液晶屏中則每個(gè)象素由R紅、G綠和B蘭色三個(gè)液晶共同組成。同時(shí)也可以認(rèn)為每個(gè)象素背后都有一個(gè)8位的寄存器,寄存器的值決定著三個(gè)液晶單元各自
53、的亮度。有些情況下寄存器的值并不直接驅(qū)動(dòng)RGB三個(gè)液晶單元的亮度,而是通過一個(gè)調(diào)色板技術(shù)來訪問,發(fā)出真彩色的效果。 為每個(gè)象素都配備寄存器是不現(xiàn)實(shí)的,配備了一組寄存器,這些寄存器依次輪流連接到每一行象素并裝入該行的內(nèi)容,使每一行象素都暫短的受到驅(qū)動(dòng),這樣周而復(fù)始將所有的象素行都驅(qū)動(dòng)一遍就顯示一個(gè)完整的畫面。,124,3)LCD的驅(qū)動(dòng)控制,LCD兩種模塊形式 LCD顯示屏后邊有印刷板并在板上帶有驅(qū)動(dòng)芯片的LCD模塊。 微處理器芯片上內(nèi)置LCD控制器來驅(qū)動(dòng)顯示模塊。,125,4)LCD模塊的顯存控制,顯示器模塊中已經(jīng)有顯示存儲(chǔ)器。顯存中的每一個(gè)單元對(duì)應(yīng)LCD上的一個(gè)點(diǎn),只要顯存中的內(nèi)容改變,顯示結(jié)
54、果便進(jìn)行刷新。 直接根據(jù)系統(tǒng)要求對(duì)顯存進(jìn)行修改,每做一點(diǎn)小的屏幕改變就進(jìn)行刷新,將增加系統(tǒng)負(fù)擔(dān)。 專門開辟顯示內(nèi)存,在需要刷新時(shí)候由程序進(jìn)行顯示更新。這樣,不但可以減輕總線負(fù)荷,而且也比較合理,在有需要的時(shí)候進(jìn)行統(tǒng)一的顯示更新,界面也可以比較美觀,不致由于無法預(yù)料的刷新動(dòng)作導(dǎo)致顯示界面閃爍。,126,前后臺(tái)雙重顯示緩存的顯示模塊結(jié)構(gòu),127,在嵌入式LCD屏幕上實(shí)現(xiàn)圖像和字符的顯示具體一般步驟 在程序中配置微處理器GPIO的寄存器,將與LCD連接的引腳定義為所需的功能 將幀描述符定義在SDRAM空間,在DMAC被初始化后供DMAC提取 配置LCD控制器的各寄存器 建立LCD屏幕上的每一象素與幀緩沖區(qū)對(duì)應(yīng)位置的映射關(guān)系,將字符位圖轉(zhuǎn)換成字符矩陣數(shù)據(jù),并且寫入到幀緩沖器(顯存)里。,128,5)工作原理,顯存中的每一個(gè)單元對(duì)應(yīng)LCD上的一個(gè)點(diǎn),只要顯存中的內(nèi)容改變,顯示結(jié)果便進(jìn)行刷新。顯示屏可以以單色或彩色顯示,單色用1位來表示,彩色可以用8位(256色)或16位、24位表示其顏色。屏幕的大小和顯示模式這些因素會(huì)影響顯存的大小。 顯存通常是從內(nèi)存空間分配所得,并且它
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安順市消防救援支隊(duì)2026年面向社會(huì)公開招聘政府專職消防員的備考題庫(kù)(第一批)完整答案詳解
- 公共交通車輛安全技術(shù)檢測(cè)制度
- 2026年派駐天津市對(duì)外服務(wù)有限公司人力資源管理崗位(北方人力外包項(xiàng)目)招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2026年鹽城市大豐區(qū)司法局公開招聘勞務(wù)派遣人員備考題庫(kù)完整參考答案詳解
- 2026年江達(dá)縣城市管理局公開招聘輔助執(zhí)法人員的備考題庫(kù)及一套答案詳解
- 企業(yè)員工晉升與發(fā)展制度
- 2026年正定產(chǎn)業(yè)投資控股集團(tuán)有限公司面向社會(huì)招聘職業(yè)經(jīng)理人的備考題庫(kù)含答案詳解
- 2026年楊寶軍研究組招聘?jìng)淇碱}庫(kù)及參考答案詳解一套
- 養(yǎng)老院老人興趣小組活動(dòng)制度
- 企業(yè)員工培訓(xùn)與素質(zhì)提升目標(biāo)制度
- 山東省煙臺(tái)市芝罘區(qū)2024-2025學(xué)年三年級(jí)上學(xué)期期末數(shù)學(xué)試題
- 2025年度麻醉科主任述職報(bào)告
- 別墅澆筑施工方案(3篇)
- 小學(xué)信息技術(shù)教學(xué)備課全流程解析
- 腫瘤放射治療的新技術(shù)進(jìn)展
- 退崗修養(yǎng)協(xié)議書范本
- 高考語文二輪復(fù)習(xí)高中語文邏輯推斷測(cè)試試題附解析
- 土壤微生物群落結(jié)構(gòu)優(yōu)化研究
- 2024外研版四年級(jí)英語上冊(cè)Unit 4知識(shí)清單
- 四川省南充市2024-2025學(xué)年部編版七年級(jí)上學(xué)期期末歷史試題
- 國(guó)有企業(yè)三位一體推進(jìn)內(nèi)控風(fēng)控合規(guī)建設(shè)的問題和分析
評(píng)論
0/150
提交評(píng)論