基于ti的lm3s系列mcu的can開發(fā)_第1頁
已閱讀1頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第1章 CAN接口應(yīng)用1.1 概述CAN,全稱為“Controller Area Network”,即控制器局域網(wǎng),是一種用于連接電子控制單元(ECU)的多主站共用型串行總線標(biāo)準(zhǔn),并成為國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一 。CAN特別適用于電磁干擾和其它電子噪聲強(qiáng)的環(huán)境,它可以使用像RS-485這樣的平衡差分線或者更穩(wěn)定可靠的雙絞線。 最初,CAN被設(shè)計(jì)作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網(wǎng)

2、絡(luò)。 后來也使用在許多嵌入式控制應(yīng)用中(比如:工業(yè)和醫(yī)療)。 當(dāng)總線長(zhǎng)度小于40米時(shí)位速率可高達(dá)1Mbps。 位速率會(huì)隨著節(jié)點(diǎn)之間距離的增加而降低(例如:總線長(zhǎng)度為500米時(shí)位速率為125 Kbps)。Luminary公司的LM3S2000/5000/8000系列ARM Cortex-M3處理器內(nèi)建1~3(詳細(xì)配置請(qǐng)參考芯片手冊(cè))路CAN控制器,可同時(shí)支持多路CAN總線的操作,使器件可用作網(wǎng)關(guān)、 開關(guān)、 工業(yè)或汽車應(yīng)用中多個(gè)CAN總線的

3、路由器。1.2 特性 特性Stellaris® CAN 模塊具有以下特性: ???支持CAN2.0 A/B協(xié)議; ???位速率可編程(高達(dá) 位速率可編程(高達(dá)1 Mbps); ???具有32個(gè)報(bào)文對(duì)象; ???每個(gè)報(bào)文對(duì)象都具有自己的標(biāo)識(shí)符屏蔽碼(過濾器使用后方能使用); ???包含可屏蔽中斷; ???在時(shí)間觸發(fā)的 在時(shí)間觸發(fā)的CAN(TTCAN)應(yīng)用中禁止自動(dòng)重發(fā)送模式; )應(yīng)用中禁止自動(dòng)重發(fā)送模式; ???自測(cè)試操作具有可

4、編程的回環(huán)模式; ???具有可編程的FIFO模式; ???數(shù)據(jù)長(zhǎng)度從 數(shù)據(jù)長(zhǎng)度從0到8字節(jié) 字節(jié); ???通過 通過 CAN0Tx 和 CAN0Rx 管腳與外部 管腳與外部CAN PHY無縫連接 無縫連接。1.3 外設(shè)驅(qū)動(dòng)庫(kù)函數(shù)說明Stellaris® Peripheral Driver Library為用戶提供了完整可靠的CAN通信底層API函數(shù),用戶通過調(diào)用API函數(shù)即可完成CAN控制器配置、報(bào)文對(duì)象配置及CAN中斷管理

5、等CAN模塊開發(fā)工作。使用Stellaris® Peripheral Driver Library提供的API函數(shù)開發(fā)CAN模塊應(yīng)用,必須了解相關(guān)的數(shù)據(jù)結(jié)構(gòu)及枚舉類型,下面就先介紹CAN模塊API函數(shù)所涉及的數(shù)據(jù)結(jié)構(gòu)及枚舉類型。 注:在can.h can.h和hw_can.h hw_can.h中我們一直要應(yīng)用 中我們一直要應(yīng)用,所有的結(jié)構(gòu)體都是在 所有的結(jié)構(gòu)體都是在can.h can.h中已經(jīng)定義 中已經(jīng)定義1.3.1 數(shù)據(jù)結(jié)

