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

如果要向CAN總線(xiàn)發(fā)送數據,則必須將符合PeilCAN幀格式的一組數據寫(xiě)入SJA1000的發(fā)送緩沖區,然后調用發(fā)送子函數。這里筆者采用查詢(xún)方式來(lái)實(shí)現發(fā)送。流程如圖4所示。

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