當前位置:首頁 > 通信技術(shù) > 通信技術(shù)
[導讀]筆者設(shè)計了一種基于CAN總線的非智能適配卡。該適配卡已應用于筆者研制的"基于CAN總線的運動控制系統(tǒng)"中,運行情況良好。

 

引言

    控制器局域網(wǎng)CAN (Controller Area Network)是目前被批準為國際標準的少數(shù)現(xiàn)場總線之一。CAN網(wǎng)絡(luò)可采用多主方式工作。它采用非破壞性的總線仲裁技術(shù),其信號傳輸和控制采用短幀結(jié)構(gòu),因而具有較強的抗干擾能力和低耦合性;CAH網(wǎng)絡(luò)的通訊速率范圍為5 kbs/10 km~lMbs//40m,驅(qū)動節(jié)點數(shù)可達110個。它的傳輸介質(zhì)可以是雙絞線、同軸電纜或光纖,選擇十分靈活;每幀信息都有CRC校驗及其它檢錯措施,因而數(shù)據(jù)出錯率極低,可靠性很高;當其傳輸?shù)男畔⒊鲥e嚴重時,節(jié)點可自動斷開與總線的聯(lián)系,以使總線上其它的操作不受影響。

    雖然目前PCI、USB等總線技術(shù)得到了快速發(fā)展,但在大量應用的測試微機及工控機中,用的最多的還是ISA (Industry Standard Architecture.工業(yè)標準體系結(jié)構(gòu))總線。ISA總線具有16位數(shù)據(jù)寬度,最高工作頻率為8MHz,數(shù)據(jù)傳輸速率達到16MB/s,地址總線有24條,可尋址16MB的地址單元,其總線信號分為5類,分別為地址線、數(shù)據(jù)線、控制線、時鐘線和電源線。

    為了解決CAN控制器SJA1000與ISA總線各信號線的時序配合與邏輯配合問題,筆者設(shè)計了一種基于CAN總線的非智能適配卡。該適配卡已應用于筆者研制的"基于CAN總線的運動控制系統(tǒng)"中,運行情況良好。

非智能型ISA總線CAN適配卡的總體結(jié)構(gòu)

    CAN控制器SJA1000的地址數(shù)據(jù)總線是分時復用的,通過ALE信號的下降沿可鎖存總線上的地址信號;ISA總線上的地址和數(shù)據(jù)總線是單獨提供的,它不能直接和SJA1000的地址數(shù)據(jù)總線相連。本設(shè)計利用地址譯碼電路來對地址信號線進行譯碼,從而為CAN適配卡分配出一定的端口地址。然后再利用74HC373芯片的數(shù)據(jù)鎖存功能鎖存第一次I/O操作中通過ISA數(shù)據(jù)總線傳送的數(shù)據(jù)信號,以便作為訪問CAN控制器SJA1000中寄存器的地址信號,最后在第二次I/O操作中完成對SJA1000中相應地址寄存器的讀寫操作。其適配卡的總體結(jié)構(gòu)如圖1所示。

    圖1中,地址鎖存器74HC373可看作SJA1000的地址端口,而SJA1000本身可看作SJA1000的數(shù)據(jù)端口,另外還有對SJA1000進行硬件復位的復位端口。圖中的基地址譯碼電路以AEN作為使能信號,對A2~A9地址信號進行譯碼就可得到適配卡的基地址;組合AO和A1地址信號可得到各端口的偏移地址。SJA1000與ISA的通訊采用兩次I/O操作的方法,第一次先往地址端口送地址,第二次再對數(shù)據(jù)端口進行訪問。這里所說的地址及數(shù)據(jù)端口都是對SJAl000而言的,通過ISA總線的數(shù)據(jù)線可獲得被訪問的SJA1000寄存器的地址及所傳送的數(shù)據(jù)??刂贫丝谧g碼電路可將CPU送來的控制信號和地址信號按一定的邏輯關(guān)系進行組合,從而生成一組新的功能信號作為接口控制信號。通過SJA1000復位電路可對SAJ1000進行復位,具體操作可采用上電復位、程序復位及按鍵復位三種硬件復位方式。

適配卡硬件的設(shè)計

