基于CAN總線的車門控制_第1頁
基于CAN總線的車門控制_第2頁
基于CAN總線的車門控制_第3頁
基于CAN總線的車門控制_第4頁
基于CAN總線的車門控制_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于CAN總線的車門鎖控制摘 要 隨著現(xiàn)代汽車的日益發(fā)展,汽車電子設(shè)備不斷增加和改新,進(jìn)而使得汽車控制系統(tǒng)中出現(xiàn)大量的控制信號需實時交換的問題,傳統(tǒng)線束已遠(yuǎn)遠(yuǎn)不能滿足要求,汽車局域網(wǎng)應(yīng)運而生。CAN總線是一種多主方式的串行通訊總線,現(xiàn)實中CAN總線運用在汽車領(lǐng)域非常多,這里我用現(xiàn)在最常用的無線裝置PT2262和PT2272運用在車門鎖中將其與CAN總線一起運用達(dá)到很好的人機對話功能。再結(jié)合ARM2103完成整個自動控制。 關(guān)鍵詞: ARM2103 CAN PT2262 PT2272 SJA1000 CTM8251 目 錄第1章 概述4第2章 總體設(shè)計5第3章 系統(tǒng)硬件設(shè)計63.11SJA100

2、0模塊63.2CTM8251收發(fā)模塊73.3PT2262,PT2272模塊73.4ARM2103模塊9第3章系統(tǒng)軟件設(shè)計104.1 主程序設(shè)計圖104.2 SJA1000程序模塊114.3 ARM控制程序模塊14第5章 調(diào)試和總結(jié)15參考文獻(xiàn)16 第一章 概述在當(dāng)今的社會生活中,電子科學(xué)技術(shù)的運用越來越深入到各行各業(yè)之中,并得到了長足的發(fā)展和進(jìn)步,現(xiàn)場總線是應(yīng)用于工業(yè)現(xiàn)場,采用總線方式連接多個設(shè)備,用于傳輸工業(yè)現(xiàn)場各種數(shù)據(jù)的一類通信系統(tǒng)。 CAN是目前應(yīng)用最廣泛的車載網(wǎng)絡(luò),解決了現(xiàn)代汽車中眾多的控制與儀器之間的數(shù)據(jù)交換。CAN是一種多主方式的串行通訊總線,其設(shè)計的規(guī)范要求有很高的位速率,高的抗

3、電磁干擾性,并且能夠檢測出產(chǎn)生的任何錯誤。而現(xiàn)實當(dāng)中CAN總線運用在汽車領(lǐng)域非常多的,這里我用現(xiàn)在最常用的無線裝置PT2262和PT2272運用在車門鎖中將其與CAN總線一起運用達(dá)到很好的人機對話功能。這里我想用一塊ARM2103當(dāng)成車上的總MCU,通過PT2262人為按閉鍵發(fā)送信號到PT2272再經(jīng)過CAN收發(fā)器CTM8251通過CANH和CANL再與SJA1000 CAN控制器連接,再由ARM2103接收SJA1000的報文控制車鎖,當(dāng)檢測到車窗沒關(guān)上,先關(guān)窗戶,再關(guān)上車門后喇叭響3聲。當(dāng)按上開鍵時,只需開門,再延時20秒當(dāng)車門無人操作時自動關(guān)門上鎖。 第二章 總體設(shè)計這里說到CAN總線就

4、先讓我想到了UART,都是異步通信串口,雖然對CAN還有很多不懂,只是有個初步模型吧,我覺得他就是一個調(diào)配各個分支模塊與總控制的聯(lián)系及相互的聯(lián)系,或者說給它們提供一個中轉(zhuǎn)站也可以叫排序的電路吧,再讓總控制器去處理吧。先以ARM2103為控制器,通過PT2262人為按鍵發(fā)送信號到PT2272再用CAN收發(fā)器傳送到總線上,由CAN收發(fā)器接收CANH和CANL,這里選用CTM8251收發(fā)器,再傳送到CAN總線控制器SJA1000來處理接受和儲存來自車門及車窗節(jié)點的反饋信號,檢測開關(guān)是否開還是關(guān),而后ARM2103作為微控制器處理接收到的報文作出相應(yīng)的處理。其設(shè)計方框圖如下圖1所示:圖表 1總設(shè)計電路

