CAN控制器在深海測控中的應用
遵循上述思路,筆者采用C51編寫了應用軟件,下面是部分程序清單。
初始化部分:
voidCAN_Init(void)
{CANMODE=0x09;//進入復位模式,單向驗收濾波,對SJA1000初始化
CANCDR=0x88;//選擇PeilCAN模式
CANIER=0x1A;//開放接收中斷、超載中
由于深海測控系統對通信的實時性要求很高,一旦接收到甲板上傳來的控制命令就必須及時響應,為此從CAN總線上接收信息采用中斷方式。即SJA1000無錯地接收到消息后使INT變為低電平,下降沿觸發C8051F020的外部中斷0,使其進入中斷服務程序。其流程如圖3所所示。

如果要向CAN總線發送數據,則必須將符合PeilCAN幀格式的一組數據寫入SJA1000的發送緩沖區,然后調用發送子函數。這里筆者采用查詢方式來實現發送。流程如圖4所示。

4結束語
基于SJA1000型CAN控制器的深海測控系統基本上滿足了功耗低、體積小、重量輕、易擴展的要求,同時與甲板上位機之間的通信可靠,完全能滿足深海探測的需要,并能廣泛應用于海洋油、氣田作業,海洋污染監控和防治,海上漁業生產等,前景廣闊。
評論