基地址譯碼電路設(shè)計

    圖2所示是一種具體的基地址譯碼電路。一般情況下,根據(jù)系統(tǒng)需要,地址譯碼電路可對ISA地址線的端口地址譯碼,并可用AO~A9來表示?;刂纷g碼電路對A9~A2進行譯碼,則可作為卡上端口的基地址。

    圖2中,74HC688是一個8位量值比較器,當時Pi=Qi(i=0…7),P=Q的反端輸出低電平。當ISA總線的AEN為高電平時,總線工作在DMA方式;而當AEN為低電平時,CPU擁有對總線的控制權(quán)。非智能型適配卡的工作過程實際上就是CPU對I/O的操作過程,期間,AEN始終為低電平,可用于控制74HC688的選通端G反。只有在I/O操作時,才允許它選擇地址。由于使用的是撥碼開關(guān),用戶可預先設(shè)定適配卡的基地址??ㄉ细鞫丝诘钠朴葾1和A0選擇,并可通過軟件控制,本設(shè)計中的定義地址端口偏移為00,數(shù)據(jù)端口偏移為01,復位端口偏移為11。

控制信號產(chǎn)生電路

    該適配卡的控制信號產(chǎn)生電路如圖3所示。該電路的主要作用是把CPU送來的控制線和地址線按照一定的邏輯關(guān)系進行組合,以生成一組新的功能信號輸出。該信號可作為接口控制信號去控制SJA1000、74HC373、74HC245等芯片的工作狀態(tài)。由于基地址譯碼電路的輸出信號為P=Q的反(低電平有效),SJA1000地址端口偏移地址為00H,數(shù)據(jù)端口偏移地址為01H,因此,根據(jù)控制邏輯,適配卡中各芯片的控制信號邏輯表達式為:
 

    適配卡在工作過程中,各芯片的邏輯時序關(guān)系是:當74HC373輸出數(shù)據(jù)有效時,74HC245輸出為高阻態(tài);當74HC373輸出呈高阻態(tài),且SJA1000的數(shù)據(jù)直接傳回ISA總線時,74HC245輸入輸出工作正常。具體來講,假設(shè)CAN的基地址為300H,且訪問SJA1000是分兩次I/O操作完成的,那么,第一次往端口300H送出的數(shù)據(jù)可在寫信號的后沿被鎖存在74HC373中,這個操作中,74HC245的E與74HC373的LE端有效,而74HC373的OE端為高電平,74HC373輸出端為高阻態(tài);當?shù)诙卧L問數(shù)據(jù)端口301H時,SJA1000被選中,此時CPU可對SJA1000的相應單元進行讀/寫操作。具體的操作過程分為讀、寫兩種情況。當?shù)诙蜪/O操作到來時,SJA1000會在BALE信號下降沿將第一次I/O操作時鎖存在74HC373中的數(shù)據(jù)作為地址鎖存,該過程中,74HC245的E反為高電平,輸出呈高阻態(tài),74HC373的OE的反為低電平,輸出端有效,可向SJA1000傳送地址信號。當?shù)刂繁籗JA1000鎖存以后,此時如果進行的是讀操作,那么,在讀信號有效期間(低電平),74HC373的輸出允許OE反端為高電平,74HC373輸出端呈高阻態(tài),這時SJA1000可將選中單元的寄存器內(nèi)容輸出到數(shù)據(jù)總線,并通過74HC245驅(qū)動送入CPU中。而在地址鎖存后,如果進行的是寫操作,那么,74HC373的輸出允許端始終有效,此時可在寫信號有效期間,將數(shù)據(jù)寫入SJA1000的相應單元中。

    計算機通過ISA總線對CAN控制器SJA1000進行讀寫的時序分別如圖4和圖5所示。

復位電路

    SJA1000正常工作前,只有通過復位引腳對其進行可靠的硬件復位,才能對SJA1000中的寄存器進行正確的讀寫操作。使SJA1000可靠復位的電平持續(xù)最小時間為0.1μs,PC系統(tǒng)復位電平持續(xù)時間可達幾微秒。系統(tǒng)復位信號RESET在系統(tǒng)電源接通時為高電平,經(jīng)反向器后可直接用于對SJA1000進行復位。圖6所示是適配卡的復位電路,對SJA1000的復位具有開機上電復位、程序復位以及按鍵復位等三種方式。

    在圖6中,A1和A0經(jīng)過與非門74LSl0后,為復位電路產(chǎn)生的偏移地址為11,該地址信號與IOW反、P=Q反等信號經(jīng)過邏輯組合,同時配合程序設(shè)計可產(chǎn)生對SJA1000的復位信號。程序設(shè)計時只需對復位端口寫入一個數(shù)據(jù)即可實現(xiàn)程序復位。而按鍵復位則可在系統(tǒng)運行出現(xiàn)通信故障時,直接用于對CAN控制器SJA1000進行硬件復位。

