




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、北 華 航 天 工 業(yè) 學(xué) 院課程設(shè)計報告(論文)設(shè)計課題:CAN總線與GPS模塊 數(shù)據(jù)通信 專業(yè)班級: B11212 學(xué)生姓名: 王冰 王曉瑞 巴雅芳 趙雪志 彭宇龍指導(dǎo)教師: 姚曉瓊 設(shè)計時間: 2014年6月 北華航天工業(yè)學(xué)院電子工程系 CAN總線與GPS模塊數(shù)據(jù)通信 課程設(shè)計任務(wù)書姓 名:王冰專 業(yè):電子信息工程班 級:B11212指導(dǎo)教師: 姚曉瓊職 稱:教授 學(xué) 號:()課程設(shè)計題目:CAN總線與GPS模塊數(shù)據(jù)通信設(shè)計要求:1、 實現(xiàn)雙機(jī)CAN總線數(shù)據(jù)通信2、 實現(xiàn)單臺實驗箱GPS模塊信息接收并顯示(超級終端或?qū)嶒炏銵CD顯示)3、 兩臺實驗箱數(shù)據(jù)通信:一臺實驗箱通過GPS模塊接收
2、數(shù)據(jù),通過CAN總線發(fā)送,另一臺實驗箱從CAN總線接收數(shù)據(jù)并通過超級終端顯示4、 實現(xiàn)第3步,顯示改為實驗箱的LCD所需儀器設(shè)備:電腦,2個嵌入式實驗箱(含硬件仿真器),GPS模塊、天線。成果驗收形式:演示,在超級終端或LCD上顯示實驗結(jié)果參考文獻(xiàn):嵌入式系統(tǒng)設(shè)計與實例開發(fā)清華大學(xué)出版社嵌入式處理器分類與現(xiàn)狀液晶顯示器的基本常識嵌入式系統(tǒng)構(gòu)建時間安排(一)周一上午的工作安排(2014年6月9日):1、全體學(xué)生集中,介紹和說明本次綜合課程設(shè)計的目的、實施方法和要完成的任務(wù)內(nèi)容2、給學(xué)生一些本次綜合課程設(shè)計相關(guān)參考資料(二)周一下午至周五(2014年6月9日-2014年6月13日):1、各小組完成
3、實驗要求2、 最后一天驗收學(xué)生的課程設(shè)計成果(周五)2014年 6月 日注:本表下發(fā)學(xué)生一份,指導(dǎo)教師一份,欄目不夠時請另附頁。課程設(shè)計任務(wù)書裝訂于設(shè)計計算說明書(或論文)封面之后,目錄頁之前。內(nèi) 容 摘 要 在當(dāng)今的工業(yè)現(xiàn)場總線技術(shù)中,CAN總線技術(shù)憑借其實現(xiàn)數(shù)據(jù)通信的高可靠性、實時性和靈活性等優(yōu)點,廣泛運用于各個領(lǐng)域;無限數(shù)據(jù)通信網(wǎng)絡(luò)的發(fā)展,使數(shù)據(jù)傳輸更加方便。本文提出了一種基于CAN總線與GPS的數(shù)據(jù)通信系統(tǒng),給出了系統(tǒng)設(shè)計方案。索引關(guān)鍵詞:CAN總線 GPS模塊 目 錄一 概 述 1二 方案設(shè)計與論證1三 單元程序設(shè)1 3.1.發(fā)送程序GPS13.2 接收程序 15 四 結(jié)論18五 心
4、得體會18六 參考文獻(xiàn)18 一、概述 CAN是控制器局域網(wǎng)絡(luò)(Controller Area Network, CAN)的簡稱,是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā)了的,并最終成為國際標(biāo)準(zhǔn)(ISO 11898)。是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。 在北美和西歐,CAN總線協(xié)議已經(jīng)成為汽車計算機(jī)控制系統(tǒng)和嵌入式工業(yè)控制局域網(wǎng)的標(biāo)準(zhǔn)總線,并且擁有以CAN為底層協(xié)議專為大型貨車和重工機(jī)械車輛設(shè)計的J1939協(xié)議。GPS模塊就是集成了RF射頻芯片、基帶芯片和核心CPU,并加上相關(guān)外圍電路而組成的一個集成電路。目前GPS模塊的GPS芯片大部分還是采用全球市占率第一的SiRFIII系列為
5、主。S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用FBGA封裝,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個USB主機(jī),1個USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運行在203MHz。本次課設(shè)就是利用CAN總線實現(xiàn)一臺實驗箱接受GPS數(shù)據(jù)另一
6、臺實驗箱顯示實驗數(shù)據(jù)。2、 方案設(shè)計與論證1、實現(xiàn)雙機(jī)CAN總線數(shù)據(jù)通信(CAN總線調(diào)通,能實現(xiàn)簡單的字符串的接受發(fā)送)2、實現(xiàn)CAN總線程序與GPS模塊程序的融合并用超級終端顯示三、單元程序設(shè)計1、發(fā)送程序#include #include #include .incgps.h#include inc/sys/uart.h#define USE_BEIJING_TIMEZONEstatic int GetComma(int num,char* str);static void UTC2BTC(date_time *GPS);static double get_double_number(ch
7、ar *s);/*int n;unsigned int id;int length;BOOL rxRTR, isExt;U8 data18=0,;U8 gps14;U8 i=0,flag=0;*/void show_gps(int a,GPS_INFO *GPS)char *data;if(a)show_date(GPS-D.year,GPS-D.month,GPS-D.day);show_time(GPS-D.hour,GPS-D.minute,GPS-D.second);Uart_Printf(0,DATE : %0ld-%02d-%02d n,GPS-D.year,GPS-D.month
8、+1,GPS-D.day+1);Uart_Printf(0,TIME : %02d:%02d:%02d n,GPS-D.hour,GPS-D.minute+1,GPS-D.second+1);Uart_Printf(0,Latitude : %.4f %cn,GPS-latitude,GPS-NS);Uart_Printf(0,Longitude : %.4f%cn,GPS-longitude,GPS-EW);Uart_Printf(0,Highness : %.4f n,GPS-high);Uart_Printf(0,STATUS : %cn,GPS-status);/*if(!a)if(n
9、=canPoll()!=-1)canRead(n, &id, data1, &length, &rxRTR, &isExt);if(data0=r)/發(fā)送換行Uart_SendByte(0,n);if(iD.hour =(buf 7-0)*10+(buf 8-0);GPS-D.minute =(buf 9-0)*10+(buf10-0);GPS-D.second =(buf11-0)*10+(buf12-0);tmp = GetComma(9,buf);GPS-D.day =(buftmp+0-0)*10+(buftmp+1-0);GPS-D.month =(buftmp+2-0)*10+(b
10、uftmp+3-0);GPS-D.year =(buftmp+4-0)*10+(buftmp+5-0)+2000;GPS-status =bufGetComma(2,buf);GPS-latitude =get_double_number(&bufGetComma(3,buf);GPS-NS =bufGetComma(4,buf);GPS-longitude=get_double_number(&bufGetComma(5,buf);GPS-EW =bufGetComma(6,buf);#ifdef USE_BEIJING_TIMEZONEUTC2BTC(&GPS-D);#endifif(c=
11、A) /$GPGGAGPS-high = get_double_number(&bufGetComma(9,buf);static double get_double_number(char *s)char buf128;int i;double rev;i=GetComma(1,s);strncpy(buf,s,i);bufi=0;rev=atof(buf);return rev;static int GetComma(int num,char *str)int i,j=0;int len=strlen(str);for(i=0;isecond+; /加一秒if(GPS-second59)G
12、PS-second=0;GPS-minute+;if(GPS-minute59)GPS-minute=0;GPS-hour+;GPS-hour+=8;if(GPS-hour23)GPS-hour-=24;GPS-day+=1;if(GPS-month=2 | GPS-month=4 | GPS-month=6 | GPS-month=9 | GPS-month=11 )if(GPS-day30) GPS-day=1;GPS-month+;elseif(GPS-day31) GPS-day=1;GPS-month+;if(GPS-year % 4 = 0 ) if(GPS-day 29 & GP
13、S-month =2) GPS-day=1;GPS-month+;else if(GPS-day28 &GPS-month =2) GPS-day=1;GPS-month+;if(GPS-month12)GPS-month-=12;GPS-year+;Gps_main.c#include #include ./inc/gps.h#include ./inc/sys/lib.h#include inc/drv/Serial.h#include #include os_cpu.h#include ./ucos-ii/includes.h#include ./ucos-ii/ucos_ii.h#de
14、fine FALSE 0#define TRUE 1volatile int STOP=FALSE;GPS_INFO gps_info;int GET_GPS_OK=FALSE;char GPS_BUF1024,*rxmsg;OS_EVENT *mbox;#define rULCON2(*(volatile unsigned *)0x)/p317#define rUCON2(*(volatile unsigned *)0x)/p318#define rUFCON2(*(volatile unsigned *)0x)/p320#define rUTRSTAT2(*(volatile unsign
15、ed *)0x)/p322#define rUERSTAT2(*(volatile unsigned *)0x)/p323#define rUFSTAT2(*(volatile unsigned *)0x)/p324#define rURXH2(*(volatile unsigned *)0x)/326#define rUBRDIV2(*(volatile unsigned *)0x)/327/*-*/* modem input handler */void show_gps_info(void * Id) char txmsg; INT8U err;while(1) rxmsg=OSMbox
16、Pend(mbox,0,&err); gps_parse(rxmsg,&gps_info); show_gps(1,&gps_info);/1為發(fā)送數(shù)據(jù),0為接收數(shù)據(jù)。 OSTimeDly(50); /*-*/* modem input handler */void receive(void * Id) int i=0,counter=0;char c; char buf200;GPS_INFO GPS; Uart_Init(2,4800); OpenUartRev(2); hudelay(100); mbox=OSMboxCreate(void *)0);while (1) while(1)
17、 if(c=Uart_Getch(2) bufi+ = c; if(i=200)/防止buf越界 i=0; break; if(c = n) bufi=0; break; if(buf0 = $)i=0; OSMboxPost(mbox,(void *)buf); OSTimeDly(1000); Main.c#include./ucos-ii/includes.h /* uC/OS interface */#include ./ucos-ii/add/osaddition.h#include ./inc/drivers.h#include ./inc/sys/lib.h#include ./
18、src/gui/gui.h#include #include #include ./inc/MCP25101.h#include ./inc/myuart1.h#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting /*任務(wù)定義*/*OS_STK SYS_Task_StackSTACKSIZE= 0, ; /system task刷新任務(wù)堆棧#define SYS_Task_Prio1 void SYS_Task(void *Id);*/*OS_STK task1_StackSTACK
19、SIZE=0, ; /Main_Test_Task堆棧void Task1(void *Id); /Main_Test_Task#define Task1_Prio 12*/*OS_STK task2_StackSTACKSIZE=0, ; /test_Test_Task堆棧void Task2(void *Id); /test_Test_Task#define Task2_Prio 15*/OS_STK Main_StackSTACKSIZE=0, ; /Main_Test_Task堆棧void Main_Task(void *Id); /Main_Test_Task#define Main
20、_Task_Prio 10OS_STK Recv_StackSTACKSIZE=0, ; void receive(void *Id);#define Recv_Prio 15OS_STK Show_gps_StackSTACKSIZE= 0, ; void show_gps_info(void *Id); #define Show_gps_Prio 13/*已經(jīng)定義的OS任務(wù)*#define SYS_Task_Prio1#define Touch_Screen_Task_Prio9#define Main_Task_Prio 12#define Key_Scan_Task_Prio 58#d
21、efine Lcd_Fresh_prio 59#define Led_Flash_Prio 60int main(void)int n;unsigned int id;int length;BOOL rxRTR, isExt;U8 data18=0,;U8 gps15=0,;U8 i=0,flag=0;ARMTargetInit(); / do target (uHAL based ARM system) initialisation /OSInit(); / needed by uC/OS-II /OSInitUart();init_MCP2510(BandRate_250kbps);/可在
22、該函數(shù)內(nèi)設(shè)置成回環(huán)模式 /從而只用一臺設(shè)備完成實驗canSetup();Uart_SendByte(0,0xa);/換行Uart_SendByte(0,0xd);/回車/*for(;)if(n=canPoll()!=-1)/CAN總線收到數(shù)據(jù),則發(fā)送到串口canRead(n, &id, data1, &length, &rxRTR, &isExt);/Uart_SendByte(0,data0);/顯示采集的數(shù)據(jù) /Uart_Printf(0,id is %x,id);if(data10=r)/發(fā)送換行Uart_SendByte(0,n);if(i=14)gpsi=data10;i+;if(i
23、=14)i=0;flag=1;if(gps14=r)Uart_Printf(0,DATE : %d%d%d%d-%d%d-%d%dn,gps0-0x30,gps1-0x30,gps2-0x30,gps3-0x30,gps4-0x30,gps5-0x30,gps6-0x30,gps7-0x30);Uart_Printf(0,TIME : %d%d:%d%d:%d%dn,gps8-0x30,gps9-0x30,gps10-0x30,gps11-0x30,gps12-0x30,gps13-0x30);i=0;*/ OSTaskCreate(receive, (void *)0, (OS_STK *)
24、&Recv_StackSTACKSIZE-1, Recv_Prio );OSTaskCreate(show_gps_info, (void *)0, (OS_STK *)&Show_gps_StackSTACKSIZE-1, Show_gps_Prio );OSAddTask_Init(0); OSStart(); / start the OS / never reached /return 0;/main2、接收程序Main.c(與發(fā)送只有主函數(shù)不同,其他兩個函數(shù)一樣)#include./ucos-ii/includes.h /* uC/OS interface */#include ./u
25、cos-ii/add/osaddition.h#include ./inc/drivers.h#include ./inc/sys/lib.h#include ./src/gui/gui.h#include #include #include ./inc/MCP25101.h#include ./inc/myuart1.h#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting /*任務(wù)定義*/*OS_STK SYS_Task_StackSTACKSIZE= 0, ; /system t
26、ask刷新任務(wù)堆棧#define SYS_Task_Prio1 void SYS_Task(void *Id);*/*OS_STK task1_StackSTACKSIZE=0, ; /Main_Test_Task堆棧void Task1(void *Id); /Main_Test_Task#define Task1_Prio 12*/*OS_STK task2_StackSTACKSIZE=0, ; /test_Test_Task堆棧void Task2(void *Id); /test_Test_Task#define Task2_Prio 15*/OS_STK Main_StackSTA
27、CKSIZE=0, ; /Main_Test_Task堆棧void Main_Task(void *Id); /Main_Test_Task#define Main_Task_Prio 10OS_STK Recv_StackSTACKSIZE=0, ; void receive(void *Id);#define Recv_Prio 15OS_STK Show_gps_StackSTACKSIZE= 0, ; void show_gps_info(void *Id); #define Show_gps_Prio 13/*已經(jīng)定義的OS任務(wù)*#define SYS_Task_Prio1#defi
28、ne Touch_Screen_Task_Prio9#define Main_Task_Prio 12#define Key_Scan_Task_Prio 58#define Lcd_Fresh_prio 59#define Led_Flash_Prio 60int main(void)int n;unsigned int id;int length;BOOL rxRTR, isExt;U8 data18=0,;U8 gps14;U8 i=0,flag=0;ARMTargetInit(); / do target (uHAL based ARM system) initialisation /
29、OSInit(); / needed by uC/OS-II /OSInitUart();init_MCP2510(BandRate_250kbps);/可在該函數(shù)內(nèi)設(shè)置成回環(huán)模式 /從而只用一臺設(shè)備完成實驗canSetup();Uart_SendByte(0,0xa);/換行Uart_SendByte(0,0xd);/回車for(;)if(n=canPoll()!=-1)/CAN總線收到數(shù)據(jù),則發(fā)送到串口canRead(n, &id, data1, &length, &rxRTR, &isExt);if(i=13)gpsi=data10;i+;if(i=14)i=0;flag=1;if(flag)Uart_Printf(0,DATE : %d%d%d%d-%d%d-%d%dn,gps0-0x30,gps1-0x30,gps2-0x30,gps3-0x30,gps4-0x30,gps5-0x30,gps6-0x30,gps7-0x30);Uart_Printf(0,TIME : %d%d:%d%d:%d%dn,gps8-0x30,gps9-0x30,gps10-0x30,gps11-0x30,gps12-0x30,gps13-0x30);flag=0;/*OSTaskCreate(Task2, (void *)0, (OS_STK *)
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 買羊購銷合同范本
- 味多美工作合同范例
- 升降平臺加工合同范本
- 廚房雜件采購合同范本
- 咨政課題申報書范文
- 吊扇購銷合同范例
- 凈菜供貨合同范例
- 北京買房還是租房合同范例
- 品牌對接推廣合同范本
- 中電投合同范本
- 安徽2025年安徽醫(yī)科大學(xué)第一附屬醫(yī)院臨床醫(yī)技護(hù)理管理崗位招聘156人筆試歷年參考題庫附帶答案詳解
- 旅游景區(qū)股份合作開發(fā)協(xié)議書范本
- 2025年湖南有色金屬職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫匯編
- 2025年湖南信息職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫參考答案
- 學(xué)情分析方案及學(xué)情分析報告范文
- 《CRISPR-Cas9及基因技術(shù)》課件
- 《急性冠狀動脈綜合征》課件
- 【博觀研究院】2025年跨境進(jìn)口保健品市場分析報告
- 游戲直播平臺推廣合作協(xié)議
- 《高科技服裝與面料》課件
- 《馬克思生平故事》課件
評論
0/150
提交評論