5、圖 第三章 系統(tǒng)硬件設(shè)計3.1 1SJA1000模塊SJA1000用于汽車及一般工業(yè)的獨立CAN總線控制器,使用了并行總線接口與MCU連接,ARM板通過地址線,數(shù)據(jù)線和控制線與SJA1000連接的,訪問時,SJA1000的片選信號必須有效。以下是SJA1000的結(jié)構(gòu)圖;圖表2SJA1000結(jié)構(gòu)圖CAN總線定義了四種不同的信息幀:(1) 數(shù)據(jù)幀:將數(shù)據(jù)從發(fā)送器傳輸?shù)浇邮掌?,用下面的圖可以了解了;(2) 遠(yuǎn)程幀:從某個節(jié)點發(fā)出,請求發(fā)送具有同樣標(biāo)識符的數(shù)據(jù)幀; 遠(yuǎn)程幀由6個不同的位場組成:幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC校驗場、ACK應(yīng)答場和幀結(jié)束。與數(shù)據(jù)幀相反,遠(yuǎn)程幀的RTR位是隱性的。

6、它沒有數(shù)據(jù)域,所以數(shù)據(jù)長度代碼的數(shù)值沒有意義(可以標(biāo)注為0-8范圍里的任何值)o RTR位的極性表示了所發(fā)送的幀是一數(shù)據(jù)幀(RTR位顯性)還是遠(yuǎn)程幀(RTR位隱性)。(3) 錯誤幀:當(dāng)有任何節(jié)點檢測到總線錯誤時就發(fā)出錯誤幀.錯誤幀是由兩個場組成第一個場是由來自各站的錯誤標(biāo)志疊加得到的。第二個是出錯界定符。一個節(jié)點有兩種形式的錯誤標(biāo)志,即主動錯誤標(biāo)志和被動錯誤標(biāo)志。 一個是主動錯誤標(biāo)志由6個連續(xù)的顯性位組成;另一個是被動錯誤標(biāo)志由6個連續(xù)的隱性位組成,除非被其他節(jié)點的顯性位重寫。發(fā)生錯誤時,檢測到錯誤條件的站通過發(fā)送主動錯誤標(biāo)志指示錯誤。所有其他的站由此檢測到錯誤條件,并與此同時開始發(fā)送錯誤標(biāo)志

7、。顯性位序列導(dǎo)致個別站發(fā)送的不同的錯誤標(biāo)志被疊加在一起。錯誤標(biāo)志發(fā)出以后,每站就發(fā)送隱性位,并一直監(jiān)視總線直到檢測出一個隱性位為止。接著開始發(fā)送其余7個隱性位,這8個隱性位標(biāo)志一個錯誤信令過程的結(jié)束。(4) 過載幀:為了在先行的和后續(xù)的數(shù)據(jù)幀或遠(yuǎn)程幀之間附加一定的延時;以下兩種過載條件會導(dǎo)致過載標(biāo)志的傳送:1) 接收器的內(nèi)部條件(此接收器對十下一數(shù)據(jù)幀或遠(yuǎn)程幀需要有一延時;2) 間歇場期間檢測到一顯性位。由過載條件1 fn引發(fā)的過載幀,只允許起始十所期望的間歇場的第一個位時間。fn由過載條件2引發(fā)的過載幀,應(yīng)起始十所檢測到顯性位之后的位。通常為了延時下一個數(shù)據(jù)幀或遠(yuǎn)程幀,兩個過載幀都會產(chǎn)生。3

