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