999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于PXA168與MCP2515的CAN總線接口設(shè)計

2012-07-12 05:06:26廣東工程職業(yè)技術(shù)學(xué)院機電工程系梁芳芳李南安
電子世界 2012年13期
關(guān)鍵詞:調(diào)試結(jié)構(gòu)

廣東工程職業(yè)技術(shù)學(xué)院機電工程系 梁芳芳 王 力 李南安

基于PXA168與MCP2515的CAN總線接口設(shè)計

廣東工程職業(yè)技術(shù)學(xué)院機電工程系 梁芳芳 王 力 李南安

利用SPI接口為PXA168微處理器擴展CAN總線接口,以CAN在環(huán)境設(shè)備控制網(wǎng)絡(luò)中的應(yīng)用為背景,從CAN總線作為網(wǎng)絡(luò)設(shè)備的實現(xiàn)、驅(qū)動程序的二個方面,詳盡闡述了MCP2515 CAN控制器在linux下的網(wǎng)絡(luò)設(shè)備接口函數(shù)的實現(xiàn)。采用該方案擴展的CAN總線接口已經(jīng)應(yīng)用到自主開發(fā)的環(huán)境儀器的控制系統(tǒng)當中,經(jīng)實驗表明,取得了良好的數(shù)據(jù)傳輸效果。

PXA168;MCP2515;CAN總線;SPI;linux

1.引言

CAN現(xiàn)場總線已經(jīng)成為在儀表裝置通信的新標準,其在短距離條件下具有高達1Mbps的數(shù)據(jù)傳輸能力,由于其成本低,實時性好,抗干擾能力強,因此廣泛應(yīng)用于車載數(shù)據(jù)采集系統(tǒng)及汽車電子控制網(wǎng)絡(luò)。在自動化電子領(lǐng)域的汽車發(fā)動機控制部件、傳感器、抗滑系統(tǒng)等應(yīng)用中,CAN的位速率可高達1Mbps。CAN總線允許多站點同時發(fā)送,既保證了信息處理的實時性,又使得CAN總線網(wǎng)絡(luò)可以構(gòu)成多主結(jié)構(gòu)的系統(tǒng),保證了系統(tǒng)的可靠性。另外,CAN采用短幀結(jié)構(gòu),且每幀信息都有校驗及其他檢錯措施,保證了數(shù)據(jù)的實時性、低傳輸出錯率。

2.CAN總線接口硬件設(shè)計

由于PXA168微處理器本身不帶CAN控制器,所以要為處理器平臺擴展CAN總線接口。擴展的方式可以分為串行擴展和并行擴展兩種,但考慮到采用并行總線擴展而產(chǎn)生的硬件開銷和成本問題,本設(shè)計最終根據(jù)實際需求,選用串行SPI總線擴展方式。

MCP2515獨立的CAN控制器結(jié)構(gòu)如圖1所示。微芯公司的MCP2515完全支持CAN V2.0B技術(shù)規(guī)范。能發(fā)送和接收標準和擴展數(shù)據(jù)幀以及遠程幀。MCP2515自帶的兩個驗收屏蔽寄存器和六個驗收濾波寄存器可以過濾掉不想要的報文,因此減少了MCU的開銷。由于MCP2515采用串行SPI方式與微處理器連接,因此大大節(jié)省了系統(tǒng)的硬件開銷,通訊速率為1Mbps。控制器內(nèi)部帶有兩個接收緩沖器,高速SPI接口支持0,0和1,1方式的SPI模式,頻率可以達到10MHz。

3.Linux下的網(wǎng)絡(luò)套接口函數(shù)的實現(xiàn)

套接字接口(socket interface)是一組函數(shù),和其他系統(tǒng)函數(shù)結(jié)合起來用于創(chuàng)建網(wǎng)絡(luò)應(yīng)用,圖2給出了典型的客戶端-服務(wù)器事務(wù)的上下文中的套接字接口描述:

大多數(shù)現(xiàn)代操作系統(tǒng)上都實現(xiàn)了同一套套接字接口,適用于任何底層的協(xié)議。

3.1 套接字地址結(jié)構(gòu)

因特網(wǎng)的套接字地址存放在如下的sockaddr_in的16字節(jié)結(jié)構(gòu)中,其中的IP地址和端口號總是以網(wǎng)絡(luò)字節(jié)順序(大端法)存放的。

其中_in后綴是互聯(lián)網(wǎng)絡(luò)(internet)的縮寫connect函數(shù)、bind和accept函數(shù)要求一個指向與協(xié)議相關(guān)的套接字地址結(jié)構(gòu)的指針,如何定義這些函數(shù),使之能夠接受各種類型的套接字地址結(jié)構(gòu),解決辦法就是這個stuct sockaddr結(jié)構(gòu),我們將所有的與協(xié)議特定的結(jié)構(gòu)的指針轉(zhuǎn)換成這個通用結(jié)構(gòu)就可以,因此定義了一個類型typedef struct sockaddr SA,使用的時候,將所有的sockaddr_in轉(zhuǎn)換成SA類型。

圖1 MCP2515獨立的CAN控制器系統(tǒng)結(jié)構(gòu)

圖2 套接字接口概述

3.2 socket函數(shù)

客戶端和服務(wù)器使用socket函數(shù)來創(chuàng)建一個套接字描述符(socket descriptor)

int socket(int domain,int type,int protocol);

因此在我們的代碼中,經(jīng)常這樣調(diào)用socket函數(shù):

clientfd=Socket(PF_CAN,SOCK_RAW,CAN_RAW);

PF_CAN表示使用CAN網(wǎng)絡(luò)、SOCK_RAW表示該套接字用于原始SOCK,CAN_RAW表示CAN的原始包結(jié)構(gòu)。clientfd描述符僅是部分打開,還不能進行讀寫,要完成打開套接字的工作,取決于是客戶端還是服務(wù)器。基本CAN幀結(jié)構(gòu)如下:

3.3 bind函數(shù)

通過該函數(shù)綁定CAN接口。

3.4 read/write函數(shù)

3.5 通過這兩個函數(shù)進行數(shù)據(jù)的讀和寫完成。

4.底層驅(qū)動的開發(fā)

CAN總線屬于現(xiàn)場總線的一種,屬于控制器局部網(wǎng),因此把其歸并到網(wǎng)絡(luò)設(shè)備更合理,MCP2515驅(qū)動程序是網(wǎng)絡(luò)設(shè)備程序與MCP2515硬件的接口,需要屏蔽設(shè)備的工作細節(jié)提供給用戶程序一系列的標準調(diào)用,其主要就是調(diào)用操作MCP2515的底層函數(shù)實現(xiàn)open,read,write,ioctl,release等系統(tǒng)調(diào)用函數(shù),來完成與內(nèi)核的通信,為了方便網(wǎng)絡(luò)設(shè)備程序與驅(qū)動的交互,可以根據(jù)CAN控制器的工作特點定義MCP2515的設(shè)備結(jié)構(gòu)體。

4.1 open函數(shù)的實現(xiàn)

open函數(shù)實現(xiàn)對S3C2440的SPI口的初始化,以及通過SPI口對MCP2515的寄存器進行相應(yīng)的初始化。包括CAN總線波特率的設(shè)置,設(shè)置報文濾波以及屏蔽寄存器,開啟中斷使能等。

4.2 stop函數(shù)的實現(xiàn)

關(guān)閉設(shè)備,以及釋放申請的中斷號和分配的內(nèi)存空間。

4.3 中斷函數(shù)的實現(xiàn)

