FPGA實(shí)現CAN總線(xiàn)通信節點(diǎn)設計

圖2 接口電路
2 系統軟件設計
2.1 設計流程
FPGA對CAN 總線(xiàn)通訊模塊的控制主要包括3 部分: CAN總線(xiàn)節點(diǎn)初始化、報文發(fā)送和報文接收。由于通訊模塊對接收數據的實(shí)時(shí)性要求并不是很高, 因此CAN 總線(xiàn)的數據接收和發(fā)送采用查詢(xún)方式。
2.1.1 初始化過(guò)程
系統上電后首先對82C250 和S JA1000 進(jìn)行初始化, 以確定工作主頻、波特率、輸出特性等。SJA1000的初始化只有在復位模式下才可以進(jìn)行, 初始化主要包括工作方式的設置、驗收濾波方式的設置、驗收屏蔽寄存器( AMR )和驗收代碼寄存器( ACR)的設置、波特率參數設置和中斷允許寄存器( IER) 的設置等。在完成SJA1000 的初始化設置以后, SJA1000 就可以回到工作狀態(tài), 進(jìn)行正常的通信任務(wù)。設計中使SJA1000工作在PeliCan的方式下。
2.1.2 發(fā)送過(guò)程
發(fā)送時(shí), 用戶(hù)只需將待發(fā)送的數據按特定的格式組合成一幀報文, 送入SJA1000發(fā)送緩沖區中, 然后啟動(dòng)SJA1000發(fā)送即可。當然, 在往SJA1000 發(fā)送緩存區送報文之前, 必須先判斷發(fā)送緩沖區是否鎖定, 如果鎖定則等待; 判斷上次發(fā)送是否完成, 未完成則等待發(fā)送完成。FPGA 通過(guò)SJA1000 向CAN 總線(xiàn)進(jìn)行數據發(fā)送的流程圖如圖3所示。

圖3 發(fā)送數據流程圖
2.1.3 接收過(guò)程
接收子程序負責節點(diǎn)報文的接收以及其他情況處理。接收子程序比發(fā)送子程序要復雜一些, 因為在處理接收報文的過(guò)程中, 同時(shí)要對諸如總線(xiàn)關(guān)閉、錯誤報警、接收溢出等情況進(jìn)行處理。只有在總線(xiàn)正常, 沒(méi)有錯誤報警, 并且接收緩沖區中有新報文, 才開(kāi)始進(jìn)行數據接收操作。對接收緩沖區的數據讀取完畢后釋放CAN接收緩沖區。FPGA 通過(guò)SJA1000接收CAN總線(xiàn)上的數據流程圖如圖4所示。
fpga相關(guān)文章:fpga是什么
通信相關(guān)文章:通信原理
晶振相關(guān)文章:晶振原理 雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理
評論