裸板串口課程設(shè)計(jì)_第1頁
裸板串口課程設(shè)計(jì)_第2頁
裸板串口課程設(shè)計(jì)_第3頁
裸板串口課程設(shè)計(jì)_第4頁
裸板串口課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電 子 科 技 大 學(xué)語言類綜合項(xiàng)目實(shí)踐報(bào)告學(xué)生姓名: 學(xué) 號: 指導(dǎo)教師: 實(shí)驗(yàn)時(shí)間: 年 月 日1、課程設(shè)計(jì)目的本課設(shè)目的是對在裸板上進(jìn)行一些初始化操作,實(shí)現(xiàn)UART串口通訊驅(qū)動,即實(shí)現(xiàn)PC端與開發(fā)板間串口的通訊,從PC終端輸入字符,開發(fā)板再將其返回到PC終端(也叫回顯)。驅(qū)動程序的實(shí)質(zhì)即對硬件資源的管理。2、 課程設(shè)計(jì)任務(wù)了解串口通信基本原理,查看開發(fā)板上datasheet上關(guān)于串口的連接方式,以及其特點(diǎn);根據(jù)ARM mini2440的硬件原理,設(shè)置對應(yīng)的寄存器,用程序初始化串口硬件,控制串口硬件實(shí)現(xiàn)字符串接收、發(fā)送等功能。編程實(shí)現(xiàn)ARM UART(Universal Asynchron

2、ous Receiver and Transmitter)通訊。主要任務(wù)為:1、設(shè)置管腳模式;2、設(shè)置通信模式(8個(gè)數(shù)據(jù)位,1個(gè)停止位,無校驗(yàn));3、設(shè)置數(shù)據(jù)讀取模式(中斷、輪詢);4、設(shè)置是否用硬件緩存(FIFO,NONFIFO);5、設(shè)置是否啟用硬件流控;6、設(shè)置傳輸速度:波特率。3、裸板串口的設(shè)計(jì)3.1需求分析數(shù)據(jù)流程圖3.1.1頂層數(shù)據(jù)流圖3.2概要設(shè)計(jì)程序結(jié)構(gòu)圖3.3詳細(xì)設(shè)計(jì)程序流程圖4、裸板串口的實(shí)現(xiàn)4.1 關(guān)看門狗4.1.1代碼4-1LDR R0,=0x53000000 (1)MOVR1,#0x0 STRR1,R0 4.1.2注釋看門狗定時(shí)器控制寄存器寄存器地址描述復(fù)位值WTCO

3、N0x53000000看門狗定時(shí)器控制寄存器0x8021WTCON位描述初始值Watchdog timer【5】看門狗定時(shí)器使能位。0=無效 1=有效1Reset enable/disable【1】對于復(fù)位信號看門狗定時(shí)器 輸出使能位。1:看門狗定時(shí)器曹氏,發(fā)出s3c2440A復(fù)位信號。0:看門狗定時(shí)器復(fù)位功能無效1Interrupt generation【2】中斷使能位0=無效 1=有效04-1(1)設(shè)置看門狗定時(shí)器控制寄存器的值,看門狗定時(shí)器內(nèi)部有一個(gè)遞減計(jì)數(shù)器,當(dāng)該計(jì)數(shù)器遞減為0的時(shí)候,會產(chǎn)生復(fù)位控制器信號,自動重啟控制器。在這里,我們?yōu)榱朔乐箍撮T狗產(chǎn)生復(fù)位控制器信號,將機(jī)器重啟,所以要

4、將看門狗定時(shí)器控制寄存器中的內(nèi)容賦0,使看門狗定時(shí)器無效.4.2 關(guān)中斷代碼4-2LDR R0,=0x4A000008 (1)LDR R1,=0x3ff STR R1,R0 中斷屏蔽寄存器寄存器地址讀寫描述復(fù)位值INTMSK0x4A000008R/W決定哪個(gè)中斷源被屏蔽0=中斷服務(wù)無效 1=中斷服務(wù)有效0xFFFFFFFF4-2(1)設(shè)置中斷屏蔽寄存器。中斷屏蔽寄存器該寄存器包括32位,每個(gè)都是和一個(gè)中斷源相關(guān)。如果某位置1,則CPU不會服務(wù)相應(yīng)中斷源的中斷請求。如果屏蔽位為0,中斷請求可以被服務(wù)。這里我們將0x3ff寫入中斷屏蔽寄存器中是將所有的中斷服務(wù)屏蔽。因?yàn)檫@里我們這里只需執(zhí)行一個(gè)簡單