8、.2 CTM8251收發(fā)模塊CTM8251是一款帶隔離的通用CAN 收發(fā)器芯片,該芯片內(nèi)部集成了所有必需的CAN隔離及CAN 收、發(fā)器件,這些都被集成在不到3 平方厘米的芯片上。芯片的主要功能是將CAN 控制器的邏輯電平轉(zhuǎn)換為CAN 總線的差分電平并且具有DC 2500V 的隔離功能。CTM8251芯片主要功能:具有將CAN控制器邏輯電平轉(zhuǎn)換為CAN總線的差動電平的功能,另外CTM8251還具有對CAN控制器與CAN總線之間的隔離作用。圖表 3CTM8251連接圖3.3 PT2262,PT2272模塊車門的無線開鎖鍵就是用到了PT2262/2272,實際運用中 廠商都幫我們弄好了相互配對解鎖地

9、址,所以不需要我們?nèi)ピO(shè)置相應(yīng)的地址,PT2262/2272是一對帶地址、數(shù)據(jù)編碼功能的無線遙控發(fā)射/接收芯片。其中發(fā)射芯片PT2262-IR將載波振蕩器、編碼器和發(fā)射單元集成于一身,使發(fā)射電路變得非常簡潔。編碼芯片PT2262發(fā)出的編碼信號由:地址碼、數(shù)據(jù)碼、同步碼組成一個完整的碼字。當(dāng)發(fā)射機沒有按鍵按下時,PT2262不接通電源,其17腳為低電平,所以315MHz的高頻發(fā)射電路不工作,當(dāng)有按鍵按下時,PT2262得電工作,其第17腳輸出經(jīng)調(diào)制的串行數(shù)據(jù)信號,當(dāng)17腳為高電平期間315MHz的高頻發(fā)射電路起振并發(fā)射等幅高頻信號,當(dāng)17腳為低平期間315MHz的高頻發(fā)射電路停止振蕩,所以高頻發(fā)射

10、電路完全收控于PT2262的17腳輸出的數(shù)字信號,從而對高頻電路完成幅度鍵控(ASK調(diào)制)相當(dāng)于調(diào)制度為100的調(diào)幅。圖表 4PT2262結(jié)構(gòu)圖PT2272-M4則表示數(shù)據(jù)輸出為4位的暫存型無線遙控接收芯片,解碼芯片PT2272接收到信號后,其地址碼經(jīng)過兩次比較核對后,VT腳才輸出高電平,與此同時相應(yīng)的數(shù)據(jù)腳也輸出高電平,如果發(fā)送端一直按住按鍵,編碼芯片也會連續(xù)發(fā)射。圖表 5 PT2272結(jié)構(gòu)圖PT22723.4 ARM2103模塊ARM2103是接觸最多的了,它是一個基于支持實時仿真的16/32位ARM7 TDMI-S CPU的微控制器,并帶有32kB的嵌入高速Flash存儲器,128位寬度

11、的存儲器接口和獨特的加速結(jié)構(gòu)使32位代碼能夠在最大時鐘速率下運行由于內(nèi)置了寬范圍的串行通信接口(2個UART、SPI、SSP和2個I2C)和8KB的片內(nèi)SRAM,LPC2103也適合用在通信網(wǎng)關(guān)和協(xié)議轉(zhuǎn)換器中。32/16位定時器、增強型10位ADC、定時器輸出匹配PWM特性、多達(dá)13個邊沿、電平觸發(fā)的外部中斷、32條高速GPIO,與此,它具有滿足很多的項目的需求。在這里,我用到ARM2103接收SJA1000發(fā)過來的報文,處理車窗鎖和車門(模擬是用LED1亮為車窗關(guān),LED2亮為車門關(guān),KEY1按下代表車門有人操作)。數(shù)據(jù)D0:7與SJA1000數(shù)據(jù)口相連,如圖1總設(shè)計的一樣顯示的一樣,以下是

12、ARM板燈鍵圖:圖表 6ARM板燈鍵圖第四章 系統(tǒng)軟件設(shè)計4.1 主程序設(shè)計圖其中檢測信號Flag1為1時表示所有開關(guān)閉合,反之Flag=0,則斷開;Flag2時表示SJA1000的中斷標(biāo)志變量,F(xiàn)lag2=1表示SJA1000有中斷.圖表 7主程序設(shè)計圖4.2 SJA1000程序模塊1.SJA1000初始化流程:SJA程序初始化程序: void SJA1000_Init(unsigned char btr0,unsigned char btr1,unsigned char *filter)SetBitMask (REG_CAN_MOD, RM_RR_BIT);/ 進(jìn)入復(fù)位模式WriteSJA

