嵌入式課程設(shè)計--串口通信_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  計算機科學(xué)與技術(shù)學(xué)院</p><p><b>  課程設(shè)計報告</b></p><p>  2010— 2011學(xué)年第 1 學(xué)期</p><p>  課程名稱:ARM原理與C語言程序設(shè)計 </p><p>  設(shè)計題目:串 口 通 信

2、 </p><p>  學(xué)生姓名: </p><p>  學(xué) 號: </p><p>  專業(yè)班級:計算機07—2班 </p><p>  指導(dǎo)教師:

3、 </p><p>  2010 年 11 月 23 日</p><p><b>  目錄</b></p><p><b>  摘要1</b></p><p>  第1章 設(shè)計要求和目的2</p><p><b&g

4、t;  1.1設(shè)計要求2</b></p><p><b>  1.2設(shè)計目的2</b></p><p>  第2章 設(shè)計方案3</p><p><b>  2.1設(shè)計方案3</b></p><p>  2.1.1S3C2410X 串行通訊(UART)單元3</p>

5、<p>  2.1.2 波特率的產(chǎn)生3</p><p>  2.1.3 UART 通信操作3</p><p>  2.1.4 UART 控制寄存器4</p><p>  2.1.5 UART 初始化代碼6</p><p>  2.1.6 RS232 接口電路8</p><p>  2.1.7串口接

6、收設(shè)置8</p><p>  2.1.8調(diào)試運行結(jié)果9</p><p><b>  2.2硬件裝置9</b></p><p>  2.2.1Embest EduKit-III 實驗平臺9</p><p>  2.2.2ULINK2 仿真器套件,PC 機10</p><p>  2.3 軟

7、件設(shè)計10</p><p>  2.3.2程序代碼設(shè)計11</p><p><b>  總結(jié)與體會12</b></p><p><b>  參考文獻13</b></p><p><b>  摘要</b></p><p>  【摘要】 ARM 微

8、處理器因其卓越的低功耗、高性能在 32 位嵌入式應(yīng)用中已位居世界第一,是高性能、低功耗嵌入式處理器的代名詞,為了順應(yīng)當(dāng)今世界技術(shù)革新的潮流,了解、學(xué)習(xí)和掌握嵌入式技術(shù),就必然要學(xué)習(xí)和掌握以ARM 微處理器為核心的嵌入式開發(fā)環(huán)境和開發(fā)平臺,這對于研究和開發(fā)高性能微處理器、DSP 以及開發(fā)基于微處理器的SOC 芯片設(shè)計及應(yīng)用系統(tǒng)開發(fā)是非常必要的。前一段時間我學(xué)習(xí)了ARM原理和C語言程序設(shè)計的 ,初步的掌握了S3C2410X處理器和PC機結(jié)合

9、,這里我簡單介紹S3C2410X 處理器 UART 相關(guān)控制寄存器的使用熟悉ARM 處理器系統(tǒng)硬件電路中 UART 接口的設(shè)計方法。掌握ARM 處理器串行通信的軟件編程方法。</p><p>  【關(guān)鍵字】 Embest EduKit-III 實驗平臺;S3C2410X 串行通訊(UART)單元;波特率;UART 控制寄存器;RS232 接口;串口通信;串口接收</p><p>  第1

10、章 設(shè)計要求和目的</p><p><b>  1.1設(shè)計要求</b></p><p>  設(shè)計簡單的程序使用S3C2410X處理器URAT相關(guān)控制器及PC機成功完成串口通信,并掌握串口通信的原理及相關(guān)寄存器的初始化。</p><p><b>  1.2設(shè)計目的</b></p><p>  《ARM

11、原理和C語言程序設(shè)計》是計算機專業(yè)硬件方向?qū)W生的專業(yè)限選課程,本次課程設(shè)計主要是檢驗學(xué)生是否掌握相關(guān)專業(yè)課程知識,充分調(diào)動學(xué)生的積極性和創(chuàng)造性,重視學(xué)生實際動手能力的培養(yǎng)。</p><p>  通過本課程設(shè)計是學(xué)生加深理解鞏固課堂教學(xué)和平時實驗內(nèi)容,是學(xué)生了解S3C2410X處理器URAT相關(guān)控制器的使用,熟悉ARM處理器系統(tǒng)硬件電路中UART接口的設(shè)計方法,掌握ARM處理器串行通信的軟件編程方法。強化學(xué)生的知識