5、的數(shù)據(jù)傳輸服務(wù),如果中斷服務(wù)沒有被屏蔽,那我們的傳輸過程中就可能受到中斷服務(wù)的影響,導(dǎo)致傳輸服務(wù)停止或出錯(cuò)。所以在最開始我們就要屏蔽掉中斷服務(wù)。4.3 時(shí)鐘設(shè)置代碼4-3LDR R0,=0x4C000000 (1)MOV R1,#0xFFFFFFFF STR R1,R0 鎖定時(shí)間計(jì)數(shù)寄存器寄存器地址讀寫描述復(fù)位值LOCKTIME PLL0x4C000000R/W鎖定時(shí)間計(jì)數(shù)寄存器0xFFFFFFFFLOCKTIME位描述初始值U_LTIME31:16UPLL對于UCLK的鎖定時(shí)間計(jì)數(shù)值0xFFFFM_LTIME15:0MPLL對于FCLK、HCLK、PCLK的鎖定時(shí)間計(jì)數(shù)值0xFFFF4-3(

6、1)設(shè)置鎖定時(shí)間計(jì)數(shù)寄存器的值。鎖定時(shí)間計(jì)數(shù)寄存器分別設(shè)定了UPLL對于UCLK的鎖定時(shí)間計(jì)數(shù)值和MPLL對于FCLK、HCLK、PCLK的鎖定時(shí)間計(jì)數(shù)值,這里我們在設(shè)定UCLK與MPLL的相關(guān)值之前,先將鎖定時(shí)間計(jì)數(shù)寄存器進(jìn)行一個(gè)初始化復(fù)位。PS:1. MPLL用于CPU及其他外圍器件,UPLL用于USB 2. MPLL產(chǎn)生的FCLK, HCLK, PCLK三種頻率分別有不同的用途: FCLK是CPU提供的時(shí)鐘信號。 HCLK是為AHB總線提供的時(shí)鐘信號,主要用于高速外設(shè),比如內(nèi)存控制器,中斷控制器,LCD控制器,DMA 等。S3C2440最大支持400MHz的主頻,我們可以通過設(shè)定MPLL

7、, UPLL寄存器來設(shè)定CPU的工作頻率。 PCLK是為APB總線提供的時(shí)鐘信號,主要用于低速外設(shè),比如看門狗,UART控制器, IIS, I2C, SDI/MMC, GPIO,RTC and SPI等。 3. UPLL,專門用于驅(qū)動USB host/Device。并且驅(qū)動USB host/Device的頻率必須為48MHz。 4. 設(shè)置MPLL和UPLL時(shí),必須先設(shè)定UPLL,然后才能設(shè)定MPLL,而且中間需要大約7個(gè)空指令(NOP)的間隔。代碼4-4LDR R0,=0x4C000014 (1)MOV R1,#7 STR R1,R0 時(shí)鐘分頻器控制寄存器寄存器地址讀寫描述復(fù)位值CLKDIVN

8、0x4C000014R/W時(shí)鐘分頻器控制寄存器0x00000000CLKDIVN位描述初始值DIVN_UPLL3UCLK選擇寄存器(UCLK必須對USB提供 48MHz)0:UCLK=UPLL clock UPLL時(shí)鐘被設(shè)置為48MHz1:UCLK=UPLL clock/2 UPLL時(shí)鐘被設(shè)置為96MHz0HDIVN2:100:UCLK=FCLK/101:UCLK=FCLK/210:UCLK=FCLK/4,當(dāng)CAMDIVN9=0 UCLK=FCLK/8,當(dāng)CAMDIVN9=111:UCLK=FCLK/3,當(dāng)CAMDIVN8=0 UCLK=FCLK/6,當(dāng)CAMDIVN8=100PDIVN00:

9、PCLK是和HCLK/1相同的時(shí)鐘1:PCLK是和HCLK/2相同的時(shí)鐘04-4(1)設(shè)置時(shí)鐘分頻器控制寄存器的值,這里我們設(shè)置為7,從上表可看出是為了將時(shí)鐘頻率設(shè)置為PCLK=HCLK/2,因?yàn)楫?dāng)CAMDIVN8=1,所以UCLK=FCLK/6,而UCLK=UPLL clock, UPLL時(shí)鐘被設(shè)置為48MHz。代碼4-5 LDR R0,=0x4c000008 (1) LDR R1,=(56<<12)+(2<<4)+2) STR R1,R0 NOP (2) NOP NOP NOP NOP NOP NOP LDRR0,=0x4c000004 (3) LDRR1,=(68

10、<<12)+(1<<4)+1) STR R1,R0 BL M_INIT BL StacksInit BL UART MPLL、UPLL配置寄存器寄存器地址讀寫描述復(fù)位值MPLLCOM0x4c000004R/WMPLL配置寄存器0x00096030UPLLCOM0x4c000008R/WUPLL配置寄存器0x0004d0304-5(1)先設(shè)置MPLL配置寄存器的值,根據(jù)公式R1=(U_MDIV<<2)+(U_PDIV<<4)+U_SDIV)得出配置值。4-5(2)這里使用了7個(gè)空指令,4-3(1)的PS里已說明這一點(diǎn)4-5(3)再設(shè)置UPLL配置寄

11、存器,根據(jù)公式R1=(M_MDIV<<12)+(M_PDIV<<4)+M_SDIV)得出配置值。However we seted the CLKDIV2 value to 1,so the UPLL value is seted to 98MHz and if you remove the command of "LDR R1,R0",the code is also right;I don't know the reason ,so I think the following UPLL value setting could be omit

12、tedif we want to set the baut to 115200,because of the Baud-Rate Error Tolerance, we need a HCLK which is greater than 50MHZ;so we set the MDIV to 68,set the PDIV to 1 and set the SDIV to 1 as well so that we can get a FCLK which is 304MHZ4-5(6)跳轉(zhuǎn)到M_INIT,進(jìn)行內(nèi)存初始化工作4-5(7)跳轉(zhuǎn)到StacksInit,進(jìn)行堆棧初始化4-5(8)跳轉(zhuǎn)到

13、UART ,進(jìn)行串口設(shè)置 4.4內(nèi)存初始化代碼4-6M_INITLDR r0, =0x48000000 LDR r1, =0x48000034 (1)ADR r2, memdata Initmemloop (2) LDR r3, r2, #4 STR r3, r0, #4 TEQ r0, r1 BNE initmemloop MOV pc,lr (7)memdata DCD 0x22000000 ;BWSCON (8) DCD 0x00000700 ;BANKCON0 (9) DCD 0x00000700 ;BANKCON1 DCD 0x00000700 ;BANKCON2 DCD 0x000

14、00700 ;BANKCON3 DCD 0x00000700 ;BANKCON4 DCD 0x00000700 ;BANKCON5 DCD 0x00018005 ;BANKCON6 DCD 0x00018005 ;BANKCON7 DCD 0x008e07a3 ;REFRESH (10) DCD 0x000000b1 ;BANKSIZE (11) DCD 0x00000030 ;MRSRB6 (12) DCD 0x00000030 ;MRSRB7 (13)總線寬度&等待狀態(tài)控制寄存器寄存器地址描述復(fù)位值BWSCON0x48000000總線寬度&等待狀態(tài)控制寄存器0X000000

15、00Bank控制寄存器寄存器地址復(fù)位值寄存器地址復(fù)位值BANKCON00x480000040x0700BANKCON40x480000100x0700BANKCON10x480000080x0700BANKCON50x480000140x0700BANKCON20x4800000C0x0700BANKCON60x4800001C0x180084-6(1)設(shè)置4-6(2)設(shè)置GPHCON的值為0x48000034,決定SRAM對bank6與bank7使用UB/LB,并且決定bank1的數(shù)據(jù)總線寬度為保留的,bank0的數(shù)據(jù)總線寬度為32bit 4-6(3)4-6(4)4-6(5)4-6(6)4-

16、6(7)4-6(8)設(shè)置BWSCON的值為0x22000000,決定對bank6與bank7使用UB/LB4-6(9)將BANKCON07控制寄存器復(fù)位4-6(10) / /23位:1:刷新使能有效 /21:20位:00:SDRAM RAS預(yù)充電時(shí)間=2clock /19:18位:11:SDRAM半行周期時(shí)間Tsrc=7clock /10:0位:1110100011:SDRAM刷新計(jì)數(shù)值4-6(11)/0x000000b1=10110001 /7位:1:ARM內(nèi)核突發(fā)操作使能有效 /5位:1:SCKE使能SDRAM power down模式有效 /4位:1:SCLK僅當(dāng)訪問周期才被激活 /2:

