ARM通訊程序設(shè)計_第1頁
ARM通訊程序設(shè)計_第2頁
ARM通訊程序設(shè)計_第3頁
ARM通訊程序設(shè)計_第4頁
ARM通訊程序設(shè)計_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《嵌入式系統(tǒng)二》課程設(shè)計報告ARM通訊程序設(shè)計設(shè)計日期:2011年07月4日至2010年07月8日設(shè)計題目:ARM通訊程序設(shè)計設(shè)計的主要內(nèi)容:確定大概的設(shè)計框架。具體設(shè)計接口設(shè)計硬件設(shè)計畫出軟件流程圖,編程實現(xiàn)三、總結(jié):存在問題與改善,工作小結(jié)指導(dǎo)教師:2011年7月2日教師評閱意見書:評閱教師:2011年月日摘要設(shè)計ARM板到主機的網(wǎng)絡(luò)通信,大致是通過在ARM板的RS232接口接收計算機計算機PC平臺方面:通過Read();Write();兩個函數(shù)負(fù)責(zé)傳出數(shù)據(jù)并接收回顯數(shù)據(jù)。2.4接口設(shè)計通過UART串口通訊,首先是計算機端獲取的鍵盤輸入的數(shù)據(jù),經(jīng)過封裝,用函數(shù)Write()的接口發(fā)送到串口。然后在ARM板方面實現(xiàn)各個針腳對應(yīng)的前提下,ARM板把接口接收到的數(shù)據(jù)進行解包?;匕l(fā)時又對數(shù)據(jù)進行封裝,然后再通過接口通過串口發(fā)送給計算機,計算機通過接口讀的回送的數(shù)據(jù),然后顯示出來。3硬件設(shè)計LPC2132的最小系統(tǒng)以上是LPC2132的最小系統(tǒng),最小系統(tǒng)是任何單片機開發(fā)的最核心部分,它是整個控制模塊最關(guān)鍵的部分。如普通單片機一樣它包括了外部晶振,復(fù)位電路,不過LPC2132在使用時還需另外將幾個管腳拉高或者拉低。LPC2132的串口LPC2132的串口于大部分設(shè)計一樣,由于一般PC機得串口外接處電源電壓為5V,因而需要一塊MAX232芯片將電平經(jīng)行轉(zhuǎn)換才行。圖中由于在proteus中無法找到具體的串口,因而只有兩根線,分別是數(shù)據(jù)發(fā)送和數(shù)據(jù)接收,另外的一根地線在此省去了。LPC2132的顯示電路LPC2132的顯示電路由兩塊74HC595芯片串行控制的,他們在控制時,一塊控制位選,一塊控制段選段,從而完成對于某一位數(shù)碼管的顯示。由于同時只能控制一位七段式數(shù)碼管,因此需要以動態(tài)掃描的形式方能完成完整的顯示。軟件設(shè)計4.1軟件流程圖在使用ARM芯片時,首先需要將芯片進行設(shè)置,這些設(shè)置包括PLL(鎖相環(huán))的設(shè)置,為ARM的各個部分選擇合適的時鐘源,并未各個端口選擇合適的第一,第二或者第三功能。然后根據(jù)要完成的目標(biāo),為UART0經(jīng)行初始化,然后將要發(fā)送的數(shù)據(jù)通過串口發(fā)送給PC機,PC機通過串口接收數(shù)據(jù)后,通過鍵盤講一個指令通過串口返回給ARM,ARM通過串口接收到數(shù)據(jù)后,將它在發(fā)送給數(shù)碼管進行顯示。4.2使用UART進行串口通信,需要設(shè)置以下與UART相關(guān)的寄存器。表①:UART行控制寄存器(ULCONn),其功能及位描述UART行控制寄存器(ULCONn)表eq\o\ac(○,2):UART行控制寄存器(ULCONn)位描述:表eq\o\ac(○,3):UART控制寄存器(UCONn),其功能及位UART控制寄存器表eq\o\ac(○,4):UART控制寄存器(UCONn)位描述表eq\o\ac(○,5):UARTFIFO控制寄存器(UFCONn),其功能及位描述UARTFIFO控制寄存器表eq\o\ac(○,6):UARTFIFO控制寄存器(UFCONn)位描述4.3ARM端主要代碼文件4.4軟件實現(xiàn)代碼/****************************************Copyright(c)**************************************************

**主函數(shù),調(diào)用要實現(xiàn)功能的各函數(shù)

********************************************************************************************************/

#include"config.h"

#include<stdio.h>

/*******************************************************************************************************/

#define UART_BPS 115200 //串口通訊波特率

charINFO[]={"ARMISREADY!"};//

/********************************************************************************************************

**函數(shù)名稱:write595()

**函數(shù)功能:向595芯片中寫入一個數(shù)據(jù)

**入口參數(shù):要向595中寫入的數(shù)據(jù)

**出口參數(shù):無

*********************************************************************************************************/

voidwrite595(unsignedchardata)

{

unsignedchari;

IO0CLR=1<<7;

for(i=0;i<8;i++)

{

if(data&0x80)IO0SET=1<<6;

elseIO0CLR=1<<6;

data<<=1;

IO0SET=1<<4;

IO0CLR=1<<4;

}

IO0SET=1<<7;

}

/********************************************************************************************************

**函數(shù)名稱:voidwrite_data()

**函數(shù)功能:在數(shù)碼管的某一位顯示數(shù)據(jù)

**入口參數(shù):數(shù)碼管的位選和數(shù)碼管的段選

**出口參數(shù):無

*************************************************/

