以Philips SJA1000 CAN控制器為例:
*支持CAN2.0,包括標(biāo)準(zhǔn)的和擴(kuò)展的數(shù)據(jù)和遠(yuǎn)程幀
*位速率可程控,并有可程控的時(shí)鐘輸出;
*擴(kuò)展的64字節(jié)FIFO接收緩沖器;
*4個(gè)字節(jié)的驗(yàn)收濾波器;
*時(shí)鐘頻率提高到了24MHz;
*輸出驅(qū)動(dòng)器狀態(tài)可編程;
*可擦寫(xiě)的總線錯(cuò)誤計(jì)數(shù)器;
*當(dāng)前錯(cuò)誤代碼寄存器;
*仲裁丟失捕獲寄存器;
*28腳DIP/SO封裝,引腳及電器特性與82C200兼容。
還是以SJA1000為例,功能框圖如下:
其中CAN核心模塊根據(jù)CAN總線協(xié)議控制數(shù)據(jù)幀的發(fā)送和接收;接口管理邏輯模塊提供SJA1000與主微處理器或其它設(shè)備的連接,主微處理器可以通過(guò)數(shù)據(jù)/地址復(fù)用總線和讀寫(xiě)控制邏輯訪問(wèn)SJA1000的所有寄存器;發(fā)送緩沖區(qū)可以存儲(chǔ)一個(gè)完整的標(biāo)準(zhǔn)或擴(kuò)展的報(bào)文,當(dāng)主微處理器要求SJA1000發(fā)送報(bào)文時(shí),接口管理邏輯操縱CAN核心模塊將發(fā)送緩沖區(qū)中的報(bào)文發(fā)送到CAN總線上;當(dāng)接收一個(gè)報(bào)文時(shí),CAN核心模塊首先將總線上的串行位流數(shù)據(jù)轉(zhuǎn)換位并行數(shù)據(jù),然后交給接收過(guò)慮模塊進(jìn)行識(shí)別,決定該報(bào)文是否為主微處理器所要求的報(bào)文類別,所有接收的報(bào)文可以存放在接收先進(jìn)先出隊(duì)列,根據(jù)不同的工作模式和數(shù)據(jù)長(zhǎng)度,該隊(duì)列可以存放最多32個(gè)報(bào)文,然后用戶可以靈活地對(duì)報(bào)文分為不同地優(yōu)先級(jí)和中斷處理服務(wù)。
SJA1000可直接連接兩類主要的處理器家族:Intel公司的80C51系列和Motorola公司的68xx系列,其芯片外圍專門(mén)有一個(gè)模式管腳用了選擇CPU的類型。SJA1000提供了8位地址/數(shù)據(jù)復(fù)用總線和讀/寫(xiě)控制信號(hào)與CPU交換數(shù)據(jù),我們可以將SJA1000看作映射到主微處理器的外圍存取器I/O設(shè)備。SJA1000與80C51系列微處理器地典型應(yīng)用如圖2所示:
SJA1000通過(guò)2個(gè)8位寄存器來(lái)支持對(duì)報(bào)文的過(guò)濾功能,將應(yīng)用不關(guān)心的報(bào)文拒之門(mén)外將提供處理期的性能,因?yàn)榇蠖鄶?shù)應(yīng)用都是通過(guò)中斷的方式交換數(shù)據(jù),所以正確的使用過(guò)濾功能可以為中斷處理函數(shù)贏得時(shí)間。SJA1000提供一個(gè)接收編碼寄存器(Acceptance Code Register)和一個(gè)接收屏蔽寄存器(Acceptance Mask Register)。接收過(guò)濾模塊將CAN報(bào)文的11位標(biāo)識(shí)符的高8位于這2個(gè)寄存器里存放的值相比較,并作出是否接收的判斷。