




已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于CAN總線的數(shù)據(jù)采集系統(tǒng)前言 (一)背景隨著汽車工業(yè)的發(fā)展,20 世紀 80 年代中期,率先由 Bosch 公司研發(fā)出新一代的汽車總線即控制器局域網(wǎng)(Controller Area Network,簡稱:CAN 總線或 CAN-bus),CAN 總線具有布線簡單、典型的總線型結(jié)構(gòu)、可最大限度的節(jié)約布線與維護成本、穩(wěn)定可靠、實時、抗干擾能力強、傳輸距離遠等特點,這些都決定了 CAN 總線必定是一種成功的總線。一經(jīng)推出不僅在汽車行業(yè)得到廣泛的推廣與應用,在諸如航天、電力、石化、冶金、紡織、造紙等領(lǐng)域也得到廣泛應用。在自動化儀表、工業(yè)生產(chǎn)現(xiàn)場、數(shù)控機床等系統(tǒng)中也越來越多的使用了 CAN 總線,CAN 總線在未來的發(fā)展中依然充滿活力,有著巨大的發(fā)展空間。由于 CAN 總線本身只定義 ISO/OSI 模型中的第一層(物理層)和第二層(數(shù)據(jù)鏈路層),通常情況下 CAN 總線網(wǎng)絡都是獨立的網(wǎng)絡,所以沒有網(wǎng)絡層。在實際使用中,用戶還需要自己定義應用層的協(xié)議,因此在 CAN 總線的發(fā)展過程中出現(xiàn)了各種版本的 CAN 應用層協(xié)議,現(xiàn)階段最流行的 CAN 應用層協(xié)議主要有 CANopen、DeviceNet 和 J1939 等協(xié)議。而本設計采用的協(xié)議時CANopen。(二)概述 控制器局部網(wǎng)(CANCONTROLLER AREA NETWORK)是BOSCH公司為現(xiàn)代汽車應用領(lǐng)先推出的一種多主機局部網(wǎng),由于其高性能、高可靠性、實時性等優(yōu)點現(xiàn)已廣泛應用于工業(yè)自動化、多種控制設備、交通工具、醫(yī)療儀器以及建筑、環(huán)境控制等眾多部門??刂破骶植烤W(wǎng)將在我國迅速普及推廣。 隨著計算機硬件、軟件技術(shù)及集成電路技術(shù)的迅速發(fā)展,工業(yè)控制系統(tǒng)已成為計算機技術(shù)應用領(lǐng)域中最具活力的一個分支,并取得了巨大進步。由于對系統(tǒng)可靠性和靈活性的高要求,工業(yè)控制系統(tǒng)的發(fā)展主要表現(xiàn)為:控制面向多元化,系統(tǒng)面向分散化,即負載分散、功能分散、危險分散和地域分散。 分散式工業(yè)控制系統(tǒng)就是為適應這種需要而發(fā)展起來的。這類系統(tǒng)是以微型機為核心,將 5C技術(shù)-COMPUTER(計算機技術(shù))、CONTROL(自動控制技術(shù))、COMMUNICATION(通信技術(shù))、CRT(顯示技術(shù))和 CHANGE(轉(zhuǎn)換技術(shù))緊密結(jié)合的產(chǎn)物。它在適應范圍、可擴展性、可維護性以及抗故障能力等方面,較之分散型儀表控制系統(tǒng)和集中型計算機控制系統(tǒng)都具有明顯的優(yōu)越性。 典型的分散式控制系統(tǒng)由現(xiàn)場設備、接口與計算設備以及通信設備組成?,F(xiàn)場總線(FIELDBUS)能同時滿足過程控制和制造業(yè)自動化的需要,因而現(xiàn)場總線已成為工業(yè)數(shù)據(jù)總線領(lǐng)域中最為活躍的一個領(lǐng)域?,F(xiàn)場總線的研究與應用已成為工業(yè)數(shù)據(jù)總線領(lǐng)域的熱點。盡管目前對現(xiàn)場總線的研究尚未能提出一個完善的標準,但現(xiàn)場總線的高性能價格比將吸引眾多工業(yè)控制系統(tǒng)采用。同時,正由于現(xiàn)場總線的標準尚未統(tǒng)一,也使得現(xiàn)場總線的應用得以不拘一格地發(fā)揮,并將為現(xiàn)場總線的完善提供更加豐富的依據(jù)。控制器局部網(wǎng) CAN(CONTROLLER AERANETWORK)正是在這種背景下應運而生的。 由于CAN為愈來愈多不同領(lǐng)域采用和推廣,導致要求各種應用領(lǐng)域通信報文的標準化。為此,1991年 9月 PHILIPS SEMICONDUCTORS制訂并發(fā)布了 CAN技術(shù)規(guī)范(VERSION 2.0)。該技術(shù)規(guī)范包括A和B兩部分。2.0A給出了曾在CAN技術(shù)規(guī)范版本1.2中定義的CAN報文格式,能提供11位地址;而2.0B給出了標準的和擴展的兩種報文格式,提供29位地址。此后,1993年11月ISO正式頒布了道路交通運載工具-數(shù)字信息交換-高速通信控制器局部網(wǎng)(CAN)國際標準(ISO11898),為控制器局部網(wǎng)標準化、規(guī)范化推廣鋪平了道路。一、 總體方案設計(一) 方案論證方案一:單片機AT89C51屬標準型,芯片價格低廉,引腳與80C51完全兼容。片上外圍資源豐富,片內(nèi)具有41d3 的Flash ROM程序存貯空間,這不僅給程序修改帶來極大方便,而且避免了外部ROM擴展,降低了節(jié)點成 本和線路復雜性,提高了電路可靠性。另外AT89C51具有在片程序和ROM兩級保密系統(tǒng),可防止程序被 非法剽竊。 SJA1000是PHILIP公司推出的功能很強的CAN 控制器,其內(nèi)部結(jié)構(gòu)見圖2。片內(nèi)含信息緩沖、位流處 理、位定時邏輯、接收濾波、錯誤管理邏輯等電路,并配置有豐富的功能寄存器。可完成數(shù)據(jù)成幀、總線填充、 錯誤檢測、總線仲裁及錯誤界定處理等CAiN規(guī)范。方案二:采用Luminary公司基于 ARM CortexTM-M3 的控制器LM3S5749。Luminary Micro StellarisTM系列的微控制器是首款基于 ARM CortexTM-M3 的控制器,它將高性能的 32 位計算引入到對價格敏感的嵌入式微控制器應用中。這些堪稱先鋒的器件擁有與 8 位和 16 位器件相同的價格,卻能為用戶提供 32 位器件的性能,而且,所有器件都是小型封裝形式提供。Luminary Micro 提供一套完整的解決方案以便快速進入市場,包括用戶開發(fā)板、白皮書和應用手冊,以及強大的支持、銷售和分銷商網(wǎng)絡。所以,我們這里就采用M3來實現(xiàn)CAN總線的數(shù)據(jù)采集。(二) 系統(tǒng)框圖如圖1:圖1 系統(tǒng)框圖二、 硬件電路的設計外圍電路包括:電源電路、溫度采集、時鐘電路、存儲電路、報警電路、模擬控制電路、按鍵電路、顯示電路以及串口等電路。下面將依次對各個模塊進行說明。(一)電源電路電源變壓器是將交流電網(wǎng)220V的電壓變?yōu)樗枰碾妷褐?。交流電?jīng)過二極管整流之后,方向單一了,但是電流強度大小還是處在不斷地變化之中。這種脈動直流一般是不能直接用來給集成電路供電的,而要通過整流電路將交流電變成脈動的直流電壓。由于此脈動的直流電壓還含有較大的紋波,必須通過濾波電路加以濾除,從而得到平滑的直流電壓。濾波的任務,就是把整流器輸出電壓中的波動成分盡可能地減小,改造成接近穩(wěn)恒的直流電。但這樣的電壓還隨電網(wǎng)電壓波動,一般有%左右的波動,負載和溫度的變化而變化,因而在整流、濾波電路之后,還需要接穩(wěn)壓電路。穩(wěn)壓電路的作用是當電網(wǎng)電壓波動,負載和溫度變化時,維持輸出直流電壓穩(wěn)定。220V交流電通過9V變壓器變?yōu)?V的交流電,9V交流電通過四個二極管的全橋整流后變?yōu)?V直流電,然后經(jīng)過電解電容(470F)進行一級濾波,以去除直流電里面的雜波,防止干擾。9V直流電出來后再經(jīng)過三端穩(wěn)壓器LM7805穩(wěn)壓成為穩(wěn)定的5V電源,其中7805的Vin腳是輸入腳,接9V直流電源正極,GND是接地腳,接9V直流電源負極,Vout為輸出腳,它和接地腳的電壓就是+5V了。5V電源出來再經(jīng)過電解電容的二級濾波,使5V電源更加穩(wěn)定可靠。同時在5V穩(wěn)壓電源加上一個10K的電阻和一個紅色發(fā)光二極管,當上電后,紅色發(fā)光二極管點亮,表示電源工作正常。此時一個穩(wěn)定輸出5V的電源已經(jīng)設計好,對于本設計它完全能夠滿足單片機及集成塊所需電源的要求。電源原理圖如圖2所示:圖2 電源原理圖(二)復位電路所示為復位電路原理圖,復位是單片機的初始化操作,其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序,并使其它功能單元處于一個確定的初始狀態(tài)。本復位電路采用的是按鍵復位,它是通過復位端經(jīng)電阻與VCC電源接通而實現(xiàn)的,它兼具上電復位功能。因本系統(tǒng)的晶振的頻率為12MHz,所以,復位信號持續(xù)時間應當超過2S才能完成復位操作。圖3 復位電路(三)CAN總線通訊電路圖4 CAN總線通訊接口(四)按鍵電路圖5.4所示為鍵盤原理圖,本系統(tǒng)采用的是獨立式鍵盤結(jié)構(gòu),每個按鍵單獨占用一根I/O口線,每個按鍵的工作不會影響其它I/O口線的狀態(tài)。它軟件是采用查詢式結(jié)構(gòu),首先逐位查詢每根I/O口線的輸入狀態(tài),如某一根I/O口線輸入為低電平,則可確認該I/O口線所對應的按鍵已按下,然后,再轉(zhuǎn)向該鍵的功能處理程序。鍵盤是人與微機打交道的主要設備,按鍵的讀取容易引起誤動作??刹捎密浖ザ秳拥姆椒ㄌ幚?,軟件的觸點在閉合和斷開的時候會產(chǎn)生抖動,這時觸點的邏輯電平是不穩(wěn)定的,如不采取妥善處理的話,將引起按鍵命令錯誤或重復執(zhí)行,在這里采用軟件延時的方法來避開抖動,延時時間20ms。按下某鍵時,對應的功能鍵解釋程序得到執(zhí)行,如操作者沒有釋放按鍵,則對應的功能會反復執(zhí)行,好象連續(xù)執(zhí)行,在這里我們采用軟件延時250ms,當按鍵沒釋放則執(zhí)行下一條對應程序。利用連擊功能,能實現(xiàn)快速調(diào)時操作。單片及應用系統(tǒng)中,鍵盤掃描只是CPU的工作內(nèi)容之一。CPU忙于各項任務時,如何兼顧鍵盤的輸入,取決于鍵盤的工作方式??紤]儀表系統(tǒng)中CPU任務的份量,來確定鍵盤的工作方式。鍵盤的工作方式選取的原則是:既要保證能及時響應按鍵的操作,又不過多的占用CPU的工作時間。鍵盤的工作方式有:查詢方式(編程掃描,定時掃描方式)、中斷掃描方式。矩陣式鍵盤適用于按鍵數(shù)量較多的場合,由行線和列線組成,按鍵位于行列的交叉點上節(jié)省I/O口。按鍵電路如圖16圖5 按鍵電路(五)JTAG下載電路JTAG是英文“Joint Test Action Group(聯(lián)合測試行為組織)”的詞頭字母的簡寫,該組織成立于1985 年,是由幾家主要的電子制造商發(fā)起制訂的PCB 和IC 測試標準。JTAG 建議于1990 年被IEEE 批準為IEEE1149.1-1990 測試訪問端口和邊界掃描結(jié)構(gòu)標準。該標準規(guī)定了進行邊界掃描所需要的硬件和軟件。自從1990 年批準后,IEEE 分別于1993 年和1995 年對該標準作了補充,形成了現(xiàn)在使用的IEEE1149.1a-1993 和IEEE1149.1b-1994。JTAG 主要應用于:電路的邊界掃描測試和可編程芯片的在線系統(tǒng)編程。圖6 JTAG電路(六)LM3S6965介紹如圖18所示為LM3S6965芯片的引腳圖圖7 AT89S52引腳圖Luminary Micro公司 Stellaris所提供一系列的微控制器是首款基于ARM Cortex-M3的控制器,它們?yōu)閷Τ杀居绕涿舾械那度胧轿⒖刂破鲬梅桨笌砹烁咝阅艿?2位運算能力。 這些具備領(lǐng)先技術(shù)的芯片使用戶能夠以傳統(tǒng)的8位和16位器件的價位來享受32位的性能,而且所有型號都是以小占位面積的封裝形式提供。該 Stellaris 系列芯片能夠提供高效的性能、廣泛的集成功能以及按照要求定位的選擇,適用于各種關(guān)注成本并明確要求具有的過程控制以及連接能力的應用方案。 該Stellaris LM3S1000 系列使用更大的片上存儲器、增強型電源管理和擴展I/O以及控制功能來擴展Stellaris家族。 該StellarisLM3S2000 系列是針對控制器局域網(wǎng)(CAN)應用方案而設計的一組芯片,它在Stellaris系列芯片的基礎(chǔ)上擴展了Bosch CAN網(wǎng)絡技術(shù)短距離工業(yè)網(wǎng)絡里的黃金標準。 該Stellaris LM3S2000系列芯片還標志著先進的Cortex-M3內(nèi)核和CAN能力的首次結(jié)合運用。 該Stellaris LM3S6000 系列芯片結(jié)合了10/100以太網(wǎng)媒體訪問控制(MAC)以及物理層(PHY),標志著ARM Cortex-M3 MCU已經(jīng)具備集成連接能力,還是唯一集成了10/100以太網(wǎng)MAC和PHY物理層的ARM架構(gòu)MCU。 該Stellaris LM3S8000 系列結(jié)合了 Bosch 控制器局域網(wǎng)技術(shù)和 10/100 以太網(wǎng)媒體訪問控制(MAC)以及物理 (PHY) 層。該LM3S5749微控制器是針對工業(yè)應用方案而設計的,包括遠程監(jiān)控、電子販售機、測試和測量設備、網(wǎng)絡設備和交換機、工廠自動化、HVAC和建筑控制、游戲設備、運動控制、醫(yī)療器械、以及火警安防。至于那些對功耗有特別要求的應用方案,LM3S5749微控制器還具有一個電池備用的休眠模塊,從而有效的使LM3S5749芯片在未被激活的時候進入低功耗狀態(tài)。 一個上電/掉電序列發(fā)生器、連續(xù)的時間計數(shù)器(RTC)、一對匹配寄存器、一個到系統(tǒng)總線的APB接口以及專用的非易失性存儲器、休眠模塊等功能組件使LM3S5749微控制器極其適合用在電池的應用中。除此之外,該LM3S5749微控制器的優(yōu)勢還在于能夠方便的運用多種ARM的開發(fā)工具和片上系統(tǒng)(SoC)的底層IP應用方案,以及廣大的用戶群體。 另外,該微控制器使用了兼容ARM的Thumb指令集的Thumb2指令集來減少存儲容量的需求,并以此達到降低成本的目的。 最后,LM3S5749微控制器與Stellaris系列的所有成員是代碼兼容的,這為用戶提供了靈活性,能夠適應各種精確的需求。三、 軟件設計(一)概述CANopen 協(xié)議是在 20 世紀 90 年代末,由 CiA 組織(CAN-in-Automation)在 CAL(CAN Application Layer)的基礎(chǔ)上發(fā)展而來,一經(jīng)推出便在歐洲得到了廣泛的認可與應用。經(jīng)過對 CANopen 協(xié)議規(guī)范文本的多次修改,使得 CANopen 協(xié)議的穩(wěn)定性、實時性、抗干擾性都得到了進一步的提高。并且 CIA 在各個行業(yè)不斷推出設備子協(xié)議,使 CANopen 協(xié)議在各個行業(yè)得到更快的發(fā)展與推廣。目前 CANopen 協(xié)議已經(jīng)在運動控制、車輛工業(yè)、電機驅(qū)動、工程機械、船舶海運等行業(yè)得到廣泛的應用。 (二)CANopen協(xié)議簡介 圖8 CANopen 設備結(jié)構(gòu)圖8 所示為 CANopen 設備結(jié)構(gòu),CANopen 協(xié)議通常分為用戶應用層、對象字典、以及通訊三個部分。其中最為核心的是對象字典,這部分將在本文以下章節(jié)中介紹。CANopen通訊是 CANopen 關(guān)鍵部分,其定義了 CANopen 協(xié)議通信規(guī)則以及與 CAN 控制器驅(qū)動之間對應關(guān)系,這部分是CANopen 協(xié)議核心思想。(三) 軟件流程圖9 軟件流程四、 總結(jié)在硬件電路制作階段,我到圖書館、網(wǎng)上查閱各種資料,在電腦上使用PROTEL99SE進行以及相關(guān)的繪圖軟件,使自己在理論分析設計和動手操作能力等各方面得到了極大提高。我通過對設計任務書的具體要求分析思考,再加上以前在學校進行的各種相關(guān)實踐和實習積累的經(jīng)驗,首次完成了硬件電路板的制作,雖然在初次制板時,其中在鉆孔時,看著別人鉆好簡單,自己一試,也不是一件容易的事,不僅看得你眼花繚亂,還一不小心,鉆頭就斷了,鉆孔那天我組就弄斷了好幾個。后來隨著動作越來越熟練,速度也越來越快。盡管板面沒買得好看,但那也是我們的成果,還有因不細心、不熟習制作流程,還有打印的時候由于油墨的質(zhì)量不行且不夠濃,導致第一塊電路板有很多的斷線而報廢,但總結(jié)了經(jīng)驗后又重新做了一塊板子,總算成功,但是還有很多地方要改進才行,以后做板子的時候要特別注意。硬件電路板制好后,在利用ASM51軟件編寫程序調(diào)試時,遇到了不少困難,這使我學會了耐心分析問題,并進一步鍛煉自己去攻破難題的能力。這次課程設計整體來說是成功的,但我也發(fā)現(xiàn)了自己許多錯漏和不足之處。譬如,最簡單的程序沒寫好就想著寫更復雜的程序,做事還是缺乏耐性和細心,當有時遇到問題時,總覺得無從下手,對于課本上的知識不能很好的組織起來。在編寫各功能程序時,特別是后來增添的比較復雜的程序, 目前,外面企業(yè)公司編寫程序大部分用C語言,而少用我們現(xiàn)在所學的匯編語言,所以我在以后的時間還是會自學C語言編程。再之現(xiàn)在電子領(lǐng)域、不同的行業(yè)極為廣泛,對于我們學電子專業(yè)的人來說,學好課本上的知識僅僅是基礎(chǔ),要掌握一門技術(shù)必須還得更深層的學習,并且親自動手去做,這樣才能達到事半功倍的效果。在最后,再次感謝王維博老師。參考文獻1 余永權(quán). 單片機原理及應用. 北京:電子工業(yè)出版社, 1997 2 邦田. 電子電路實用抗干擾技術(shù). 北京:人民郵電出版社,1994 3 曲喜貴. 電子元件材料手冊. 北京:電子工業(yè)出版社,19894 黃賢武,鄭筱霞 傳感器實際應用電路設計. 成都:電子科技大學出版社,19975 劉君華. 智能傳感器系統(tǒng). 西安:西安電子科技大學出版社,19996 余永權(quán). Flash 單片機原理及應用. 北京:電子工業(yè)出版社,19977 邦田. 電子電路實用抗干擾技術(shù). 北京:人民郵電出版社,19948 吉鵬.馬云峰. 微機原理與接口技術(shù). 北京:高等教育出版社,20019 振國. DS1820 及高精度溫度測量的實現(xiàn). 電子技術(shù)應用,200010 一線數(shù)字溫度傳感器資料. 武漢:武漢力源電子有限公司,199611 賢武,鄭霞. 傳感器實際應用電路設計. 成都:電子科技大學出版社,199712 偉正. 單線數(shù)字溫度傳感器的原理與應用. 電子技術(shù)應用,200013 周月霞,孫傳友. DS18B20 硬件連接及軟件編程. 傳感器世界,200114 單線數(shù)字溫度傳感器資料 武漢:武漢力源電子有限公司,1996附錄1:電路原理圖附錄2:部分源碼#include config.h/* 聲明全局變量*/extern tCANFrameBuff *pReceFrameBuff; /* 指向幀接收緩沖區(qū)的指針 */extern tCANFrameBuff *pSendFrameBuff; /* 指向幀發(fā)送緩沖區(qū)的指針 */extern tCANNodeInfo *pCAN_Node_Info; /* 指向CAN節(jié)點數(shù)據(jù)信息的指針 */ /* This structure holds the static defitions used to configure the CAN controller bit clock in the proper state given a requested setting.*/tCANBitClkParms CANBitClkSettings = /* * OSC = 8MHz */ #if 0 5, 2, 2, 1, /* CANBAUD_1M */ 5, 2, 2, 2, /* CANBAUD_500K */ 5, 2, 2, 4, /* CANBAUD_250K */ 9, 6, 4, 4, /* CANBAUD_125K */ 5, 2, 2, 10, /* CANBAUD_100k */ 5, 2, 2, 20, /* CANBAUD_50k */ 9, 6, 4, 20, /* CANBAUD_25k */ 5, 2, 2, 50, /* CANBAUD_20k */ 5, 2, 2, 100, /* CANBAUD_10k */ 9, 6, 2, 100, /* CANBAUD_5k */ 9, 6, 2, 200, /* CANBAUD_2k5 */#endif/* * OSC = 6MHz */ 6, 1, 2, 1, /* CANBAUD_1M */11, 4, 2, 1, /* CANBAUD_500K */11, 4, 2, 2, /* CANBAUD_250K */11, 4, 2, 4, /* CANBAUD_125K */11, 4, 2, 5, /* CANBAUD_100k */11, 4, 2, 10, /* CANBAUD_50k */11, 4, 2, 20, /* CANBAUD_25k */11, 4, 2, 25, /* CANBAUD_20k */11, 4, 2, 50, /* CANBAUD_10k */11, 4, 2, 100, /* CANBAUD_5k */11, 4, 2, 200, /* CANBAUD_2k5 */;/* Function name: CreateCAN* Descriptions: 創(chuàng)建一個節(jié)點信息結(jié)構(gòu)體* input parameters: *pCAN 指向節(jié)點結(jié)構(gòu)的空指針* ulChannelNr 節(jié)點通道號* ulBaud 節(jié)點通信波特率* ulRxMsgObj 節(jié)點接收數(shù)據(jù)MO* ulTxMsgObj 節(jié)點發(fā)送數(shù)據(jù)MO* *pReceBuff 節(jié)點接收數(shù)據(jù)緩沖區(qū)* *pSendBuff 節(jié)點發(fā)送數(shù)據(jù)緩沖區(qū)* output parameters: 無* Returned value: 無*/void CreateCAN (void *pCAN,unsigned long ulChannelNr, unsigned char ulBaud, unsigned long ulRxMsgObj, unsigned long ulTxMsgObj, tCANFrameBuff *pReceBuff, tCANFrameBuff *pSendBuff) tCANNodeInfo *pCAN_Info;pCAN_Info = (tCANNodeInfo *)pCAN; pCAN_Info-ulChNr = ulChannelNr;pCAN_Info-ucBADVal = ulBaud;pCAN_Info-ulRxMsgObjNr = ulRxMsgObj; pCAN_Info-ulTxMsgObjNr = ulTxMsgObj;pCAN_Info-pReceFrameBuff = pReceBuff; pCAN_Info-pSendFrameBuff = pSendBuff;return;/* Function name: CAN_ucWriteBuffer* Descriptions: 寫幀接收緩沖區(qū)* input parameters: *pBuf 指向接收緩沖區(qū)的指針* *pWrite 寫數(shù)據(jù)塊指針* output parameters: 無* Returned value: FULL, 緩沖區(qū)已滿* NOT_FULL 緩沖區(qū)未滿*/unsigned char CAN_ucWriteBuffer (void *pBuf, void *pWrite) tCANFrameBuff *pRecBuf;tCANFrame *pWriteBuf;pRecBuf = (tCANFrameBuff *)pBuf;pWriteBuf = (tCANFrame *)pWrite;if (pRecBuf-ucBufEmpty = FULL) /* 接收緩沖區(qū)已滿 */ return FULL;pRecBuf-ucSize +;pRecBuf-ucBufFull = NOT_FULL; pRecBuf-BufferpRecBuf-ucWrite = *pWriteBuf; /* 向接收緩沖區(qū)寫數(shù)據(jù) */ pRecBuf-ucWrite = (pRecBuf-ucWrite + 1) % CAN_MAX_Buffer; if (pRecBuf-ucSize = CAN_MAX_Buffer) /* 接收緩沖區(qū)已滿 */ pRecBuf-ucBufFull = FULL; pRecBuf-ucBufEmpty = NOT_EMPTY; return FULL; return NOT_FULL;/* Function name: CAN_ucReadBuffer* Descriptions: 讀數(shù)據(jù)緩沖區(qū)* input parameters: *pBuf 指向數(shù)據(jù)緩沖區(qū)指針* *pRead 讀數(shù)據(jù)塊指針* output parameters: 無* Returned value: EMPTY , 緩沖區(qū)為空* NOT_EMPTY, 緩沖區(qū)非空*/unsigned char CAN_ucReadBuffer (void *pBuf, void *pRead) tCANFrameBuff *pRecBuf;tCANFrame *pReadBuf;pRecBuf = (tCANFrameBuff *)pBuf;pReadBuf = (tCANFrame *)pRead;if (pRecBuf-ucSize = 0 ) pRecBuf-ucBufEmpty = EMPTY; pRecBuf-ucBufFull = NOT_FULL; return EMPTY;pRecBuf-ucSize -;*pReadBuf = pRecBuf-BufferpRecBuf-ucRead;pRecBuf-ucRead = (pRecBuf-ucRead + 1) % CAN_MAX_Buffer; return NOT_EMPTY;/* Function name: SendCANFrame* Descriptions: 發(fā)送一幀CAN報文至總線* input parameters: *pCAN 指向發(fā)送報文結(jié)構(gòu)體指針* *pFrame 數(shù)據(jù)塊指針 * output parameters: 無* Returned value: 無*/void SendCANFrame(void *pCAN, void *pFrame) tCANMsgObject MsgObjectTx;tCANNodeInfo *pCAN_Info;tCANFrame *pCANFrame;pCAN_Info = (tCANNodeInfo *)pCAN;pCANFrame = (tCANFrame *)pFrame; MsgObjectTx.ulMsgID = pCANFrame-ulID;if (pCANFrame-ucXID) MsgObjectTx.ulFlags = MSG_OBJ_EXTENDED_ID; else MsgObjectTx.ulFlags = MSG_OBJ_NO_FLAGS; MsgObjectTx.ulFlags |= MSG_OBJ_TX_INT_ENABLE; MsgObjectTx.ulMsgLen = (unsigned long)pCANFrame-ucDLC; MsgObjectTx.pucMsgData = pCANFrame-ucDatBuf; /* * 啟動發(fā)送失敗重發(fā) */CANRetrySet(pCAN_Info-ulChNr, pCAN_Info-ulTxMsgObjNr); CANMessageSet(pCAN_Info-ulChNr, pCAN_Info-ulTxMsgObjNr, &MsgObjectTx, MSG_OBJ_TYPE_TX); return;/* Function name: CANAcceptFilterSet* Descriptions: 設置節(jié)點接收驗收過濾* input parameters: *pCAN 指向節(jié)點的空指針* ulFrameID 接收幀ID* ulFrameIDMask 接收幀屏蔽碼* ucReceMode ID_FILTER 根據(jù)MsgObj ID 過濾(標準幀或擴展幀)* EXT_FILTER 過濾接收擴展幀* output parameters: 無* Returned value: 無*/void CANAcceptFilterSet (void *pCAN, unsigned long ulFrameID, unsigned long ulFrameIDMask, unsigned char ucReceMode) tCANMsgObject MsgObjectRx;tCANNodeInfo *pCAN_Info;unsigned char ucBufferIn8;pCAN_Info = (tCANNodeInfo *)pCAN; ASSERT(pCAN_Info-ulChNr = pCAN_Info-ulChNr)| (pCAN_Info-ulChNr = CAN1_BASE); switch (ucReceMode) /* * 驗收過濾標準幀 */ case STD_ID_FILTER: MsgObjectRx.ulFlags = (MSG_OBJ_RX_INT_ENABLE | MSG_OBJ_EXTENDED_ID | MSG_OBJ_USE_ID_FILTER); MsgObjectRx.ulMs
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年VB試題全景及答案概述
- 2025年軟件設計師職業(yè)規(guī)劃與目標設定試題及答案
- 鋪設成功之路的個人策略計劃
- 財務問題解決能力的提升策略計劃
- 2025年的房地產(chǎn)租賃合同
- 主管如何應對團隊變化計劃
- 軟件設計師考試中的創(chuàng)新思維試題及答案
- 2025建筑裝飾合同模板范本(律師制定版本)
- 2025【生態(tài)保護區(qū)電力工程承包合同】 解除合同及補償政策
- 法學概論與實際法律職業(yè)的關(guān)系試題及答案
- 藝考調(diào)式分析試題及答案
- GA/T 2160-2024法庭科學資金數(shù)據(jù)檢驗規(guī)程
- 2024年江蘇南京大數(shù)據(jù)集團有限公司招聘筆試真題
- 2024學年第二學期初三數(shù)學質(zhì)量調(diào)研(一)
- 2025智慧病區(qū)建設及評價規(guī)范
- GB/T 45399-2025信息技術(shù)云計算超融合系統(tǒng)通用技術(shù)要求
- 渣漿泵培訓課件
- 眩暈綜合征的護理查房
- 燃氣自愿過戶協(xié)議書
- 注冊安全工程師中級建筑施工安全生產(chǎn)專業(yè)實務(建筑施工安全類案例)模擬試卷1(共426題)
- 2025屆廣西柳州市名校高考沖刺押題(最后一卷)化學試卷含解析
評論
0/150
提交評論