17、0位:001:BANK6/7存儲分布為64MB/64MB4-6(12)MRSRB6 模式寄存器集寄存器bank64-6(13)MRSRB7 模式寄存器集寄存器bank7 /0x00000030=110000 /6:4位:100:CAS反應(yīng)時(shí)間011=3 clock4.5堆棧初始化代碼4-7_STACKBASEADDREQU0x33ff8000 (1)StackUse EQU (_STACKBASEADDR-0x3800)StackSvcEQU(_STACKBASEADDR-0x2800)StackUndEQU(_STACKBASEADDR-0x2400)StackAbtEQU(_STACKBA

18、SEADDR-0x2000)StackIRQEQU(_STACKBASEADDR-0x1000)StackFIQEQU(_STACKBASEADDR-0x0000)USERMODE EQU 0x10 (2)FIQMODEEQU0x11IRQMODEEQU0x12SVCMODEEQU0x13ABORTMODEEQU0x17UNDEFMODEEQU0x1bSYSMODEEQU0x1fIRQDISEQU0x80 (3)FIQDISEQU0x40 StacksInit (4) MOVR0,LR;Save the func return Addr MSR CPSR_c,#(SVCMODE|IRQDIS|

19、FIQDIS)LDRSP,=StackSvcMSRCPSR_c,#(UNDEFMODE|IRQDIS|FIQDIS)LDRSP,=StackUndMSRCPSR_c,#(ABORTMODE|IRQDIS|FIQDIS)LDRSP,=StackAbtMSRCPSR_c,#(IRQMODE|IRQDIS|FIQDIS)LDRSP,=StackIRQMSRCPSR_c,#(FIQMODE|IRQDIS|FIQDIS)LDRSP,=StackFIQMSRCPSR_c,#(SYSMODE|IRQDIS|FIQDIS)LDRSP,=StackUseMOVPC,R04-7(1)堆棧地址定義4-7(2)工作模

20、式定義4-7(3)初始化定義4.6串口設(shè)置代碼4-8UART LDR R0,=0x56000070(1)LDR R1,R0ORR R1,R1,#0xa0(2)STR R1,R0LDR R0,=0x56000078(3)MOV R1,#0(4)STR R1,R0LDR R0,=0x50000000 (5)MOV R1,#3(6)STR R1,R0LDR R0,=0x50000004(7)MOV R1,#0x5(8)STR R1,R0LDR R0,=0x50000008(9)MOV R1,#0 (10)STR R1,R0LDR R0,=0x5000000c(11)MOV R1,#0(12)STR

21、R1,R0LDR R0,=0x50000028(13)MOV R1,#26 (14)STR R1,R0;to confirm that whether the UART is workingLDR R0,=0x50000020 (15)MOV R1,#98 (16)STR R1,R0LOOP (17)LDR R0,=0x50000010LDR R1,R0 (18) ANDS R1,R1,#1 BEQ LOOP (19)LDR R0,=0x50000024LDR R1,R0(20); LDR R0,=0x50000020STR R1,R0B LOOPEND4-8(1)設(shè)置端口H控制寄存器GPHC

22、ON,GPHCON與GPHUP是兩個(gè)管腳設(shè)置寄存器,GPHCON負(fù)責(zé)GPIO port H設(shè)置位,而GPHCON負(fù)責(zé)GPIO port H設(shè)置位4-8(2)把R1和#0xa0按位進(jìn)行邏輯“或”運(yùn)算,并把結(jié)果存入R。目的是設(shè)置GPH2 to TXD0,GPH3 to RXD04-8(3)設(shè)置GPHUP 4-8(4)the pull up function is disabled,到這里的前幾個(gè)步驟都是在設(shè)置UART的管腳模式4-8(5)設(shè)置線性控制寄存器ULCON0,它主要用來配置奇偶校驗(yàn)?zāi)J健⑼V刮弧⒆珠L,即UART的通訊模式4-8(6)將0x3=00000011送入線性控制器,即控制發(fā)送接搜