12、時間意識、提高動手能力。</p><p><b>  第2章 設(shè)計方案</b></p><p><b>  2.1設(shè)計方案1</b></p><p>  2.1.1S3C2410X 串行通訊(UART)單元 </p><p>  S3C2410X UART 單元提供三個獨立的異步串行通信接口,皆可

13、工作于中斷和DMA 模式。使用系統(tǒng)時鐘最高波特率達230.4Kbps,如果使用外部設(shè)備提供的時鐘,可以達到更高的速率。每一個UART 單元包含一個 16 字節(jié)的FIFO,用于數(shù)據(jù)的接收和發(fā)送。 </p><p>  S3C44B0X UART 支持可編程波特率,紅外發(fā)送/接收,一個或兩個停止位,5bit/6bit/ 7bit/ 或 8bit 數(shù)據(jù)寬度和奇偶校驗。</p><p>  2.1

14、.2 波特率的產(chǎn)生 </p><p>  波特率由一個專用的UART 波特率分頻寄存器(UBRDIVn )控制,計算公式如下: </p><p>  UBRDIVn = (int)(ULK/(bps x 16) ) –1 </p><p>  或者UBRDIVn = (int)(PLK/(bps x 16) ) –1 </p><p>  其

15、中:時鐘選用 ULK 還是 PLK 由 UAR控制寄存器 UCONn[10]的狀態(tài)決定。如果 UCONn[10]=0,用PLK 作為波特率發(fā)生,否則選用ULK 做波特率發(fā)生。UBRDIVn 的值必須1到(-1)之間。</p><p>  例如:ULK 或者PLK 等于40MHz,當(dāng)波特率為 115200 時, </p><p>  UBRDIVn = (int)(40000000/(11

16、5200 x 16) ) -1 </p><p>  = (int)(21.7) -1 </p><p>  = 21-1 = 20</p><p>  2.1.3 UART 通信操作 </p><p>  下面簡略介紹 UART 操作,關(guān)于數(shù)據(jù)發(fā)送,數(shù)據(jù)接收,中斷產(chǎn)生,波特率產(chǎn)生,輪流檢測模式,紅外模式和自動流控制的詳細介紹,請參照相關(guān)教

17、材和數(shù)據(jù)手冊。 </p><p>  發(fā)送數(shù)據(jù)幀是可編程的。一個數(shù)據(jù)幀包含一個起始位,5 到8 個數(shù)據(jù)位,一個可選的奇偶校驗位和 1 到2 位停止位,停止位通過行控制寄存器ULCONn 配置。 </p><p>  與發(fā)送類似,接收幀也是可編程的。接收幀由一個起始位,5 到8 個數(shù)據(jù)位,一個可選的奇偶校驗和1 到2 位行控制寄存器ULCONn 里的停止位組成。接收器還可以檢測溢出錯,奇偶校

18、驗錯,幀錯誤和傳輸中斷,每一個錯誤均可以設(shè)置一個錯誤標(biāo)志。 </p><p>  溢出錯誤(Overrun error)是指已接收到的數(shù)據(jù)在讀取之前被新接收的數(shù)據(jù)覆蓋。 </p><p>  奇偶校驗錯是指接收器檢測到的校驗和與設(shè)置的不符。 </p><p>  幀錯誤指沒有接收到有效的停止位。 </p><p>  傳輸中斷表示接收數(shù)據(jù)Rx

19、Dn 保持邏輯0 超過一幀的傳輸時間。 </p><p>  在FIFO 模式下,如果RxFIFO 非空,而在3 個字的傳輸時間內(nèi)沒有接收到數(shù)據(jù),則產(chǎn)生超時。</p><p>  2.1.4 UART 控制寄存器 </p><p>  1) UART 行控制寄存器 ULCONn </p><p>  該寄存器的第6 位決定是否使用紅外模式,位

20、 5~3 決定校驗方式,位2 決定停止位長度,位 1 和0決定每幀的數(shù)據(jù)位數(shù)。 </p><p>  2)UART 控制寄存器 UCONn </p><p>  該寄存器決定UART 的各種模式。 </p><p>  UCONn[10]= 1 : ULK 做比特率發(fā)生;0:PLK 做比特率發(fā)生。 </p><p>  UCONn[9] =

