裸板串口課程設計_第1頁
裸板串口課程設計_第2頁
裸板串口課程設計_第3頁
裸板串口課程設計_第4頁
裸板串口課程設計_第5頁
已閱讀5頁,還剩10頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

3、N0x53000000看門狗定時器控制寄存器0x8021WTCON位描述初始值Watchdog timer【5】看門狗定時器使能位。0=無效 1=有效1Reset enable/disable【1】對于復位信號看門狗定時器 輸出使能位。1:看門狗定時器曹氏,發出s3c2440A復位信號。0:看門狗定時器復位功能無效1Interrupt generation【2】中斷使能位0=無效 1=有效04-1(1)設置看門狗定時器控制寄存器的值,看門狗定時器內部有一個遞減計數器,當該計數器遞減為0的時候,會產生復位控制器信號,自動重啟控制器。在這里,我們為了防止看門狗產生復位控制器信號,將機器重啟,所以要

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

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

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

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

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

9、PCLK是和HCLK/1相同的時鐘1:PCLK是和HCLK/2相同的時鐘04-4(1)設置時鐘分頻器控制寄存器的值,這里我們設置為7,從上表可看出是為了將時鐘頻率設置為PCLK=HCLK/2,因為當CAMDIVN8=1,所以UCLK=FCLK/6,而UCLK=UPLL clock, UPLL時鐘被設置為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配置寄存器寄存器地址讀寫描述復位值MPLLCOM0x4c000004R/WMPLL配置寄存器0x00096030UPLLCOM0x4c000008R/WUPLL配置寄存器0x0004d0304-5(1)先設置MPLL配置寄存器的值,根據公式R1=(U_MDIV<<2)+(U_PDIV<<4)+U_SDIV)得出配置值。4-5(2)這里使用了7個空指令,4-3(1)的PS里已說明這一點4-5(3)再設置UPLL配置寄

11、存器,根據公式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)跳轉到M_INIT,進行內存初始化工作4-5(7)跳轉到StacksInit,進行堆棧初始化4-5(8)跳轉到

13、UART ,進行串口設置 4.4內存初始化代碼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)總線寬度&等待狀態控制寄存器寄存器地址描述復位值BWSCON0x48000000總線寬度&等待狀態控制寄存器0X000000

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

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

17、0位:001:BANK6/7存儲分布為64MB/64MB4-6(12)MRSRB6 模式寄存器集寄存器bank64-6(13)MRSRB7 模式寄存器集寄存器bank7 /0x00000030=110000 /6:4位:100:CAS反應時間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串口設置代碼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)設置端口H控制寄存器GPHC

22、ON,GPHCON與GPHUP是兩個管腳設置寄存器,GPHCON負責GPIO port H設置位,而GPHCON負責GPIO port H設置位4-8(2)把R1和#0xa0按位進行邏輯“或”運算,并把結果存入R。目的是設置GPH2 to TXD0,GPH3 to RXD04-8(3)設置GPHUP 4-8(4)the pull up function is disabled,到這里的前幾個步驟都是在設置UART的管腳模式4-8(5)設置線性控制寄存器ULCON0,它主要用來配置奇偶校驗模式、停止位、字長,即UART的通訊模式4-8(6)將0x3=00000011送入線性控制器,即控制發送接搜

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

24、RTS)4-8(13)設置波特率除數寄存器UBRDIV0。它存儲在波特率除數寄存器中的值用于君頂串行發送接收時鐘率(波特率)4-8(14)由公式UBRDIVn=(int)(UART clock/(buad rate *16 ))-1得出UBRDIV0中的值為26,決定串行發送接收時鐘率(波特率)4-8(15)設置發送緩存寄存器UTXH04-8(16)UART0發送的數據為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)將數據返回到PC中5、 測試5.1測試工具:硬件:開發板:友善之臂公司的“mini2440”CPU處

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

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

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

溫馨提示

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

評論

0/150

提交評論