Linux內(nèi)核將所有的中斷統(tǒng)一編號,使用一個irq_desc結(jié)構(gòu)數(shù)組來描述這些中斷;每個數(shù)組項對應(yīng)一個中斷號,里面記錄了中斷處理函數(shù)入口,底層的硬件訪問接口,中斷狀態(tài)等,嵌入式linux內(nèi)核會維護一個中斷信號線注冊表,所以在使用中斷前必須先申請中斷號,使用完之后要釋放該中斷號,這里使用的就是函數(shù)request_threaded_irq(spi->irq,NULL,mcp251x_can_ist,IRQF_TRIGGER_FALLING,DEVICE_NAME,priv)來注冊一個中斷處理程序,spi->irq為IRQ_EINT3是所要申請的中斷號,can_interrupt是中斷處理函數(shù)的指針,IRQT_FALLING是中斷觸發(fā)的方式,這里選擇的是下降沿觸發(fā),DEVICE_NAME是產(chǎn)生中斷的設(shè)備名稱,dev_id主要用于共享中斷線,當一個中斷處理程序需要釋放時,內(nèi)核可以根據(jù)該參數(shù)找到中斷處理函數(shù)鏈表中的需要刪除的中斷處理程序,由于MCP2515的中斷比較多,所以在中斷處理程序需要處理各緩沖器的接收和發(fā)送中斷以及喚醒和錯誤處理。中斷函數(shù)代碼片段如下:

上述代碼中intf保存的是從MCP2515的CANINTF寄存器中讀取的中斷信息,根據(jù)將intf分別進行讀,寫和其他操作,在讀時調(diào)用netif_rx進行網(wǎng)絡(luò)數(shù)據(jù)讀操作,在寫時調(diào)用netif_wake_queue喚醒發(fā)送內(nèi)部線程進行發(fā)送,其他的中斷都可以按這種方法實現(xiàn)。

5.基于CAN模擬器的調(diào)試與應(yīng)用

為節(jié)省調(diào)試時間和調(diào)試成本,在進行PXA1689與MCP2515的CAN總線接口設(shè)計時,編譯調(diào)試采用的是 武漢吉陽光電科技有限公司的GY8508 USB-CAN總線適配器。這樣,PC可以直接通過USB總線連接至CAN-bus網(wǎng)絡(luò),不用每次調(diào)試都在控制器的CAN數(shù)據(jù)就能構(gòu)成現(xiàn)場總線等CAN-bus網(wǎng)絡(luò)領(lǐng)域中的CAN-bus網(wǎng)絡(luò)控制節(jié)點,加快調(diào)試進度。

6.結(jié)論

采用帶SPI接口的MCP2515獨立CAN控制器給PXA168微處理器擴展CAN接口,既降低了硬件電路的復(fù)雜性,也保證了CAN總線通訊的穩(wěn)定性和效率。采用該方案擴展的CAN總線接口已經(jīng)應(yīng)用到自行開發(fā)的車載終端無線傳輸系統(tǒng)中,經(jīng)實驗表明,取得了良好的數(shù)據(jù)傳輸效果。

[1]基于S3C2410與MCP2515的CAN總線接口設(shè)計.黑龍江:佳木斯大學(xué)學(xué)報(自然科學(xué)版)(第29卷第2期)2011年03月.

[2]Microchip公司.Stand-A lon e CAN C ont rollerW ith SPI Interface,2003.

[3]鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天人學(xué)出版社,1996.

[4]廣州周立功單片機發(fā)展有限公司.CAN-bus規(guī)范V2.0版,http://www.zlgm cu.com.

[5]陶志東,周純杰,宋明權(quán),龔云生.基于PXA168的CAN總線通信設(shè)計與開發(fā)[J].可編程控制器與工廠自動化,2006,01.

[6]王繼國,吉吟東,孫新亞.CAN總線控制器MCP2515的原理及應(yīng)用[J].電測與儀表,2004,41(1).

梁芳芳(1976—),女,廣東梅州人,畢業(yè)于中山大學(xué),碩士,電子工程師,講師,現(xiàn)供職于廣東工程職業(yè)技術(shù)學(xué)院,主要研究方向:通信技術(shù)。