21、 1: Tx 中斷電平觸發(fā);0:Tx 中斷脈沖觸發(fā)。 </p><p>  UCONn[8] = 1: Rx 中斷電平觸發(fā);0:Rx 中斷脈沖觸發(fā)。 </p><p>  UCONn[7] = 1: 接收超時中斷允許;0:接收超時中斷不允許。 </p><p>  UCONn[6] = 1: 產(chǎn)生接收錯誤中斷;0:不產(chǎn)生接收錯誤中斷。 </p&g

22、t;<p>  UCONn[5] = 1: 發(fā)送直接傳給接收方式(Loopback);0:正常模式。 </p><p>  UCONn[4] = 1: 發(fā)送間斷信號;0:正常模式發(fā)送。 </p><p>  UCONn[3:2]: 發(fā)送模式選擇 </p><p>  00:不允許發(fā)送; </p><p>  01:

23、中斷或查詢模式 </p><p>  10:DMA0 請求(UART0 ) </p><p>  DMA3 請求(UART2 ) </p><p>  11: DMA1 請求(UART1 ). </p><p>  UCONn[1:0] : 接收模式選擇 </p><p>  00 :不允許接收 </p

24、><p>  01 :中斷或查詢模式 </p><p>  10 :DMA0 請求(UART0 ) </p><p>  DMA3 請求(UART2 ) </p><p>  11:DMA1 請求(UART1 ) </p><p>  3) UART FIFO 控制寄存器 UFCONn</p><p&g

25、t;  UFCONn[7:6] =00:Tx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p>  01:Tx FIFO 寄存器中有4 個字節(jié)就觸發(fā)中斷 </p><p>  10:Tx FIFO 寄存器中有8 個字節(jié)就觸發(fā)中斷 </p><p>  11:Tx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p>  UF

26、CONn[5:4] =00: Rx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p>  01:Rx FIFO 寄存器中有4 個字節(jié)就觸發(fā)中斷 </p><p>  10:Rx FIFO 寄存器中有8 個字節(jié)就觸發(fā)中斷 </p><p>  11:Rx FIFO 寄存器中有0 個字節(jié)就觸發(fā)中斷 </p><p>  UFCONn[3

27、]:保留。 </p><p>  UFCONn[2] =1:FIFO 復(fù)位清零Tx FIFO; 0:FIFO 復(fù)位不清零Tx FIFO </p><p>  UFCONn[1] =1:FIFO 復(fù)位清零 Rx FIFO; 0:FIFO 復(fù)位不清零 Rx FIFO </p><p>  UFCONn[0] =1:允許 FIFO 功能; 0:不允許FIFO 功能 <

28、;/p><p>  4) UART MODEM 控制寄存器 UMCONn(n=0 或 1) </p><p>  UMCONn[7:5] 保留,必須全為 0 </p><p>  UMCONn[4] =1:允許使用AFC 模式; 0:不允許使用AFC </p><p>  UMCONn[3:1] 保留,必須全

29、為 0 </p><p>  UMCONn[0] =1:激活nRTS; 0:不激活 nRTS </p><p>  5) 發(fā)送寄存器 UTXH 和接收寄存器 URXH </p><p>  這兩個寄存器存放著發(fā)送和接收的數(shù)據(jù),當(dāng)然只有一個字節(jié)8位數(shù)據(jù)。需要注意的是在 </p><p>  發(fā)生溢出錯誤的時候,接收的數(shù)據(jù)必須被讀出來,否則會引

30、發(fā)下次溢出錯誤。</p><p>  6) 波特率分頻寄存器 UBRDIV。 </p><p>  在例程目錄下的common\include\2410addr.h 文件中有關(guān)于UART 單元各寄存器的定義。 </p><p><b>  // UART </b></p><p>  #define rULCON0

31、 (*(volatile unsigned *)0x50000000) //UART 0 Line control </p><p>  #define rUCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control </p><p>  #define rUFCON0 (*(volatile unsigned *

32、)0x50000008) //UART 0 FIFO control </p><p>  #define rUMCON0 (*(volatile unsigned *)0x5000000c) //UART 0 Modem control </p><p>  #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART

33、0 Tx/Rx status </p><p>  #define rUERSTAT0 (*(volatile unsigned *)0x50000014) //UART 0 Rx error status </p><p>  #define rUFSTAT0 (*(volatile unsigned *)0x50000018) //UART 0 FIFO status <

34、;/p><p>  #define rUMSTAT0 (*(volatile unsigned *)0x5000001c) //UART 0 Modem status </p><p>  #define rUBRDIV0 (*(volatile unsigned *)0x50000028) //UART 0 Baud rate divisor </p><p&

35、gt;  #define rULCON1 (*(volatile unsigned *)0x50004000) //UART 1 Line control </p><p>  #define rUCON1 (*(volatile unsigned *)0x50004004) //UART 1 Control </p><p>  #define rUFCON1

36、(*(volatile unsigned *)0x50004008) //UART 1 FIFO control </p><p>  #define rUMCON1 (*(volatile unsigned *)0x5000400c) //UART 1 Modem control </p><p>  #define rUTRSTAT1 (*(volatile unsigned

37、 *)0x50004010) //UART 1 Tx/Rx status </p><p>  #define rUERSTAT1 (*(volatile unsigned *)0x50004014) //UART 1 Rx error status </p><p>  #define rUFSTAT1 (*(volatile unsigned *)0x50004018) //

38、UART 1 FIFO status </p><p>  #define rUMSTAT1 (*(volatile unsigned *)0x5000401c) //UART 1 Modem status </p><p>  #define rUBRDIV1 (*(volatile unsigned *)0x50004028) //UART 1 Baud rate divi

39、sor </p><p>  #define rULCON2 (*(volatile unsigned *)0x50008000) //UART 2 Line control </p><p>  #define rUCON2 (*(volatile unsigned *)0x50008004) //UART 2 Control </p><p>

40、  #define rUFCON2 (*(volatile unsigned *)0x50008008) //UART 2 FIFO control </p><p>  #define rUMCON2 (*(volatile unsigned *)0x5000800c) //UART 2 Modem control </p><p>  #define r

41、UTRSTAT2 (*(volatile unsigned *)0x50008010) //UART 2 Tx/Rx status </p><p>  #define rUERSTAT2 (*(volatile unsigned *)0x50008014) //UART 2 Rx error status </p><p>  #define rUFST

42、AT2 (*(volatile unsigned *)0x50008018) //UART 2 FIFO status </p><p>  #define rUMSTAT2 (*(volatile unsigned *)0x5000801c) //UART 2 Modem status </p><p>  #define rUBRDIV2

43、 (*(volatile unsigned *)0x50008028) //UART 2 Baud rate divisor </p><p>  #ifdef __BIG_ENDIAN </p><p>  #define rUTXH0 (*(volatile unsigned char *)0x50000023) //UART 0 Transmission

44、Hold </p><p>  #define rURXH0 (*(volatile unsigned char *)0x50000027) //UART 0 Receive buffer </p><p>  #define rUTXH1 (*(volatile unsigned char *)0x50004023) //UART 1 Tran

45、smission Hold </p><p>  #define rURXH1 (*(volatile unsigned char *)0x50004027) //UART 1 Receive buffer </p><p>  #define rUTXH2 (*(volatile unsigned char *)0x50008023) //UA

46、RT 2 Transmission Hold </p><p>  #define rURXH2 (*(volatile unsigned char *)0x50008027) //UART 2 Receive buffer </p><p>  #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000023)=(

47、unsigned char)(ch) </p><p>  #define RdURXH0() (*(volatile unsigned char *)0x50000027) </p><p>  #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004023)=(unsigned char)(ch) </p>

48、;<p>  #define RdURXH1() (*(volatile unsigned char *)0x50004027) </p><p>  #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008023)=(unsigned char)(ch) </p><p>  #define RdURXH

49、2() (*(volatile unsigned char *)0x50008027) </p><p>  #define UTXH0 (0x50000020+3) //Byte_access address by DMA </p><p>  #define URXH0 (0x50000024+3) <

50、/p><p>  #define UTXH1 (0x50004020+3) </p><p>  #define URXH1 (0x50004024+3) </p><p>  #define UTXH2 (0x50008020+3) </p><p>  #define

51、URXH2 (0x50008024+3) </p><p>  #else //Little Endian </p><p>  #define rUTXH0 (*(volatile unsigned char *)0x50000020) //UART 0 Transmission Hold </p><p>  #define rURXH

