CAN控制器在深海測控中的應(yīng)用
遵循上述思路,筆者采用C51編寫了應(yīng)用軟件,下面是部分程序清單。
初始化部分:
voidCAN_Init(void)
?。鸆ANMODE=0x09;//進入復(fù)位模式,單向驗收濾波,對SJA1000初始化
CANCDR=0x88;//選擇PeilCAN模式
CANIER=0x1A;//開放接收中斷、超載中
由于深海測控系統(tǒng)對通信的實時性要求很高,一旦接收到甲板上傳來的控制命令就必須及時響應(yīng),為此從CAN總線上接收信息采用中斷方式。即SJA1000無錯地接收到消息后使INT變?yōu)榈碗娖?,下降沿觸發(fā)C8051F020的外部中斷0,使其進入中斷服務(wù)程序。其流程如圖3所所示。
如果要向CAN總線發(fā)送數(shù)據(jù),則必須將符合PeilCAN幀格式的一組數(shù)據(jù)寫入SJA1000的發(fā)送緩沖區(qū),然后調(diào)用發(fā)送子函數(shù)。這里筆者采用查詢方式來實現(xiàn)發(fā)送。流程如圖4所示。
4結(jié)束語
基于SJA1000型CAN控制器的深海測控系統(tǒng)基本上滿足了功耗低、體積小、重量輕、易擴展的要求,同時與甲板上位機之間的通信可靠,完全能滿足深海探測的需要,并能廣泛應(yīng)用于海洋油、氣田作業(yè),海洋污染監(jiān)控和防治,海上漁業(yè)生產(chǎn)等,前景廣闊。
評論