CAN總線學習筆記五:SJA1000硬件電路設(shè)計
首先對CAN總線控制器SJA1000的管腳我們必須熟悉。下面是其各個管腳的功能參數(shù)。
各個管腳的符號功能什么的上面的表里介紹的很詳細,我就不多廢話了。
接著我們看SJA1000的這些管腳在實際電路中是怎么進行連接的,因為只談SJA1000的硬件電路設(shè)計,所以就截一張PIAE提供的電路原理圖里關(guān)于SJA1000的部分。
下面我們要具體解析這個電路圖。
AD0-AD7是地址/數(shù)據(jù)復(fù)用總線。因為這個電路是把SJA1000做外部RAM擴展了,所以它的電路連接也勢必要符合外部RAM的連接要求。(特權(quán)同學也是第一次接觸單片機的外部存儲器擴展應(yīng)用,所以開始的時候也很是納悶,然后拿起課本一陣惡補后才恍然大悟。)先補一下外部擴展RAM的知識,然后再談這個電路就容易多了:51單片機外部RAM的擴展最多是可以尋址64KB的,也就是最多可以有16條地址線來尋址,P0口是低八位地址擴展口,P2口是高八位地址擴展口。如果外部RAM不需要用到全部16條地址線(SJA1000就只有8條地址線),那么只要把低位地址線和外部RAM的相應(yīng)地址線連接,高位的地址線在尋址時都默認為1,比如這里的SJA1000,它的8條地址線是和P0口相連接的,所以對SJA1000的寄存器尋址時的地址應(yīng)該是FF00H-FFFFH,但是為什么PIAE提供的程序里的地址定義卻是FE00H-FEFFH呢?這就要討論CS信號的連接問題了,我們知道,CS是片選輸入信號,只有當它是低電平時才能訪問SJA1000。再看看它和誰連了?是P2.0口,正好是地址線高八位的最低位,如果按常理來說,尋址FF00H,那么P2.0就是高電平,SJA1000就不能被訪問。所以尋址FE00H時才選通SJA1000,這時才是SJA1000寄存器的地址。
上面討論了尋址的問題,只是就事論事,如果還不理解,我建議找本書詳細了解下單片機的外部存儲器的擴展后就會明白的。另外,我們知道單片機的P3.0和P3.1有第二功能,就是做RD和WR用,所以它們就和外部寄存器(這里指SJA1000)的RD和WR相連接了。單片機的ALE腳和存儲器的ALE腳也必須相連接。以上的這些連接使得SJA100成為了單片機的外部存儲器。
再看INT腳是和單片機的INT1相連,也就是作為接收中斷信號來告訴單片機接收到了新的數(shù)據(jù)幀。RST腳是復(fù)位腳,接P2.3成為可編程的。
TX0\RX0連接82C250的對應(yīng)腳,數(shù)據(jù)幀是通過這兩個腳傳送出去的(具體的工作原理可以參考82C250的資料,這里就不討論了)。MODE腳接正,說明工作在INTER模式下。XTAL1和XTAL2兩個腳接16MHz的晶體,SJA1000的工作是有一定的時序的,它可以完成數(shù)據(jù)的發(fā)送以及數(shù)據(jù)的校驗等功能,這完全是IC設(shè)計者考慮的東西,我們只要了解它的工作原理,通過單片機配置SJA1000的工作方式,并且向SJA1000寫數(shù)據(jù)或者讀數(shù)據(jù)就可以達到CAN總線通信的目的了。