適配卡的軟件設(shè)計

    軟件設(shè)計的關(guān)鍵部分是CAN通信程序的設(shè)計。通信程序(流程如圖7、8、9所示)可分為三部分:CAN初始化程序、接收程序、發(fā)送程序。初始化是通信的前提,主要完成對CAN控制器的一些寄存器的設(shè)置。由于SJA1000支持中斷操作,因此可以用中斷服務程序來完成數(shù)據(jù)的接收和發(fā)送,以提高系統(tǒng)的工作效率。


 

    實際上,只有在復位模式下才可以對SJA1000進行初始化,初始化主要包括工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器和接收代碼寄存器的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器的設(shè)置等。完成初始化后,即可將SJA1000設(shè)置為工作狀態(tài),以進行正常的通信。發(fā)送子程序負責節(jié)點報文的發(fā)送。發(fā)送時,讀取狀態(tài)寄存器并對各位進行適當判斷,并將待發(fā)送的數(shù)據(jù)按特定格式組合成一幀報文,送入SJA1000發(fā)送緩存區(qū)中,然后啟動SJA1000發(fā)送;接收子程序則負責節(jié)點報文的接收以及其它情況的處理。在處理接收報文的過程中,還要對總線關(guān)閉、錯誤報警、接收溢出等情況進行處理。

    CAN適配卡與計算機可采用中斷方式通信。但在WIN API中不能直接控制中斷,只有在操作系統(tǒng)底層為CAN適配卡編寫虛擬設(shè)備驅(qū)動程序(VxD)才可以利用中斷。這需要在虛擬設(shè)備驅(qū)動程序中將中斷虛擬化,并在中斷事件響應函數(shù)中編寫所需代碼,同時為應用程序提供訪問接口。應當注意的是:計算機通過ISA總線對CAN適配卡上的SJA1000進行訪問采用的是兩次I/O操作,第一次往地址端口送地址,第二次對數(shù)據(jù)端口進行訪問。其具體的實現(xiàn)代碼如下:

//向指定的SJA1000寄存器(地址為addr)寫一個字節(jié)數(shù)據(jù)(data),CAN_BASE為基地址

void CanIRQ::writeByte(int CAN_BASE,unsigned char addr,unsigned char data)

{

_outp(CAN_BASE,addr);

_outp(CAN_BASE+1,data);

}
//從指定的SJA1000寄存器(地址為addr)讀一個字節(jié)數(shù)據(jù)(data)

unsigned char CanIRQ::ReadByte(int CAN_BASE,unsigned char addr)

{

unsigned char result;

_outp(CAN_BASE,addr);

result=_inp(CAN_BASE+1);

return result;

}
在訪問SJA1000的程序中,可以直接調(diào)用以上兩子函數(shù)。這樣,其發(fā)送程序段代碼為:

Bool CanIRQ::CanTrans(int CAN_BASE,unsigned char*pTransBuf)

{

status=ReadByte(CAN_BASE,SR); //SR為狀態(tài)寄存器地址

for(i=0;i
{

WriteByte (CAN_BASE,*pTFansBuf,ptbuf;//pTransBuf為發(fā)送緩沖區(qū)地址

ptbuf++;pTransBuf++;

}

}

結(jié)束語

    通過解決計算機ISA總線與CAN控制器SJA1000的邏輯配合與時序配合可完成基于CAN總線的非智能適配卡設(shè)計。該適配卡現(xiàn)已成功地應用于筆者所研制的基于CAN總線的測控系統(tǒng)中。實際上,若在適配卡上增加CAN通信控制器,也可使一卡帶多條CAN總線,以增加網(wǎng)絡(luò)節(jié)點,擴大網(wǎng)絡(luò)規(guī)模。另外,還可以在適配卡的應用程序中,根據(jù)應用系統(tǒng)需要編寫各種監(jiān)控程序來擴展系統(tǒng)功能。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