52、0 (*(volatile unsigned char *)0x50000024) //UART 0 Receive buffer </p><p>  #define rUTXH1 (*(volatile unsigned char *)0x50004020) //UART 1 Transmission Hold </p><p>  #define rURXH1 (*(volatile

53、 unsigned char *)0x50004024) //UART 1 Receive buffer </p><p>  #define rUTXH2 (*(volatile unsigned char *)0x50008020) //UART 2 Transmission Hold </p><p>  #define rURXH2 (*(volatile unsigned cha

54、r *)0x50008024) //UART 2 Receive buffer </p><p>  #define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch) </p><p>  #define RdURXH0() (*(volatile unsigned char *)

55、0x50000024) </p><p>  #define WrUTXH1(ch) (*(volatile unsigned char *)0x50004020)=(unsigned char)(ch) </p><p>  #define RdURXH1() (*(volatile unsigned char *)0x50004024) </p><

56、p>  #define WrUTXH2(ch) (*(volatile unsigned char *)0x50008020)=(unsigned char)(ch) </p><p>  #define RdURXH2() (*(volatile unsigned char *)0x50008024) </p><p>  #define UTXH0

57、 (0x50000020) //Byte_access address by DMA </p><p>  #define URXH0 (0x50000024) </p><p>  #define UTXH1 (0x50004020) </p><p>  #define URXH1

58、 (0x50004024) </p><p>  #define UTXH2 (0x50008020) </p><p>  #define URXH2 (0x50008024) </p><p><b>  #endif </b></p><p>  2.1.5 UART 初

59、始化代碼 </p><p>  下面列出的兩個函數(shù),是我們本實驗用到的兩個主要函數(shù),包括 UART 初始化,字符 </p><p>  的接收函數(shù),希望大家仔細閱讀,理解每一行的含義。這幾個函數(shù)可以在例程目錄下 </p><p>  \common\include\2410lib.c 文件內(nèi)找到。 </p><p>  void uart_i

60、nit(int nMainClk, int nBaud, int nChannel) </p><p><b>  { </b></p><p><b>  int i; </b></p><p>  if(nMainClk == 0) </p><p>  nMainClk = PCLK; <

61、;/p><p>  switch (nChannel) </p><p><b>  { </b></p><p>  case UART0: </p><p>  rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disable </p

62、><p>  rUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disable </p><p>  rULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits </p><p>  rUCON0 =

63、 0x245; // Control register </p><p>  rUBRDIV0=( (int)(nMainClk/16./nBaud+0.5) -1 ); // Baud rate divisior register0</p><p><b>  break; </b></p><p>  case UART1: &l

64、t;/p><p>  rUFCON1 = 0x0; //UART channel 1 FIFO control register, FIFO disable </p><p>  rUMCON1 = 0x0; //UART chaneel 1 MODEM control register, AFC disable </p><p>  rULCON1

65、= 0x3; </p><p>  rUCON1 = 0x245; </p><p>  rUBRDIV1=( (int)(nMainClk/16./nBaud) -1 ); </p><p><b>  break; </b></p><p>  case UART2: </p><p>  r

66、ULCON2 = 0x3; </p><p>  rUCON2 = 0x245;</p><p>  rUBRDIV2=( (int)(nMainClk/16./nBaud) -1 ); </p><p>  rUFCON2 = 0x0; //UART channel 2 FIFO control register, FIFO disable </

67、p><p><b>  break; </b></p><p><b>  default: </b></p><p><b>  break; </b></p><p><b>  } </b></p><p>  for(i=0;i

68、<100;i++); </p><p>  delay(0); </p><p><b>  } </b></p><p>  下面是接收字符的實現(xiàn)函數(shù): </p><p>  /********************************************************************

69、**********</p><p>  * name: uart_getch </p><p>  * func: Get a character from the uart </p><p>  * para: none </p><p>  * ret: get a

70、 char from uart channel </p><p>  * modify: </p><p>  * comment: </p><p>  ******************************************************************************/ </p><p>  cha

