一種新型CAN總線冗余電路設(shè)計(jì)與研究
本文采用帶在片CAN控制器的單片機(jī)P80C3592,節(jié)點(diǎn)電路連接圖如圖6所示。CAN控制器的發(fā)送輸出端CTX0接CD4053的第二路模擬開關(guān)輸出端Y;CAN控制器的接收輸入端CRX0接CD4053的第一路模擬開關(guān)輸出端X。CD4053的第一路模擬開關(guān)的輸入端X0、X1分別接兩個總線驅(qū)動器的接收輸出端RXD;CD4053的第三路模擬開關(guān)的輸出端Z與其輸入端Z0連接后,然后將第二路與第三路模擬開關(guān)的輸入端Y0、Y1和Z0、z1對應(yīng)連接,再對應(yīng)連接兩個總線驅(qū)動器的發(fā)送輸入端TXD。CD4053三獨(dú)立選通由單片機(jī)的P1口低三位控制。這樣就使得雙總線可供選擇的工作方式增加。對于單一節(jié)點(diǎn)來說,雙總線所有可能的運(yùn)行方式如表1所示。本文引用地址:http://www.ex-cimer.com/article/181007.htm
對于所有節(jié)點(diǎn)來說,雙CAN總線有同時(shí)運(yùn)行和熱備份兩種運(yùn)行方式。由于采用雙驅(qū)動器冗余,只有一個總線控制器,所以每個節(jié)點(diǎn)不能同時(shí)從兩路總線接收數(shù)據(jù),故本文的驅(qū)動器冗余方式不能實(shí)現(xiàn)嚴(yán)格意義上的同時(shí)運(yùn)行方式。另外,同時(shí)運(yùn)行方式功耗大,總線通信利用率低。
若采用圖3所示的電路,只能實(shí)現(xiàn)表1中的方式5和6,若采用圖4所示的電路,只能實(shí)現(xiàn)表1中的方式1和4。方式2和3具有非常特殊的作用:a.雙總線同時(shí)運(yùn)行時(shí),可以為兩個不同的節(jié)點(diǎn)傳遞報(bào)文,提高總線通信利用率;b.可能實(shí)現(xiàn)單節(jié)點(diǎn)調(diào)試。因?yàn)閱喂?jié)點(diǎn)采用其他方式調(diào)試時(shí),報(bào)文發(fā)送后由于得不到應(yīng)答而會檢測到錯誤并不斷重發(fā)報(bào)文,節(jié)點(diǎn)轉(zhuǎn)為被動出錯節(jié)點(diǎn)。
3 軟件編程
CAN總線節(jié)點(diǎn)的通信程序主要包括初始化、報(bào)文發(fā)送和報(bào)文接收三部分。
(1)CAN節(jié)點(diǎn)初始化主要是配置控制組寄存器。在初始化前,必須確保CAN控制器進(jìn)入復(fù)位模式。初始化主要有:配置總線定時(shí)器BTR0和BTR1,設(shè)定總線通信波特率;配置輸出控制寄存器OCR,設(shè)定控制器輸出管腳CTXO和CTX1的輸出模式;配置驗(yàn)收碼寄存器ACR和驗(yàn)收屏蔽碼寄存器AMR,設(shè)定驗(yàn)收碼和驗(yàn)收屏蔽碼。
(2)報(bào)文發(fā)送程序?qū)?bào)文(目標(biāo)節(jié)點(diǎn)ID、數(shù)據(jù)長度和數(shù)據(jù))送入發(fā)送緩沖器,然后啟動發(fā)送指令即可,CAN控制器能自動報(bào)文發(fā)送過程。報(bào)文發(fā)送可通過中斷和查詢兩種方式實(shí)現(xiàn),但是中斷方式效率高,采用較多。
(3)報(bào)文接收程序是從CAN控制器的接收緩沖器讀取節(jié)點(diǎn)需要的數(shù)據(jù)并保存。數(shù)據(jù)接收也可通過中斷和查詢兩種方式實(shí)現(xiàn),普遍采用效率高的中斷方式。
4 結(jié) 論
本文所設(shè)計(jì)的驅(qū)動器冗余電路簡單,能較好地提高硬件可靠性,相對降低了成本,同時(shí),為雙總線運(yùn)行提供了更多的方式,使得編程更加靈活,可以提高總線通信利用率。除此之外,在報(bào)文發(fā)送出現(xiàn)沖突時(shí),還可以通過軟件轉(zhuǎn)移負(fù)荷,平衡雙總線的通信負(fù)荷。
評論