13、Reg(REG_CAN_MOD, 0x05);/ 配置模式寄存器, / 選擇雙濾波、自發(fā)自收模式 WriteSJAReg(REG_CAN_CDR, 0xC8);/ 配置時鐘分頻寄存器,選擇PeliCAN模式WriteSJARegBlock(REG_CAN_ACR0, filter, 8); / 配置驗收代碼/屏蔽寄存器WriteSJAReg(REG_CAN_BTR0, btr0);/ 配置總線定時器0WriteSJAReg(REG_CAN_BTR1, btr1);/ 配置總線定時器1WriteSJAReg(REG_CAN_OCR, 0x1A);/ 配置輸出管腳為TX0與RX0,推挽輸出Clea

14、rBitMask(REG_CAN_MOD, RM_RR_BIT); / 退出復(fù)位模式,進(jìn)入工作模式SJA1000發(fā)送程序char SJASengData(unsigned char*databuf,unsigned char cmd)char status=1;unsigned char len;unsigned char dlc;if(ReadSJAReg(REG_CAN_SR)&(TBS_BIT|TCS_BIT)!=(TBS_BIT|TCS_BIT)status=0;elsedlc=(*databuf&0x0f);if(dlc8)dlc=8;switch(*databuf&0xC0)cas

15、e 0x00: len=STD_FRAMEID_LENTH+dlc; break;case 0x40: len=STD_FRAMID_LENTH;case 0x80: len=EXT_FRAMEID_LENTH+dlc; break;case 0xC0: len=EXT_FRAMEID_LENTH;defalut: len=0; status=0; break;if(len0)WriteSJARegBlock(REG_CAN_TXFMINFO,databuf,len);SetSJASendCmd(cmd);status=1;return(status);SJA1000接收程序char SJAR

16、cvData(unsigned char *databuf)char status=1;unsigned char len;unsigned char dlc;if(ReadSJAeg(REG_CAN_SR)&RBS_BIT)=0) status=0;else*databuf=ReadSJAReg(REG_CAN_RXFMINFO);dlc=(*databuf&0x0f);if(dlc8)dlc=8;switch(*databuf&0xC0)case 0x00: len=STD_FRAMEID_LENTH+dlc; break;case 0x40: len=STD_FRAMID_LENTH;c

17、ase 0x80: len=EXT_FRAMEID_LENTH+dlc; break;case 0xC0: len=EXT_FRAMEID_LENTH;defalut: len=0; status=0; break;if(len0)ReadSJARegBlock(REG_CAN_BXBUF1,databuf+1,len);status=SetBitMask(REG_CAN_CMR,RRB_BIT);return(status);SJA1000濾波器設(shè)置函數(shù)void SJA1000ConfigFilter(char mode,*Filter)SetBitMask(REG_CAN_MOD,RM_R

18、R_BIT);if(mode0)SetBitMask(REG_CAN_MOD,AFM_BIT);elseClearBitMask(REG_CAN_MOD,AFM_BIT);WriteSJARegBlock(REG_CAN_ACR0,Filter,8);ClearBitMask(REG_CAN_MOD,RM_RR_BIT);4.3 ARM控制程序模塊首先是中斷模塊,這里我用到的是ARM2103定時器0中斷及計時count表示1S中斷后+!,以下是中斷函數(shù),還有一些控制程序像KEY1,LED1和LED2的控制就是按圖表7主程序設(shè)計圖那樣編譯在調(diào)控。void Timer0_IntExt(void) T0TC = 0; T0PR = 0; T0MCR = 0x03; T0MR0 = Fpclk/400; T0TCR = 0x01;void _irq IRQ_Timer0(void) T0Flag = 1; count+; /這里是當(dāng)車門開后用來計20S時間的 T0IR = 0x01; VICVectAddr = 0;void IRQ_Init(void) VICIntSelect = 0x00; VICVectCntl0 = 0x2

溫馨提示

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

評論

0/150

提交評論