71、r uart_getch(void) </p><p><b>  { </b></p><p>  if(f_nWhichUart==0) </p><p><b>  { </b></p><p>  while(!(rUTRSTAT0 & 0x1)); //Receive data r

72、eady </p><p>  return RdURXH0(); </p><p><b>  } </b></p><p>  else if(f_nWhichUart==1) </p><p><b>  { </b></p><p>  while(!(rUTRSTA

73、T1 & 0x1)); //Receive data ready </p><p>  return RdURXH1(); </p><p><b>  } </b></p><p>  else if(f_nWhichUart==2) </p><p><b>  { </b></p

74、><p>  while(!(rUTRSTAT2 & 0x1)); //Receive data ready </p><p>  return RdURXH2(); </p><p><b>  } </b></p><p><b>  } </b></p><p> 

75、 2.1.6 RS232 接口電路 </p><p>  本教學(xué)實驗平臺的電路中,UART0 串口電路如圖4-4-1 所示,UART0 只采用二根接線 RXD0 和TXD0,因此只能進行簡單的數(shù)據(jù)傳輸及接收功能。UART0 則采用MAX3221E作為電平轉(zhuǎn)換器。</p><p>  2.1.7串口接收設(shè)置</p><p>  在PC 機上運行windows 自帶的

76、超級終端串口通信程序(波特率115200、1 位停止位、無校驗位、無硬件流控制)如圖4-4-2 所示;或者使用其它串口通信程序。</p><p>  2.1.8調(diào)試運行結(jié)果</p><p>  如果輸入就會馬上顯示在超級終端上(假設(shè)輸入為abcdefg),輸入回車符后打印一整串字符:</p><p>  按回車鍵就會顯示:abcdefg 串口通信成功完成。<

77、/p><p><b>  2.2硬件裝置</b></p><p>  2.2.1Embest EduKit-III 實驗平臺</p><p>  采用雙CPU子板,ARM7 S3C44B0子板,ARM9 S3C2410子板,16M NandFlash;4Kbit IIC BUS 的串行EEPROM ,2個串口,兩個中斷按鈕,4個LED, 320*2

78、40 STN 彩色 LCD及TSP觸摸屏,4×5鍵盤,20針JTAG接口,PS/2接口, 2個USB主口;1個USB從口, Sd卡,VGA接口,雙PCI擴展接口,雙以太網(wǎng)接口,8段數(shù)碼管,雙CAN總線模塊,A/D 、D/A 模塊,IDE 硬盤 +CF 卡模塊 ;固態(tài)硬盤 16M × 8bit,MICROPHONE 輸入口,IIS 音頻信號輸出口,GPRS 模塊(選配),GPS 模塊(選配)。</p>&

79、lt;p>  多外擴模塊支持:提供 GPRS 模塊、提供 GPS 模塊、步進電機模塊、攝像模塊、PCI外部焊接板</p><p>  核心模塊:基于ARM7架構(gòu)的嵌入式芯片三星S3C44B0x芯片(或ARM9架構(gòu)的嵌入式芯片三星S3C2410V6),整套系統(tǒng)可通過CPU子板可自由更換變化為ARM7或者ARM9</p><p>  電源:外部5V電源供電或者由USB接PC供電,電源指示

80、LED以及500mA保險絲</p><p>  2M×16bit Flash;4M×16bit SDRM</p><p><b>  復(fù)位開關(guān)</b></p><p>  Embest EDUKIT-III軟件配置:uCosII 實時操作系統(tǒng)移植例子以及源代碼,uClinux實時操作系統(tǒng)移植例子以及源代碼,Linux實時操作

81、系統(tǒng)移植例子以及源代碼,WinCE實時操作系統(tǒng)移植例子*,Vxworks實時操作系統(tǒng)移植例子,GNU toolchain including ARM cross compiler, Linker, Assembler, and Utilities,基于Embest IDE Pro for ARM環(huán)境和Embest EDUKIT-III實驗箱實驗源程序。 </p><p>  2.2.2ULINK2 仿真器套件,

82、PC 機</p><p>  ULINK2不僅具有ULINK仿真器的所有功能,還增加了串行調(diào)試(SWD)支持,返回時鐘支持和實時代理等功能。開發(fā)工程師通過結(jié)合使用RealView MDK的調(diào)試器和ULINK2,可以方便的在目標(biāo)硬件上進行片上調(diào)試(使用on-chip JTAG,SWD和OCDS)、Flash編程。</p><p><b>  2.3 軟件設(shè)計</b>&l

83、t;/p><p>  2.3.1軟件設(shè)備 </p><p>  Embest IDE for ARM 集成開發(fā)環(huán)境,Windows 98/2000/NT/XP</p><p>  2.3.2程序代碼設(shè)計</p><p>  /**********************************************************

84、********************</p><p>  * File: uart_communication.c </p><p>  * Author: embest </p><p>  * Desc: uart test file </p><p>  * History: </p><p> 

85、 * R.X.Huang, Programming modify, March 12, 2005 </p><p>  ******************************************************************************/ </p><p>  /* include

86、files */ </p><p>  #include "2410lib.h" </p><p>  /* function declare */ </p><p>  /****************************

87、************************************************** </p><p>  * name: uart0_test </p><p>  * func: uart test function</p><p>  *****************************************

88、*************************************/</p><p>  * para: none </p><p>  * ret: none </p><p>  * modify: </p><p>  * comment: </p><p>  *******

89、***********************************************************************/ </p><p>  void uart0_test() </p><p><b>  { </b></p><p>  char cInput[256]; </p><p>

90、  U8 ucInNo=0; </p><p><b>  char c; </b></p><p>  uart_init(0,115200,0); </p><p>  uart_printf("\n UART0 communication test!!\n"); </p><p>  uart_

91、printf(" Please input words that you want to transmit:\n"); </p><p>  uart_printf(" "); </p><p>  g_nKeyPress = 1; </p><p>  while(g_nKeyPress==1)

92、 // only for board test to exit </p><p><b>  { </b></p><p>  c=uart_getch(); </p><p>  //uart_sendbyte(c); </p><p>  uart_printf("%c",c);

93、 </p><p>  if(c!='\r') </p><p>  cInput[ucInNo++]=c; </p><p><b>  else </b></p><p><b>  { </b></p><p>  cInput[ucInNo]='

94、;\0'; </p><p><b>  break; </b></p><p><b>  } </b></p><p><b>  } </b></p><p>  delay(1000); </p><p>  uart_printf(&q

95、uot;The words that you input are:\n"); </p><p>  uart_printf(cInput); </p><p><b>  } </b></p><p>  串口通信函數(shù)庫中的其它函數(shù): </p><p>  void uart_getString(char *p

96、String); </p><p>  int uart_getintnum(void); </p><p>  void uart_sendbyte(int nData); </p><p>  void uart_sendstring(char *pString);</p><p><b>  總結(jié)與體會</b>&l

97、t;/p><p>  一方面,通過這次的課程設(shè)計,我對關(guān)于Embest EduKit-III 實驗平臺,ULINK2 仿真器套件,S3C2410X 串行通訊(UART)單元結(jié)構(gòu)的知識有了更加深刻的理解,而且對其用法掌握的更加熟練。在課程設(shè)計過程中,能夠不斷地發(fā)現(xiàn)問題,并想辦法解決,如此提高了我自己解決問題的能力。在程序設(shè)計方面,我對串口通信的過程有了更深刻的理解和領(lǐng)會。此次課程設(shè)計讓我還讓我知道了Embest Edu

98、Kit-III 實驗平臺的構(gòu)造及功能。同時我也明白了理論和實踐的差距,深切體會了動手能力的重要性。</p><p>  另一方面,我感覺這次的課程設(shè)計我自己的效率不高,有時候被一些問題困惑了很久,但經(jīng)過同學(xué)的幫忙,我才恍然大悟,原來只要換個方式思考問題就能想到很好的方法。 </p><p><b>  參考文獻</b></p><p>  [1

99、]  張勇編著.《ARM原理與C語言程序設(shè)計》. 西安:西安電子科技大學(xué)出版社,2004.</p><p>  [2]  王勇編著.《嵌入式系統(tǒng)原理與設(shè)計》. 杭州:浙江大學(xué)出版社,2007.</p><p>  [3]  馬忠梅.《ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用》. 北京:北京航空航天大學(xué)出版社,2002.</p>

100、<p>  [4]  周立功 等編著.《ARM微控制器基礎(chǔ)與實戰(zhàn)》. 北京:北京航空航天大學(xué)出版社,2003.</p><p>  [5]  王田苗主編.《嵌入式系統(tǒng)設(shè)計與實例開發(fā)》. 北京:清華大學(xué)出版社,2002.</p><p>  [6]  周立功 等編著.《PXA270 & Linu

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論