基于CAN通訊模塊的閘間隙報警系統(tǒng)設(shè)計
CAN隔離收發(fā)器采用廣州致遠電子有限公司的通用CAN隔離收發(fā)器CTM8251。該芯片內(nèi)部集成了所有必需的CAN隔離及CAN收發(fā)器件,其主要功能是將CAN控制器的邏輯電平轉(zhuǎn)換為CAN總線的差分電平并且具有DC2500V的隔離功能,增加了CAN總線的抗干擾能力。此外,該芯片擁有速率可達1Mb/s、較高的抗干擾性、至少可連接110個節(jié)點等特性。CAN收發(fā)器連接圖如圖3所示。
2 模塊軟件設(shè)計
該模塊的功能是將處理器前端采集的閘間隙報警數(shù)據(jù)處理后,先后通過SJAi000、CTM8251送到上位機實現(xiàn)通信。
CAN總線通信的實現(xiàn)首先要通過ATmega128的RESET使外圍電路上電復位,在外部中斷的情況下等待SJAl000完全上電,然后通過處理器控制線路配置進而使SJAl000初始化,最后進入CAN的數(shù)據(jù)發(fā)送和接收主程序。因此,該設(shè)計的關(guān)鍵是編寫CAN驅(qū)動程序,主程序通過調(diào)用CAN驅(qū)動程序?qū)崿F(xiàn)接口數(shù)據(jù)的收發(fā)。驅(qū)動程序主要包括CAN控制器的初始化、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)。
2.1 CAN控制器SJAi000的初始化
SJAl000的初始化操作包括CAN軟件復位、設(shè)置中斷工作方式、設(shè)置CAN驗收過濾器工作方式、設(shè)置控制器的工作模式和啟動CAN等。首先,通過對CAN控制器SJAl000的讀、寫、片選、地址鎖存端口設(shè)置來完成初始化。以下是CAN控制器SJAl000的初始化代碼:
2.2 數(shù)據(jù)的接收與發(fā)送
ATmegal28的每個I/0端口有3個I/0寄存器即可實現(xiàn)對CAN總線的控制。當發(fā)送/接收時要根據(jù)實際情況,先必須保證CAN鎖存、CAN讀/寫選通、cAN片選開啟后讀取對應的存儲地址,最后對數(shù)據(jù)進行讀取/存儲。為了提高效率,接收數(shù)據(jù)采用中斷的方式,當中斷標志置位時,將數(shù)據(jù)存入指定的SJAl000存儲地址。以下是數(shù)據(jù)發(fā)送和接收的函數(shù):
(1)接收/發(fā)送緩沖區(qū)數(shù)據(jù)設(shè)置:該部分主要是通過對RX/TX針信息、RX/TX標識碼進行接收/發(fā)送緩沖區(qū)數(shù)據(jù)首地址(工作模式)定義。
(2)CAN控制器SJAl000發(fā)送數(shù)據(jù),實現(xiàn)函數(shù)如下:uchar Read_SJAl000(uchar addr)函數(shù)功能實現(xiàn)步驟為:①使能端口寫數(shù)據(jù),通過設(shè)置CAN_ALE、CN_CS、CAN_ID完成對發(fā)送數(shù)據(jù)地址的讀??;②使能端口讀數(shù)據(jù)且上拉,通過CN_CS、CAN_RD)完成從讀取的地址讀取一個8位數(shù)據(jù);③返回數(shù)據(jù)地址。
(3)CAN控制器SJAl000接收數(shù)據(jù),實現(xiàn)函數(shù)如下:void Write_SJAl000(uchar addr,uchar DATA)函數(shù)功能實現(xiàn)步驟為:①使能端口寫數(shù)據(jù),通過設(shè)置CAN_ALE、CN_CS、CANJR完成對接收數(shù)據(jù)地址的讀??;②通過設(shè)置CN_CS、CAN_WR完成向讀取的地址寫一個8位數(shù)據(jù)。
3 結(jié)束語
本文介紹了基于AVR微處理器的閘間隙報警CAN通訊模塊的硬、軟件設(shè)計方法,為解決礦井提升機工作間隙報警提供了一種思路。該模塊的設(shè)計使管理監(jiān)控層與生產(chǎn)測控層之間能夠進行有效的通信,縮短了故障排除的時間,且使用方便、成本低。
評論