6、構(gòu) 數(shù)據(jù)結(jié)構(gòu) 1. tCANBitClkParms tCANBitClkParms是CAN位時(shí)鐘設(shè)置參數(shù)的結(jié)構(gòu)類型,其原型定義如程序清單1.1所示。注:后文中將講到對(duì) 后文中將講到對(duì)CAN CAN波特率真設(shè)置時(shí) 波特率真設(shè)置時(shí),就要對(duì) 就要對(duì)CAN CAN的位時(shí)間寄存器進(jìn)行操作 的位時(shí)間寄存器進(jìn)行操作,雖然在驅(qū)動(dòng)庫(kù)里面已經(jīng)對(duì)其進(jìn)行 雖然在驅(qū)動(dòng)庫(kù)里面已經(jīng)對(duì)其進(jìn)行了封裝 了封裝,但是我們還要了解它的工作原理 但是我們還要了解它的工作原理.程

7、序清單 程序清單1.1 tCANBitClkParms結(jié)構(gòu)原型 結(jié)構(gòu)原型typedef struct { unsigned int uSyncPropPhase1Seg; // 這個(gè)成員用于保存位時(shí)間中的傳輸段及相位緩沖段 這個(gè)成員用于保存位時(shí)間中的傳輸段及相位緩沖段1 // 的和,取值范圍 的和,取值范圍2~16 unsigned int uPhase2Seg; // 這個(gè)成員用于保存位時(shí)間中的相位緩沖段 這個(gè)成員用于保存位時(shí)間中的

8、相位緩沖段2的值, 的值, // 取值范圍為 取值范圍為1~8 如程序清單1.5所示。程序清單 程序清單1.5 tCANStsReg枚舉類型 枚舉類型typedef enum typedef enum { { CAN_STS_CONTROL, // CAN_STS_CONTROL, // 讀取 讀取CAN CAN控制器狀態(tài) 控制器狀態(tài) CAN_STS_TXREQUEST, // CAN_STS_TXREQUEST, // 讀取

9、讀取32 32個(gè)報(bào)文對(duì)象的發(fā)送請(qǐng)求位 個(gè)報(bào)文對(duì)象的發(fā)送請(qǐng)求位 CAN_STS_NEWDAT, // CAN_STS_NEWDAT, // 讀取 讀取32 32個(gè)報(bào)文對(duì)象的 個(gè)報(bào)文對(duì)象的NewDat NewDat位 CAN_STS_MSGVAL // CAN_STS_MSGVAL // 讀取 讀取32 32個(gè)報(bào)文對(duì)象的 個(gè)報(bào)文對(duì)象的MsgVal MsgVal位}tCANStsReg;4. tCANIntFlags tCANIntFla

10、gs 所 列 舉 的 類 型 在 調(diào) 用 函 數(shù) CANIntEnable( ) 和 CANIntDisable( ) 時(shí) 用 到 時(shí) 用 到 ,tCANIntFlags的原型定義如程序清單1.6所示。程序清單 程序清單1.6 tCANIntFlags枚舉類型 枚舉類型typedef enum typedef enum {CAN_INT_ERROR = 0x00000008, // 表示 表示CAN控制器允許產(chǎn)生錯(cuò)誤中斷 控制器允許

11、產(chǎn)生錯(cuò)誤中斷 CAN_INT_STATUS = 0x00000004, // 表示 表示CAB控制器允許產(chǎn)生狀態(tài)中斷 控制器允許產(chǎn)生狀態(tài)中斷 CAN_INT_MASTER = 0x00000002 // 表示允許產(chǎn)生任何 表示允許產(chǎn)生任何CAN中斷,如果這位沒設(shè)置, 中斷,如果這位沒設(shè)置, // 則不會(huì)產(chǎn)生任何中斷 則不會(huì)產(chǎn)生任何中斷}tCANIntFlags;5. tMsgObjType tMsgObjType所列舉的類型在調(diào)用 調(diào)用

12、API函數(shù) 函數(shù)CANMessageSet( )時(shí)用到,用于確定報(bào)文對(duì)象 時(shí)用到,用于確定報(bào)文對(duì)象將被配置的類型 將被配置的類型,tMsgObjType的原型定義如程序清單1.7所示。程序清單 程序清單1.7 tMsgObjType枚舉類型 枚舉類型typedef enum typedef enum { { MSG_OBJ_TYPE_TX, // MSG_OBJ_TYPE_TX, // 發(fā)送報(bào)文對(duì)象 發(fā)送報(bào)文對(duì)象 MSG_OBJ_

13、TYPE_TX_REMOTE, // MSG_OBJ_TYPE_TX_REMOTE, // 發(fā)送遠(yuǎn)程幀報(bào)文對(duì)象 發(fā)送遠(yuǎn)程幀報(bào)文對(duì)象 MSG_OBJ_TYPE_RX, // MSG_OBJ_TYPE_RX, // 接收數(shù)據(jù)幀報(bào)文對(duì)象 接收數(shù)據(jù)幀報(bào)文對(duì)象 MSG_OBJ_TYPE_RX_REMOTE, // MSG_OBJ_TYPE_RX_REMOTE, // 接收遠(yuǎn)程幀報(bào)文對(duì)象 接收遠(yuǎn)程幀報(bào)文對(duì)象 MSG_OBJ_TYPE_RXTX

14、_REMOTE // MSG_OBJ_TYPE_RXTX_REMOTE // 自動(dòng)應(yīng)答遠(yuǎn)程幀報(bào)文對(duì)象 自動(dòng)應(yīng)答遠(yuǎn)程幀報(bào)文對(duì)象}tMsgObjType;6. tCANStatusCtrl tCANStatusCtrl所列舉的類型為調(diào)用函數(shù) 調(diào)用函數(shù)CANStatusGet( )時(shí)的返回值的可能情況,包含所 時(shí)的返回值的可能情況,包含所有的錯(cuò)誤類型及總線狀態(tài) 有的錯(cuò)誤類型及總線狀態(tài),tCANStatusCtrl的原型定義如程序清單1.8所

15、示。程序清單 程序清單1.8 tCANStatusCtrl枚舉類型 枚舉類型typedef enum typedef enum { { CAN_STATUS_BUS_OFF = 0x00000080, // CAN_STATUS_BUS_OFF = 0x00000080, // 脫離總線狀態(tài) 脫離總線狀態(tài) CAN_STATUS_EWARN = 0x00000040, // CAN_STATUS_EWARN = 0x000000

16、40, // 錯(cuò)誤計(jì)數(shù)器已達(dá)到警告值 錯(cuò)誤計(jì)數(shù)器已達(dá)到警告值 CAN_STATUS_EPASS = 0x00000020, // CAN_STATUS_EPASS = 0x00000020, // 錯(cuò)誤計(jì)數(shù)器已達(dá)到被動(dòng)錯(cuò)誤值 錯(cuò)誤計(jì)數(shù)器已達(dá)到被動(dòng)錯(cuò)誤值 CAN_STATUS_RXOK = 0x00000010, // CAN_STATUS_RXOK = 0x00000010, // 自上次讀此狀態(tài)以來, 自上次讀此狀態(tài)以來,CAN

17、CAN控制器成功收到一幀數(shù)據(jù) 控制器成功收到一幀數(shù)據(jù) CAN_STATUS_TXOK = 0x00000008, // CAN_STATUS_TXOK = 0x00000008, // 自上次讀此狀態(tài)以來, 自上次讀此狀態(tài)以來,CAN CAN控制器成功發(fā)送一幀數(shù)據(jù) 控制器成功發(fā)送一幀數(shù)據(jù) CAN_STATUS_LEC_MSK = 0x00000007, // This is the mask for the last error co

18、de field. CAN_STATUS_LEC_MSK = 0x00000007, // This is the mask for the last error code field. CAN_STATUS_LEC_NONE = 0x00000000, // CAN_STATUS_LEC_NONE = 0x00000000, // 沒有任何錯(cuò)誤 沒有任何錯(cuò)誤 CAN_STATUS_LEC_STUFF= 0x00000001, //

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論