時間:2008-09-03 10:41:00來源:ronggang
圖 2 80C196+SJA1000智能節點硬件電路[/align]
為了增強CAN總線節點的抗干擾能力,SJA1000的TX0和RX0通過高速光耦6N137與82C250相連,這樣就很好地實現了總線上各CAN節點間的電氣隔離。電源的完全隔離可采用小功率電源隔離模塊或帶多5V隔離輸出的開關電源模塊實現,這些部分雖然增加了節點的復雜程序,但卻提高了節點的穩定性和安全性。
[align=center]
圖 3 16F877+MCP2510智能節點硬件電路[/align]
以PIC16F877單片機為核心的智能節點硬件電路如圖3所示,若需增加光耦隔離可采用圖2的方法。MCP2510是一種帶有串行外圍接口SPI的獨立CAN控制器,它支持CAN技術規范V2.0A/B;并能夠發送的接收標準的和擴展的信息幀,同時具有接收濾波和信息管理的功能。MCP2510通過SPI接口與MCU進行數據傳輸,最高數據傳輸速率可達5Mb/s,且占用I/O口少,硬件接口簡單。MCU可通過MCP2510與CAN總線上的其它MCU單元通訊。MCP2510有配置、正常、睡眠、監聽、反饋等五種工作模式,內含三個發送緩沖器、二個接收緩沖器,同時還具有靈活的中斷管理能力,這些特點使得MCU對CAN總線的操作變得非常簡便。
4 智能節點軟件初始化
CAN總線節點的軟件設計主要包括三大部分:CAN節點初始化、報文發送和報文接收。初始化程序設計對于CAN總線節點的正常工作相當重要。它主要包括工作方式的設置、時鐘輸出寄存器的設置、接收屏蔽寄存器和接收代碼寄存器的設置、總線定時器的設置、輸出控制寄存器的設置和中斷允許寄存器的設置。本文介紹的硬件、軟件設計已在相關課題中得到應用。
4.1 SJA1000初始化子程序
80C196KC微控制器通過并行數據總線對SJA1000進行初始化,下面提供了SJA1000初始化的MCS-196匯編源程序。程序中寄存器符號表示的是SJA1000相應寄存器占用的片外存儲器的地址,這些符號可在程序的頭部用偽指令EQU進行定義。后文對這一點不再作特別說明。
init_SJA1000:
LDB AL,#00000001B ;進入復位模式,進行初始化
STB AL,CR
LDB AL,#00001000B ;選擇Basic CAN,
STB AL,CDR ;關閉時鐘輸出(CLKOUT)
LDB AL,#00011011B ;開放溢出、
STB AL,CR ;錯誤,接收中斷
LDB AL,#00000000B ;接收代碼寄存器,ID為0
STB AL,RXCODE
LDB AL,#11111111B ;接收屏蔽寄存器
STB AL,RXMASK
LDB AL,#00110001B ;總線時序0
STB AL,BUS_T0
LDB AL,#11011000B ;總線時序1,16MHz下,
STB AL,BUS_T1 ;波特率為10kbps
LDB AL,#0AAH ;輸出控制寄存器
STB AL,OUTCON
LDB AL,#00001100B ;清除數據溢出,
STB AL,CMR ;釋放接收緩沖區
LDB AL,#00011010B ;返回工作模式
STB AL,CR
RET
4.2 MCP2510初始化子程序
[align=center]
圖 4 MCP2510讀、寫時序圖[/align]
PIC16F877單片機通過SPI接口與MCP2510相連。MCP2510的SPI讀寫時序如圖4所示。圖a為SPI寫時序圖,寫指令首先被發送到MCP2510的SI引腳,并在SCK的上升沿鎖存每個數據位,然后發送地址和數據,執行完畢指令后,數據被寫進指定的地址單元中。圖b為SPI讀時序圖,首先將讀指令和地址發送到MCP2510的SI引腳,并在SCK的上升沿鎖存每個數據位,然后把存儲在這個地址單元中的數據在SCK的下降沿輸出到SO引腳。當執行讀寫操作時,CS引腳應始終保持在低電平。
PIC16F877微控制器通過SPI口對MCP2510進行初始化,下面提供了MCP2510初始化的PIC匯編源程序。其中WRITE2510子程序就是根據圖4的SPI寫時序圖將數據寫進指定的地址單元中。
MCP2510_init
CALL RESET ;系統復位,配置模式
MOVLW CNF1 ;總線定時
MOVWF ADDR
MOVLW B‘00110001‘
MOVWF DATA1
CALL WRITE2510 ;寫入數據
MOVLW CNF2
MOVWF ADDR
MOVLW B‘11110001‘
MOVWF DATA1
CALL WRITE2510
MOVLW CNF3
MOVWF ADDR
MOVLW B‘00000101‘
MOVWF DATA1
CALL WRITE2510
MOVLW RXM0SIDH ; 初始化接收屏蔽寄存器0
MOVWF ADDR
MOVLW B‘11111111‘
MOVWF DATA1
CALL WRITE2510
MOVLW RXM0SIDL
MOVWF ADDR
MOVLW B‘00000000‘
MOVWF DATA1
CALL WRITE2510
MOVLW RXM0EID8
MOVWF ADDR
MOVLW B‘00000000‘
MOVWF DATA1
CALL WRITE2510
MOVLW RXM0EID0
MOVWF ADDR
MOVLW B‘00000000‘
MOVWF DATA1
CALL WRITE2510
∶ ; 初始化接收屏蔽寄存器1
∶ ; 和接收過濾寄存器0~5
∶ ;
MOVLW CANINTE ;開放ERR,RX0中斷
MOVWF ADDR
MOVLW B‘00100001‘
MOVWF DATA1
CALL WRITE2510
MOVLW CANINTF ;清中斷標志
MOVWF ADDR
MOVLW B‘00000000‘
MOVWF DATA1
CALL WRITE2510
MOVLW CANCTRL ;正常工作模式
MOVWF ADDR
MOVLW B‘11100000‘
MOVWF MARK
MOVLW B‘00000000‘
MOVWF DATA1
CALL Bit_Modify2510
RETURN
參考文獻
1 PHILIPS SJA1000 stand-alone CAN controller product specification.2000 Jan 04
2 MICROCHIP MCP2510 Stand-Alone CAN Controller with SPITM Interface.
3 鄔寬明. CAN總線原理和應用系統設計. 北京航空航天大學出版社,1996.
標簽:
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-09-08
華為昇騰Atlas800iA2 910B服務器Deepsee...
2025-09-04
2025-08-06
2025-07-08
2025-06-30
2025-06-16