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

        ?

        基于S3C6410 及Wince 系統(tǒng)的CAN 驅(qū)動(dòng)的設(shè)計(jì)與優(yōu)化

        2021-05-12 02:59:52劉海龍吳海波張蕾
        電子設(shè)計(jì)工程 2021年8期
        關(guān)鍵詞:優(yōu)化系統(tǒng)設(shè)計(jì)

        劉海龍,吳海波,張蕾

        (湖南鐵道職業(yè)技術(shù)學(xué)院,湖南株洲 412001)

        控制器局域網(wǎng)(Controller Area Network,CAN)總線是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一,其屬于多主機(jī)半雙工異步串行通信總線,具有通信實(shí)時(shí)性好、傳輸速度快、抗干擾能力強(qiáng)和成本低等優(yōu)點(diǎn)[1]。Wince 系統(tǒng)作為嵌入式系統(tǒng)中的重要組成部分,穩(wěn)定性好,在工業(yè)應(yīng)用領(lǐng)域占有重要地位,如車機(jī)系統(tǒng)、工業(yè)控制等領(lǐng)域應(yīng)用廣泛[2]。CAN 總線通信可以集成于各類嵌入式軟硬件平臺(tái),在多種嵌入式軟硬平臺(tái)上均有成熟研究和設(shè)計(jì)[3]。文獻(xiàn)[4]中介紹了基于VxWorks 系統(tǒng)平臺(tái)下CAN 驅(qū)動(dòng)程序的設(shè)計(jì)方法[4];文獻(xiàn)[5]中給出了基于Linux 系統(tǒng)平臺(tái)下的獨(dú)立CAN控制器驅(qū)動(dòng)設(shè)計(jì)和優(yōu)化方案[5];文獻(xiàn)[6]中介紹了基于SPARC V8 硬件構(gòu)架平臺(tái)下CAN 模塊的驅(qū)動(dòng)設(shè)計(jì)方法[6]。上述關(guān)于CAN 的設(shè)計(jì)方案通道數(shù)大多是在2路以內(nèi),適合一些通信功能相對(duì)簡(jiǎn)單,具有一定通用性的領(lǐng)域。文中CAN 通信應(yīng)用于基于工業(yè)機(jī)器人的數(shù)控機(jī)床上下料過(guò)程中,需要滿足多六維力覺(jué)傳感器、雙目機(jī)器人視覺(jué)數(shù)據(jù)和機(jī)器人系統(tǒng)反饋信號(hào)等多路信號(hào)的實(shí)時(shí)通信要求,硬件平臺(tái)的I/O 也需要復(fù)用通道,因此現(xiàn)有的驅(qū)動(dòng)設(shè)計(jì)方案無(wú)法滿足應(yīng)用需求。

        該文采用S3C6410 為硬件核心,Wince8 為軟件系統(tǒng)平臺(tái)研究開(kāi)發(fā)CAN 總線驅(qū)動(dòng)程序,S3C6410 是一款基于ARM1176JZF-S 核的終端設(shè)備通用處理器,16/32 位RISC,可穩(wěn)定運(yùn)行在667 MHz 主頻以上,性價(jià)比高,在工業(yè)終端領(lǐng)域有廣泛的應(yīng)用[7-8]。CAN通信模塊采用Microchip 的MCP2515,該芯片有6 個(gè)驗(yàn)收屏蔽寄存器和6 個(gè)驗(yàn)收濾波寄存器,功能完全滿足現(xiàn)場(chǎng)應(yīng)用需求[9]。以S3C6410 硬件平臺(tái)對(duì)Wince系統(tǒng)下的CAN 總線驅(qū)動(dòng)的研究成果較少,在多板多通道CAN 通信過(guò)程中,存在中斷頻率高導(dǎo)致數(shù)據(jù)傳輸效率低下問(wèn)題[10]。針對(duì)該問(wèn)題,該文也在驅(qū)動(dòng)設(shè)計(jì)中通信效率環(huán)節(jié)上進(jìn)行了優(yōu)化設(shè)計(jì)和驗(yàn)證,提高整個(gè)系統(tǒng)通信的穩(wěn)定性和高效性。

        1 硬件設(shè)計(jì)

        模塊采用的Microchip MCP2515,是一款獨(dú)立局域網(wǎng)絡(luò)協(xié)議控制器,支持CAN V2.0B 技術(shù)規(guī)范,能發(fā)送和接收標(biāo)準(zhǔn)、擴(kuò)展數(shù)據(jù)幀及遠(yuǎn)程幀[11-12]。收發(fā)器采用TAJ1051T,收發(fā)器的功能是提供控制器區(qū)域網(wǎng)絡(luò)CAN 協(xié)議控制S3C6410和物理雙線CAN MCP2515總線之間的接口,該收發(fā)器高速達(dá)1 Mbit/s,為控制器核心S3C6410 和CAN 協(xié)議控制器MCP2515 提供差分發(fā)射和接收功能[13]。其部分關(guān)鍵電路設(shè)計(jì)圖如圖1 所示,其中TXCAN 和RXCAN 連接S3C6410 收發(fā)I/O 引腳;連接CAN 通信的下位機(jī)分別為工業(yè)機(jī)器人上下料工作站傳感器信號(hào)采集終端、視覺(jué)信號(hào)采集終端,上位機(jī)為工業(yè)機(jī)器人信號(hào)控制器端,整個(gè)工作站通過(guò)CAN總線通信實(shí)現(xiàn)分布式結(jié)構(gòu)。

        圖1 硬件部分電路設(shè)計(jì)圖

        2 CAN驅(qū)動(dòng)程序設(shè)計(jì)

        基于Microchip MCP2515 驅(qū)動(dòng)程序設(shè)計(jì)首先完成MCP2515 工作原理的流程結(jié)構(gòu)設(shè)計(jì),根據(jù)工作流程按功能分為地址映射、I/O 接口設(shè)計(jì)、系統(tǒng)接口處理、中斷處理功能和初始化函數(shù)等設(shè)計(jì)。

        2.1 地址映射與配置

        在基于Wince8 下的MCP2515 驅(qū)動(dòng)程序設(shè)計(jì)中,由于系統(tǒng)內(nèi)核程序不能直接讀取物理地址,需要將物理地址映射到虛擬空間,地址是由譯碼器確定的[14]。內(nèi)核程序中設(shè)計(jì)了MmMapIoSpace()函數(shù)實(shí)現(xiàn)該功能,并配置了MCP2515 的兩種工作模式,分別為回環(huán)和標(biāo)準(zhǔn)模式,其中回環(huán)模式用于多終端的CAN 組網(wǎng)通信,標(biāo)準(zhǔn)模式用于標(biāo)準(zhǔn)的CAN 聯(lián)機(jī)通信[15]。其關(guān)鍵代碼如下:

        隨后配置MODBUS 通信內(nèi)容協(xié)議的位時(shí)間tbit參數(shù),表示CAN 每幀數(shù)據(jù)組成段構(gòu)成的時(shí)間分配參數(shù),組合公式如下:

        以上式中的各時(shí)間參數(shù)分別對(duì)應(yīng)為同步段、傳播段、相位緩沖段PS1、相位緩沖段PS2,Microchip MCP2515 數(shù)據(jù)手冊(cè)中規(guī)定須滿足PS1>PS2 條件,因此該參數(shù)配置的關(guān)鍵代碼如下:

        2.2 關(guān)鍵接口函數(shù)

        I/O 接口涉及的關(guān)鍵函數(shù)有CAN_Open、CAN_Close、CAN_Write、CAN_Read 和Init_MCP2515 共5 個(gè),其中部分功能采用函數(shù)調(diào)用的方式實(shí)現(xiàn),如CAN_IOControl 函數(shù),用于上位機(jī)應(yīng)用程序?qū)/O 端口的控制,使用中通過(guò)I/O 接口函數(shù)間接調(diào)用。

        1)CAN_Open 函數(shù)設(shè)計(jì)

        函數(shù)原型為DWORD CAN_Open(DWORD dwData,DWORD dwAccess,DWORD dwShareMode),主要是配置MCP2515 的工作模式,并提供上位機(jī)應(yīng)用程序打開(kāi)該驅(qū)動(dòng)的接口;打開(kāi)CAN_Open 函數(shù)時(shí),需要對(duì)通信的波特率進(jìn)行配置,調(diào)用波特率配置函數(shù)。

        2)CAN_Close 函數(shù)設(shè)計(jì)

        函數(shù)原型為BOOL CAN_Close(DWORD dwData),主要是配置MCP2515 驅(qū)動(dòng)程序,關(guān)閉時(shí)為控制進(jìn)行復(fù)位操作,調(diào)用了復(fù)位清零函數(shù)。上位機(jī)應(yīng)用程序關(guān)閉該驅(qū)動(dòng)的接口函數(shù)為CloseHandle(HANDLE),執(zhí)行成功返回TURE,執(zhí)行失敗則返回FALSE。

        3)Init_MCP2515 函數(shù)設(shè)計(jì)

        函數(shù)原型為void Init_MCP2515 (CanBandRate bandrate),主要用于配置MCP2515 的通道I/O 參數(shù)狀態(tài)初始化、波特率設(shè)定、濾波及工作模式參數(shù)等,該函數(shù)在執(zhí)行CAN_Open 時(shí)需要被調(diào)用。其中涉及的所有S3C6410 連接I/O 端口均需要對(duì)其狀態(tài)進(jìn)行初始化,否則可能會(huì)因?yàn)镮/O 狀態(tài)不確定導(dǎo)致通信錯(cuò)亂的現(xiàn)象,I/O 初始化部分代碼如下。

        4)CAN_Write 函數(shù)設(shè)計(jì)

        函數(shù)原型為DWORD CAN_Write(DWORD hOpen Context,LPCVOID pSourceBytes,DWORD NumberOf Bytes),主要用于向接收終端發(fā)送數(shù)據(jù)幀,數(shù)據(jù)緩存為pSourceBytes,數(shù)據(jù)位為NumberOfBytes,用于發(fā)送接收端數(shù)據(jù)校驗(yàn),提高通信的準(zhǔn)確性。在應(yīng)用程序中執(zhí)行WriteFile()函數(shù)寫(xiě)入設(shè)備數(shù)據(jù),其寫(xiě)入關(guān)鍵程序如下。

        為降低中斷頻率,MCP2515 的發(fā)送中斷被禁用,發(fā)送前先查詢寄存器的緩沖器的狀態(tài),緩沖器清零則立即發(fā)送幀數(shù)據(jù),若緩沖器鎖定則輪詢方式循環(huán)查詢狀態(tài),達(dá)到超時(shí)數(shù)值后返回并提示,函數(shù)的發(fā)送流程如圖2 所示。

        5)CAN_Read 函數(shù)設(shè)計(jì)

        圖2 CAN_Write函數(shù)發(fā)送流程

        函數(shù)原型為DWORD CAN_Read(DWORD hO penContext,LPVOID pBuffer,DWORD count),主要用于讀取總線上的數(shù)據(jù)幀,pBuffer 為數(shù)據(jù)緩沖區(qū),count 為數(shù)據(jù)位,用于校驗(yàn)準(zhǔn)確性。MCP2515 收到數(shù)據(jù)幀后觸發(fā)中斷,中斷處理發(fā)送消息列隊(duì),該函數(shù)則讀取消息列隊(duì),將數(shù)據(jù)讀取至緩沖區(qū)中。應(yīng)用程序中執(zhí)行ReadFile()函數(shù)讀取設(shè)備數(shù)據(jù),由于系統(tǒng)采用分布式多設(shè)備的組網(wǎng)通信,在數(shù)據(jù)讀取時(shí)需要先讀取CAN 總線ID,每個(gè)ID 為唯一的,且對(duì)應(yīng)具體的設(shè)備終端,其關(guān)鍵代碼如下。

        其工作流程和CAN_Write 函數(shù)類似,其流程圖此處不再贅述。

        2.3 中斷處理優(yōu)化

        對(duì)于嵌入式實(shí)時(shí)操作系統(tǒng),為了滿足系統(tǒng)對(duì)硬件的實(shí)時(shí)性響應(yīng)需求,需要通過(guò)高效的中斷服務(wù)程序來(lái)滿足要求[16]。MCP2515 的中斷類型有發(fā)送中斷、接收中斷、錯(cuò)誤中斷等,采用低電平中斷[17-18]。中斷處理的設(shè)計(jì)思路為先判斷中斷狀態(tài)再執(zhí)行相應(yīng)的處理,對(duì)于發(fā)送與接收中斷,當(dāng)發(fā)送或接收數(shù)據(jù)緩沖區(qū)釋放后自動(dòng)執(zhí)行中斷的清除。

        S3C6410 的WINCE BSP 中已經(jīng)對(duì)CPU 中斷端口進(jìn)行了定義和事件綁定,在該文的應(yīng)用中對(duì)CPU 中斷I/O 進(jìn)行了效率優(yōu)化,所有外部中斷均集成至一個(gè)CPU,避免了外部中斷過(guò)多導(dǎo)致的可維護(hù)性差、運(yùn)行效率低的缺點(diǎn)。中斷的事件創(chuàng)建和等待事件部分關(guān)鍵程序如下:

        3 測(cè)試與分析

        該文在S3C6410 主板上對(duì)CAN 通信進(jìn)行驅(qū)動(dòng)調(diào)試與測(cè)試分析,主要測(cè)試CAN 總線的幀傳輸效率和驅(qū)動(dòng)程序的穩(wěn)定性。傳輸速率主要是測(cè)試數(shù)據(jù)幀的發(fā)送、接收速度以及中斷響應(yīng)頻率。由于CAN 總線通信是采用多終端組網(wǎng)數(shù)據(jù)采集和控制,若各個(gè)通信終端中斷頻率高,會(huì)占用過(guò)多的系統(tǒng)硬件資源導(dǎo)致性能下降,甚至出現(xiàn)死機(jī)現(xiàn)象。通過(guò)中斷處理優(yōu)化,在數(shù)據(jù)通信時(shí),CAN 上位機(jī)中斷響應(yīng)明顯下降,幾乎不存在丟幀問(wèn)題,性能穩(wěn)定。

        驅(qū)動(dòng)程序的組網(wǎng)穩(wěn)定性測(cè)試則主要是測(cè)試多設(shè)備聯(lián)機(jī)情況下CAN 運(yùn)行情況,該文測(cè)試采用了單臺(tái)S3C6410 主機(jī)連接6 臺(tái)STM32 數(shù)據(jù)采集終端,當(dāng)任意斷開(kāi)1~3 臺(tái)STM32 終端,造成CAN 通信模塊異常。測(cè)試優(yōu)化前當(dāng)1 號(hào)CAN 模塊異常時(shí),第2 號(hào)CAN 模塊通道則變?yōu)?~15,造成通道沖突報(bào)錯(cuò)。優(yōu)化后當(dāng)1號(hào)CAN 模塊異常時(shí),第2 號(hào)CAN 模塊正常工作,不會(huì)受影響,異常模塊則被隔離。具體結(jié)果如表1 所示。

        表1 優(yōu)化前后測(cè)試數(shù)據(jù)

        測(cè)試結(jié)果表明,驅(qū)動(dòng)程序中的接口功能函數(shù)、中斷服務(wù)程序優(yōu)化后,能夠有效提高CAN 多終端設(shè)備的穩(wěn)定組網(wǎng)和高速通信,降低系統(tǒng)中斷頻率,提高了系統(tǒng)性能,保證了整個(gè)系統(tǒng)的穩(wěn)定運(yùn)行。

        4 結(jié)束語(yǔ)

        該文以S3C6410 為硬件平臺(tái),在Wince8 嵌入式系統(tǒng)下,提出一種針對(duì)Microchip MCP2515 的CAN 驅(qū)動(dòng)程序的設(shè)計(jì)與優(yōu)化方案,該驅(qū)動(dòng)程序集成于BSP中。該驅(qū)動(dòng)程序支持多設(shè)備終端的組網(wǎng)和CAN 總線通信,實(shí)現(xiàn)了多種STM32 終端與S3C6410 上位機(jī)之間的數(shù)據(jù)通信,且下位機(jī)終端設(shè)備具有良好的擴(kuò)展性,通信協(xié)議確定后終端設(shè)備具有通用性。實(shí)驗(yàn)結(jié)果表明,該驅(qū)動(dòng)程序能夠穩(wěn)定運(yùn)行,性能可靠。

        猜你喜歡
        優(yōu)化系統(tǒng)設(shè)計(jì)
        Smartflower POP 一體式光伏系統(tǒng)
        超限高層建筑結(jié)構(gòu)設(shè)計(jì)與優(yōu)化思考
        民用建筑防煙排煙設(shè)計(jì)優(yōu)化探討
        關(guān)于優(yōu)化消防安全告知承諾的一些思考
        一道優(yōu)化題的幾何解法
        WJ-700無(wú)人機(jī)系統(tǒng)
        ZC系列無(wú)人機(jī)遙感系統(tǒng)
        瞞天過(guò)海——仿生設(shè)計(jì)萌到家
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        曰韩人妻无码一区二区三区综合部| 漂亮人妻被强中文字幕乱码| 国内免费自拍9偷1拍| 日本人妻av在线观看| 成人av资源在线播放| 91亚洲免费在线观看视频 | 无套内谢孕妇毛片免费看| 农村欧美丰满熟妇xxxx| 国产精品公开免费视频| 蜜桃视频中文字幕一区二区三区 | 国产粉嫩高清| 久久九九精品国产不卡一区| 国产精品理论片在线观看| 久久人人爽人人爽人人av| 国产成人精品亚洲午夜| 在线一区二区三区免费视频观看| 亚洲最大中文字幕在线| 四虎影视免费观看高清视频| 欧美极品少妇性运交| 亚洲AV无码AV色| 亚洲视频一区二区免费看| 国产午夜福利精品一区二区三区 | 亚洲成在人线在线播放无码| 国产区精品| 久久精品国产亚洲av热九| 久久精品女人av一区二区| 日韩欧美亚洲综合久久影院ds| 日韩电影一区二区三区| 欧美三级不卡视频| 玩弄放荡人妻一区二区三区| 日本人视频国产一区二区三区| 日韩视频中文字幕精品偷拍| 日韩专区欧美专区| 麻豆AV无码久久精品蜜桃久久 | 专区亚洲欧洲日产国码AV| 国产午夜视频高清在线观看| 国产 高潮 抽搐 正在播放| 国产又色又爽无遮挡免费| av天堂线上| 日韩女优图播一区二区| 午夜精品久久久久久99热|