voidwrite_data(unsignedchard,unsignedcharn)

{

write595(~seg[d]);

write595(~(1<<n));

}

************************************************

**函數(shù)名稱:DelayNS()

**函數(shù)功能:長軟件延時************************************************************/

voidDelayNS(uint32dly)

{

uint32i;

for(;dly>0;dly--)

for(i=0;i<50000;i++);

}

/********************************************************************************************************

**函數(shù)名稱:UART0_Init()

**函數(shù)功能:串口初始化,設(shè)置為8位數(shù)據(jù)位,1位停止位,無奇偶校驗,波特率115200。

**入口參數(shù):無

**出口參數(shù):無

*********************************************************************************************************/

voidUART0_Init(void)

{

uint16Fdiv;

PINSEL0=(PINSEL0&(~0x0F))|0x05; //設(shè)置I/O連接到UART0

U0LCR=0x83; //DLAB=1,允許設(shè)置波特率

Fdiv=(Fpclk/16)/UART_BPS; //設(shè)置波特率

U0DLM=Fdiv/256;

U0DLL=Fdiv%256;

U0LCR=0x03;

}

/*******************

**函數(shù)名稱:UART0_GetChar()

**函數(shù)功能:從串口接收字節(jié)數(shù)據(jù),并等待接收完畢,查詢方式。

**入口參數(shù):無

**出口參數(shù):Rcv_Data要返回的數(shù)據(jù)

*********************************************************************************************************/

charUART0_GetChar(void)

{

uint8Rcv_Data;

while((U0LSR&0x01)==0);

Rcv_Data=U0RBR;

return(Rcv_Data);

}

/******************

**函數(shù)名稱:UART0_SendByte()

**函數(shù)功能:向串口發(fā)送字節(jié)數(shù)據(jù),并等待發(fā)送完畢,查詢方式。

**入口參數(shù):dat 要發(fā)送的數(shù)據(jù)

**出口參數(shù):無

******************/

voidUART0_SendByte(uint8dat)

{

U0THR=dat;

while((U0LSR&0x40)==0); //等待數(shù)據(jù)發(fā)送完畢

}

/*******************

**函數(shù)名稱:UART0_SendStr()

**函數(shù)功能:向串口發(fā)送一字符串

**入口參數(shù):str 要發(fā)送的字符串的指針

**出口參數(shù):無

******************/

voidUART0_SendStr(char*str)

{

while(1)

{

if(*str=='\0') break; //遇到結(jié)束符,退出

UART0_SendByte(*str++); //發(fā)送數(shù)據(jù)

}

}

/*******************

**主函數(shù)

**功能:蜂鳴器滴滴間隔的發(fā)出聲響,同時串口以115200波特率打印"Hello,wellcometouseJASK-RF2132DemoBoard!"字樣

******************/

intmain(void)

{

uint8temp;

PINSEL0=0x00000000;

PINSEL1=0x00000000;//IO口初始化

UART0_Init(); //串口初始化

while(1)

{

UART0_SendStr(INFO); //串口打印

temp=UART0_GetChar();

write_data(1,temp);

}

}

/**************************

EndOfFile

************************************************/5總結(jié)5.1存在的問題與解決方法在硬件方面,由于一開始對各種嵌入式系統(tǒng)平臺、對嵌入式系統(tǒng)各端口、端口數(shù)據(jù)幀、端口物理特性等的不了解,以及客觀條件的限制,在硬件的選擇方面花了一定的時間,在ARM7與ARM9、USB接口與RS-232接口的選擇上,我從老師、師兄以及上網(wǎng)找資料了解了這方面信息,并結(jié)合自身條件,從具有實際應(yīng)用價值、開發(fā)難易度、以及開發(fā)時間各方面考慮,最終確定選擇ARM7和RS-232接口。在軟件方面,對于一些寄存器和函數(shù)接口等不熟悉花了太多時間,通過上網(wǎng)及參考了一些資料熟悉各函數(shù)接口及寄存器。在PC端程序中使用了相對比較熟悉的微軟.net平臺,并能快速開發(fā)出通信程序。在網(wǎng)絡(luò)通信方面,一開始通信時遇到接收數(shù)據(jù)不一致甚至亂碼的情況,利用排除法,后發(fā)現(xiàn)由于在嵌入式系統(tǒng)中程序的波特率與PC端接收程序的波特率不一致導(dǎo)致而成。修改之后順利完成。5.2工作小結(jié)通過這次課程設(shè)計,我拓寬了知識面,鍛煉了能力,綜合素質(zhì)得到較大提高。安排課程設(shè)計的基本目的,在于通過理論與實際的結(jié)合、人與人的溝通,進一步提高思想覺悟。尤其是觀察、分析和解決問題的實際工作能力,以便培養(yǎng)成為能夠主動適應(yīng)社會主義現(xiàn)代化建設(shè)需要的高素質(zhì)的復(fù)合型人才。作為整個學(xué)習(xí)體系的有機組成部分,課程設(shè)計雖然安排在兩周進行,但并不具有絕對獨立的意義。它的一個重要功能,在于運用學(xué)習(xí)成果,檢驗學(xué)習(xí)成果。運用學(xué)習(xí)成果,把課堂上學(xué)到的系統(tǒng)化的理論知識,嘗試性地應(yīng)用于實際設(shè)計工作,并從理論的

溫馨提示

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

評論

0/150

提交評論