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