23、毎幀的數(shù)據(jù)位數(shù)為8bit;4-8(7)通過設(shè)置UART0控制寄存器UCON0來確定數(shù)據(jù)讀取模式4-8(8)將0x245=00000101送入U(xiǎn)CON0,第0、1位決定用中斷請求或查詢模式來讀取UART接收緩存寄存器中的數(shù)據(jù) ,第2、3決定用中斷請求或查詢模式來寫數(shù)據(jù)到UART發(fā)送緩存寄存器.4-8(9)這里是通過設(shè)置FIFO控制寄存器UFCON0,來設(shè)置硬件的緩存模式4-8(10)設(shè)置為0000000 使FIFO 無效,即NON-FIFO模式4-8(11)設(shè)置MODEM控制寄存器UMCON0 4-8(12)使Auto Flow Control無效,nRTS由軟件控制,0=Hlevel(去激活n

24、RTS)4-8(13)設(shè)置波特率除數(shù)寄存器UBRDIV0。它存儲在波特率除數(shù)寄存器中的值用于君頂串行發(fā)送接收時(shí)鐘率(波特率)4-8(14)由公式UBRDIVn=(int)(UART clock/(buad rate *16 ))-1得出UBRDIV0中的值為26,決定串行發(fā)送接收時(shí)鐘率(波特率)4-8(15)設(shè)置發(fā)送緩存寄存器UTXH04-8(16)UART0發(fā)送的數(shù)據(jù)為984-8(17)If we add a loop forever we could get a right answer,otherwise the PC will print wrong charater forever.

25、;I think my code is wrong somewhere,but I can not find it out,so I add a loop for get a right answer4-8(18) ;get value of UTRSTAT0 which is the UART status register4-8(19)if the UTRSTAT00 was seted to 1,the buffer register has a received data 4-8(20)將數(shù)據(jù)返回到PC中5、 測試5.1測試工具:硬件:開發(fā)板:友善之臂公司的“mini2440”CPU處

26、理器:SamsungS3C2440A,主頻400MHa,最高533MHzSDRAM內(nèi)存:在板64M SDRAM、32bit數(shù)據(jù)總線、SDRAM時(shí)鐘頻率高達(dá)100MHz仿真器:J-link是SEGGER公司為支持仿真ARM內(nèi)核芯片推出的JTAG仿真器。配合IAR EWARM,ADS,KEIL,WINARM,RealView等集成開發(fā)環(huán)境支持所有ARM7/ARM9內(nèi)核芯片的仿真,通過RDI接口和各集成開發(fā)環(huán)境無縫連接,操作方便、連接方便、簡單易學(xué),是學(xué)習(xí)開發(fā)ARM最好最實(shí)用的開發(fā)串口線軟件:1、 ADS(ARM Developer Suite),是在1993年由Metrowerks公司開發(fā),是AR

27、M處理器下最主要的開發(fā)工具。ADS 是全套的實(shí)時(shí)開發(fā)軟件工具,包編譯器生成的代碼密度和執(zhí)行速度優(yōu)異??煽焖俚蛢r(jià)地創(chuàng)建ARM 結(jié)構(gòu)應(yīng)用。2、JflashARM是J-link燒寫工具3、SecureCRT是一款支持SSH(SSH1和SSH2)的終端仿真程序,簡單的說是Windows下登錄UNIX或Linux服務(wù)器主機(jī)的軟件。不同就是SecureCRT支持SSH,同時(shí)支持Telnet和rlogin協(xié)議。SecureCRT是一款用于連接運(yùn)行包括Windows、UNIX和VMS的理想工具。通過使用內(nèi)含的VCP命令行程序可以進(jìn)行加密文件的傳輸。有流行CRTTelnet客戶機(jī)的所有特點(diǎn),包括:自動注冊、對不

28、同主機(jī)保持不同的特性、打印功能、顏色設(shè)置、可變屏幕尺寸、用戶定義的鍵位圖和優(yōu)良的VT100,VT102,VT220和ANSI競爭.能從命令行中運(yùn)行或從瀏覽器中運(yùn)行.其它特點(diǎn)包括文本手稿、易于使用的工具條、用戶的鍵位圖編輯器、可定制的ANSI顏色等.SecureCRT的SSH協(xié)議支持DES,3DES和RC4密碼和密碼與RSA鑒別.5.2測試過程:1、新建1個(gè)ADS工程,命名為UART,然后新建file文件init.s,在創(chuàng)建放入時(shí)候就將該文件添加到剛建立的UART工程中,并勾上degug、release和debugrel三個(gè)選項(xiàng),需要注意的是過程不能是中文名,路徑不能包含中文。2、 設(shè)置ADS,在Edit ->DebugRel Settings->Linker->ARM formELF中將output format輸出形式

溫馨提示

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

最新文檔

評論

0/150

提交評論