王力(1984—),男,廣東梅州人,畢業(yè)于電子科技大學(xué),碩士,現(xiàn)供職于廣東工程職業(yè)技術(shù)學(xué)院,研究方向:電子技術(shù)。

猜你喜歡
調(diào)試結(jié)構(gòu)
《形而上學(xué)》△卷的結(jié)構(gòu)和位置
論結(jié)構(gòu)
中華詩詞(2019年7期)2019-11-25 01:43:04
新型平衡塊結(jié)構(gòu)的應(yīng)用
模具制造(2019年3期)2019-06-06 02:10:54
基于航拍無人機的設(shè)計與調(diào)試
電子制作(2018年12期)2018-08-01 00:47:44
核電廠主給水系統(tǒng)調(diào)試
中國核電(2017年1期)2017-05-17 06:10:11
無線通信中頻線路窄帶臨界調(diào)試法及其應(yīng)用
電子制作(2017年19期)2017-02-02 07:08:38
論《日出》的結(jié)構(gòu)
調(diào)壓柜的調(diào)試與試運行探討
工業(yè)電氣設(shè)備控制系統(tǒng)的安裝與調(diào)試
音頻處理器的調(diào)試
主站蜘蛛池模板: 看国产一级毛片| 在线观看热码亚洲av每日更新| 草草影院国产第一页| 日韩欧美国产中文| 国产国产人成免费视频77777| 日韩欧美综合在线制服| 国产综合日韩另类一区二区| 国产特级毛片| 久久精品娱乐亚洲领先| 国产丝袜一区二区三区视频免下载| 婷婷激情亚洲| 亚洲—日韩aV在线| 中文无码精品a∨在线观看| 亚卅精品无码久久毛片乌克兰| 亚洲无码在线午夜电影| 熟妇丰满人妻| 亚洲黄色高清| 欧美成人看片一区二区三区 | 女同久久精品国产99国| 女同国产精品一区二区| 性网站在线观看| 国产尤物视频网址导航| 麻豆精选在线| 国产午夜无码片在线观看网站 | 2020久久国产综合精品swag| a级毛片视频免费观看| 激情五月婷婷综合网| 九色综合伊人久久富二代| 国产jizz| 国产成人区在线观看视频| 中文字幕在线欧美| 五月激情婷婷综合| 亚洲日本在线免费观看| 免费无码在线观看| 亚洲欧美在线看片AI| 免费看一级毛片波多结衣| 亚洲激情99| 欧美激情第一欧美在线| 老司机午夜精品网站在线观看| 日本91视频| 中文字幕中文字字幕码一二区| 亚洲国产成人综合精品2020| 欧美精品色视频| 国产久操视频| 97国产在线播放| 在线观看免费人成视频色快速| 人妻无码一区二区视频| 国产最新无码专区在线| 亚洲视频无码| 国产精品人莉莉成在线播放| aa级毛片毛片免费观看久| 在线欧美一区| 在线观看国产精品第一区免费| 国产成人亚洲精品无码电影| 97人人做人人爽香蕉精品| 国产精品无码作爱| 国产性生交xxxxx免费| 在线观看精品自拍视频| 丁香五月婷婷激情基地| 狠狠做深爱婷婷综合一区| 免费欧美一级| 久久精品中文无码资源站| 区国产精品搜索视频| 日韩不卡免费视频| 久久精品国产电影| 玩两个丰满老熟女久久网| 国产成年无码AⅤ片在线| 国产精品视频999| 怡春院欧美一区二区三区免费| 国产成人区在线观看视频| 呦系列视频一区二区三区| 精品午夜国产福利观看| 美女潮喷出白浆在线观看视频| 亚洲日本中文字幕天堂网| 欧美日韩资源| 无码福利日韩神码福利片| 日韩一区精品视频一区二区| swag国产精品| 欧美激情视频一区| 亚洲va精品中文字幕| 国产91蝌蚪窝| 国产麻豆精品久久一二三|