亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2012-07-12 05:06:26廣東工程職業(yè)技術(shù)學(xué)院機(jī)電工程系梁芳芳李南安
        電子世界 2012年13期
        關(guān)鍵詞:網(wǎng)絡(luò)設(shè)備寄存器中斷

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

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

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

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

        PXA168;MCP2515;CAN總線;SPI;linux

        1.引言

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

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

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

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

        3.Linux下的網(wǎng)絡(luò)套接口函數(shù)的實(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)上都實(shí)現(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獨(dú)立的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描述符僅是部分打開,還不能進(jìn)行讀寫,要完成打開套接字的工作,取決于是客戶端還是服務(wù)器?;綜AN幀結(jié)構(gòu)如下:

        3.3 bind函數(shù)

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

        3.4 read/write函數(shù)

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

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

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

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

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

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

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

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

        Linux內(nèi)核將所有的中斷統(tǒng)一編號,使用一個irq_desc結(jié)構(gòu)數(shù)組來描述這些中斷;每個數(shù)組項(xiàng)對應(yīng)一個中斷號,里面記錄了中斷處理函數(shù)入口,底層的硬件訪問接口,中斷狀態(tài)等,嵌入式linux內(nèi)核會維護(hù)一個中斷信號線注冊表,所以在使用中斷前必須先申請中斷號,使用完之后要釋放該中斷號,這里使用的就是函數(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主要用于共享中斷線,當(dāng)一個中斷處理程序需要釋放時,內(nèi)核可以根據(jù)該參數(shù)找到中斷處理函數(shù)鏈表中的需要刪除的中斷處理程序,由于MCP2515的中斷比較多,所以在中斷處理程序需要處理各緩沖器的接收和發(fā)送中斷以及喚醒和錯誤處理。中斷函數(shù)代碼片段如下:

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

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

        為節(jié)省調(diào)試時間和調(diào)試成本,在進(jìn)行PXA1689與MCP2515的CAN總線接口設(shè)計(jì)時,編譯調(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ǎn),加快調(diào)試進(jìn)度。

        6.結(jié)論

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

        [1]基于S3C2410與MCP2515的CAN總線接口設(shè)計(jì).黑龍江:佳木斯大學(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è)計(jì)[M].北京:北京航空航天人學(xué)出版社,1996.

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

        [5]陶志東,周純杰,宋明權(quán),龔云生.基于PXA168的CAN總線通信設(shè)計(jì)與開發(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ù)。

        猜你喜歡
        網(wǎng)絡(luò)設(shè)備寄存器中斷
        Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
        一種基于C# 的網(wǎng)絡(luò)設(shè)備自動化登錄工具的研制
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        數(shù)據(jù)中心唯“快”不破
        基于列車監(jiān)測網(wǎng)絡(luò)設(shè)備的射頻功放模塊設(shè)計(jì)
        基于三層交換技術(shù)架構(gòu)數(shù)字化校園網(wǎng)絡(luò)設(shè)備的配置與管理
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
        国产精品老女人亚洲av无| 久久亚洲av永久无码精品| 啪啪视频一区二区三区入囗| 丰满人妻一区二区三区免费 | 大陆老熟女自拍自偷露脸| 国产激情一区二区三区不卡av | 一区二区和激情视频| 成人区人妻精品一熟女 | av黄色在线免费观看| 又爽又黄又无遮挡的视频| 伊人久久网国产伊人| 亚洲欧美日韩精品中文乱码| 亚洲精品成人久久av| 亚洲男人天堂黄色av| 国产乱xxⅹxx国语对白| 91产精品无码无套在线| 国产精品视频白浆免费看| 大肉大捧一进一出好爽视频动漫| 国产精品美女久久久久| 久久精品免视看国产盗摄 | 国产毛女同一区二区三区| 成人欧美一区二区三区在线观看 | 国产91极品身材白皙| 后入到高潮免费观看| 97精品伊人久久大香线蕉app| 女同另类激情在线三区| 国产精品成人一区二区不卡| 国产揄拍国产精品| 国产一区二区三区啪| 国产免费一区二区三区在线观看 | 亚洲精品国产av成拍| 2019最新中文字幕在线观看| 国产精品爽爽va在线观看无码| 国产一区二区三区观看视频| 丝袜美腿高清在线观看| 亚洲色在线v中文字幕| 9久9久女女热精品视频免费观看| 亚洲不卡av二区三区四区| 中文字幕色av一区二区三区| 在线观看免费午夜大片| 精品2021露脸国产偷人在视频 |