RS-232轉(zhuǎn)CAN總線協(xié)議適配器的設(shè)計
發(fā)布時間:
2023-02-01 16:00
來源:
CAN是Controller Area Network的縮寫,是ISO國際標(biāo)準(zhǔn)化的串行通信協(xié)議。CAN屬于現(xiàn)場總線范疇,具有通信實(shí)時性好、糾錯能力強(qiáng),結(jié)構(gòu)簡單等優(yōu)點(diǎn)。RS-232是美國電子丁業(yè)協(xié)會EIA制定的一種串行物理接口標(biāo)準(zhǔn)。它作為計算機(jī)串行通信接口,已經(jīng)被廣泛的使用。RS-232的缺點(diǎn)就是傳輸距離短,而且只能點(diǎn)對點(diǎn)通信,無法組建多點(diǎn)通信網(wǎng)絡(luò)。CAN總線正好彌補(bǔ)了RS-232的這些缺點(diǎn)。因此設(shè)計RS-232轉(zhuǎn)CAN總線協(xié)議的適配器,既可以發(fā)揮RS-232的通用性強(qiáng)的優(yōu)點(diǎn),又可以利用CAN總線解決遠(yuǎn)程通信網(wǎng)絡(luò)的問題,具有很高的應(yīng)用價值。
1 CAN協(xié)議幀功能及結(jié)構(gòu)分析
CAN協(xié)議使用5種幀來完成通信。分別是數(shù)據(jù)幀、遠(yuǎn)程幀、錯誤幀、過載幀、幀間間隔。其中,數(shù)據(jù)幀就是發(fā)送單元向接收單位發(fā)送數(shù)據(jù)所用的幀。數(shù)據(jù)幀分兩種,具有11位標(biāo)識符的幀叫做標(biāo)準(zhǔn)格式,具有29位標(biāo)識符的幀叫做擴(kuò)展格式。
2 RS-232轉(zhuǎn)CAN總線協(xié)議適配器的總體設(shè)計及工作原理
RS-232轉(zhuǎn)CAN總線協(xié)議適配器分為RS-232接口部分,微處理器和CAN總線接口部分。結(jié)構(gòu)框圖如圖1所示。
圖1 RS-232轉(zhuǎn)CAN總線協(xié)議適配器的結(jié)構(gòu)框圖
當(dāng)串口向CAN總線接口發(fā)送數(shù)據(jù)時,數(shù)據(jù)通過串口輸送到MAX232進(jìn)行電平轉(zhuǎn)換,將RS-232電平轉(zhuǎn)換成TrL電平,然后STC89C51對數(shù)據(jù)進(jìn)行提取,將有效數(shù)據(jù)提取出來.增加幀結(jié)構(gòu)信息、幀類型、字節(jié)長度和標(biāo)識符等,這樣就生成CAN報文格式.然后由CAN總線控制器MCP2510發(fā)送出去。
當(dāng)CAN總線接口向串口發(fā)送數(shù)據(jù)時,總線控制器MCP2510接受到數(shù)據(jù),然后輸送給STC89C51.進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換為RS-232通信格式,然后輸送給MAX232進(jìn)行電平轉(zhuǎn)換,就得到了符合RS-232格式的數(shù)據(jù)。
3 RS-232轉(zhuǎn)CAN總線協(xié)議適配器的軟硬件設(shè)計
3.1硬件設(shè)計
3.1.1微處理器
微處理器采用的是STC89C51,帶4K字節(jié)的FLASHFPROM,高性能的8位單片機(jī)。STC89C51的作用就是數(shù)據(jù)轉(zhuǎn)換,以及總線控制器的初始化。
3.1.2 RS-232接口部分
RS-232接口部分的電路圖如圖2所示。
圖2 RS-232接口部分的電路圖
RS-232接口部分由MAX232芯片構(gòu)成。使用5v單電源供經(jīng)發(fā)送結(jié)束。處理器將要發(fā)送的數(shù)據(jù)寫入MCP2510的緩沖區(qū)電??蓪?shí)現(xiàn)rI'IIJCMOS電平與RS-232電平的轉(zhuǎn)換,包含2路接收和驅(qū)動器,。MAX232可以把5 v電壓變換成RS-232輸出電平所需的+10 V電壓。
3.1.3 CAN總線接口部分
CAN總線接口部分由CAN總線控制器和CAN總線收發(fā)器組成。
(1) CAN總線控制器MCP2510
MCP2510是一種帶有SPI接口的CAN控制器,它支持CAN技術(shù)規(guī)范V2.0MB,并能夠發(fā)送和接收標(biāo)準(zhǔn)的和擴(kuò)展的信息幀同時具有接收濾波和信息管理的功能。MCP2510通過SPI接口與MCU進(jìn)行數(shù)據(jù)傳輸,最高數(shù)據(jù)傳輸速率可達(dá)5Mb/s,MCU可通過MCP2510與CAN總線上的其它MCU單元通訊。MCP2510內(nèi)含三個發(fā)送緩沖器、二個接收緩沖器。同時還具有靈活的中斷管理能力.這些特點(diǎn)使得MCU對CAN總線的操作變得非常簡便。
(2)CAN總線高速收發(fā)器TJA1050
TJAl050是CAN總線協(xié)議控制器和物理總線之間的接口.可以為總線提供不同的發(fā)送性能.為CAN總線控制器提供不同的接收性能.而且它與IS01 1898標(biāo)準(zhǔn)完全兼容。采用TJAl050的目的是增大通信距離、提高系統(tǒng)的瞬間抗干擾能力、保護(hù)總線、降低射頻干擾及實(shí)現(xiàn)熱防護(hù)等。CAN總線接口部分的電路圖如圖3所示。
圖3 CAN總線接口部分的電路圖
3.2 軟件設(shè)計
RS-232轉(zhuǎn)CAN總線協(xié)議適配器的軟件設(shè)計包括單片機(jī)STC89C51的初始化,CAN總線控制器的初始化,數(shù)據(jù)的發(fā)送、接收以及錯誤處理等。具體流程如圖4所示。
圖4軟件設(shè)計流程圖
(1) STC89C51的初始化
單片機(jī)STC89C51上電復(fù)位后,要對單片機(jī)的定時/計數(shù)控制寄存器、串行控制器、中斷優(yōu)先級控制器、中斷使能寄存器等進(jìn)行初始化。
(2)CAN總線控制器的初始化
要實(shí)現(xiàn)CAN通信。首先要對CAN控制器進(jìn)行初始化。MCP2510中有3個發(fā)送緩沖區(qū),可以循環(huán)使用,也可以只使用一個發(fā)送緩沖區(qū),但必須保證在發(fā)送的時候.前一次的數(shù)據(jù)已經(jīng)發(fā)送結(jié)束。處理器將要發(fā)送的數(shù)據(jù)寫入MCP2510的緩沖區(qū)之后,調(diào)用RTS命令即可將數(shù)據(jù)發(fā)送的CAN總線上。
這里定義了一個結(jié)構(gòu)體MCP2510_Data作為傳輸數(shù)據(jù)的結(jié)構(gòu)體。
struet{
int id_CAN;
char datalength;
char data[8];
int IsExt;
im rxRTR;
}MCP25 10_Data;
id_CAN是CAN信息的ID號,datalength是傳輸數(shù)據(jù)的長度,data是要傳輸?shù)南?shù)據(jù),IsExt指是否使用擴(kuò)展1D,rxRTR指使用數(shù)據(jù)幀還是遠(yuǎn)程幀。
定義了一個MCP2510_Rev結(jié)構(gòu)體用于記錄緩沖區(qū)的各種狀態(tài)。
struct{
MCP25 10_Data candata;
int nCANREV;
int nCANREAD;
int loop;
}MCP25 10一Rev;
nCANREV表示接收緩沖區(qū)數(shù)據(jù)狀態(tài),nCANREAD表示讀取緩沖區(qū)數(shù)據(jù)狀態(tài),loop表示是否支持回環(huán)模式。
(3)數(shù)據(jù)的發(fā)送與接收
數(shù)據(jù)的發(fā)送接收.包括串行中斷程序和CAN總線中斷程序。中斷流程圖如圖5所示。
圖5中斷流程圖
函數(shù)MCP2510_Write和MCP2510_Read負(fù)責(zé)對緩沖區(qū)讀寫數(shù)據(jù),MCP25lO_Open負(fù)責(zé)打開CAN總線控制器,并清空3個發(fā)送緩沖區(qū),MCP2510_Close負(fù)責(zé)關(guān)閉CAN總線控制器,MCP2510 Comm負(fù)責(zé)向CAN總線控制器發(fā)送各種控制命令。
4 結(jié)束語
本文作者創(chuàng)新點(diǎn):使用STC89C51設(shè)計了RS-232與CAN總線協(xié)議轉(zhuǎn)換的硬件電路,解決了RS-232與CAN總線數(shù)據(jù)轉(zhuǎn)換與傳輸?shù)膯栴}。這樣將使很多具有RS-232接口的設(shè)備可以與CAN總線一起構(gòu)成一個遠(yuǎn)程的通信網(wǎng)絡(luò),既節(jié)省了成本,又
保證了設(shè)備的兼容性。
資訊下載:https://img01.71360.com/file/read/www/M00/F8/D0/wKj0iWHBSLCAMSgoAADNEuCMEps19.docx
相關(guān)產(chǎn)品