曾璐陽(yáng)
(武漢理工大學(xué)自動(dòng)化學(xué)院,湖北 武漢 430070)
基于 STM32 的 CAN 總線 /RS232 接口轉(zhuǎn)換器的設(shè)計(jì)
曾璐陽(yáng)
(武漢理工大學(xué)自動(dòng)化學(xué)院,湖北 武漢 430070)
RS232 接口和 CAN 總線等通信技術(shù)得到廣泛的應(yīng)用,但是各有優(yōu)缺點(diǎn)。RS232 的接口容易受損,而在一般上位機(jī)上并沒有CAN總線的接口。所以本設(shè)計(jì)主要提出了基于STM32的CAN總線/RS232接口的轉(zhuǎn)換器的設(shè)計(jì),以SN65HVD230芯片為 CAN 總線收發(fā)器,MAX3232 實(shí)現(xiàn) RS232 的電平轉(zhuǎn)換。
CAN/RS232 轉(zhuǎn)換器;STM32;SN65HVD230;MAX3232
在現(xiàn)代工業(yè)控制中,RS232 接口和 CAN 總線等通信技術(shù)得到廣泛的應(yīng)用。RS232 適合用于短距離的傳輸,雖然成本低廉,但其接口容易受損。CAN 總線有著組網(wǎng)簡(jiǎn)單、傳送距離遠(yuǎn)、實(shí)時(shí)性好等優(yōu)點(diǎn),但是一般的上位機(jī)并沒有 CAN 接口。所以本文提出了一種基于 STM32 微控制器的 CAN/ RS232 轉(zhuǎn)換器的設(shè)計(jì)。
(1) 硬 件 方 案 設(shè) 計(jì)。 本 設(shè) 計(jì) 中,CPU 為STM32 芯片,CAN 總線的收發(fā)器為 SN65HVD230芯片,RS232 的電平轉(zhuǎn)換則用 MAX3232 實(shí)現(xiàn)。具體系統(tǒng)框圖如圖1所示。
圖1 系統(tǒng)框圖
(2)CPU 介紹。本設(shè)計(jì)選用的 CPU 是意法半導(dǎo)體公司的 STM32F103VC 芯片,其最高的工作頻率可達(dá) 72MHz,內(nèi)部集成有 512KB 的閃存以及64KB 的靜態(tài) 隨機(jī)存取存儲(chǔ)器。具有 足夠的 I/O 口資源,且內(nèi)嵌有 CAN2.0B 主動(dòng)接口,可以滿足功能要求。STM32 與 CAN 收發(fā)器之間選用光電耦合器進(jìn)行隔離,從而提高系統(tǒng)抗干擾性。
(3)RS232 電平轉(zhuǎn)換。STM32 內(nèi)置有 USART模 塊, 完 全 支 持 RS-232 協(xié) 議。 但 是,STM32 的TTL 電 平 與 RS-232 電平 的 邏 輯 電 平 定義 不 同,兩者之間并不兼容,因此不能直接連接。所以,本 設(shè)計(jì) 選 用 電 平轉(zhuǎn) 換 芯 片 MAX3232DR 芯 片,實(shí)現(xiàn) RS-232 電 平和 TTL 電 平 之間 的 相互 轉(zhuǎn) 換。MAX3232DR 芯片的功能與工業(yè)標(biāo)準(zhǔn) MAX232 相兼容,并且相比于傳統(tǒng)的 MAX232 的 5V 供電,MAX3232DR 在 3.3V 電壓下就可以正常工作了,簡(jiǎn)化了電路設(shè)計(jì)的復(fù)雜度,具體電路如圖2所示。
圖2 RS232 通新電路
在進(jìn)行 RS-232 通訊時(shí)一般只需要 RxD、TxD以及地線即可,設(shè)計(jì)時(shí)簡(jiǎn)化了其余的接口設(shè)計(jì)。芯片的外圍電路最少需要4個(gè)電容工作,其中包括一對(duì)浮動(dòng)電容(C113,C114)和一對(duì)存儲(chǔ)電容(C115,C116)來(lái)產(chǎn)生 V+ 和 V-的電源。在實(shí)際應(yīng)用中,由于芯片對(duì)電源的噪聲比較敏感,所以需要在 VCC上對(duì)地加上一個(gè)去耦電容(C117),所有電容都選用 0.1uf的電解電容。
(4)CAN 收 發(fā) 器 SN65HVD320。 一 般 CAN總線上被稱為 CAN_H 和 CAN_L 兩條信號(hào)線的信號(hào)均使用差分電壓進(jìn)行傳送,這兩條信號(hào)線在靜態(tài)時(shí)電壓均為 2.5V 左右,該時(shí)刻的狀態(tài)表示為邏輯“1”,稱作隱性電平;當(dāng) CAN_H 的電平比 CAN_L的電平高的時(shí)候,該時(shí)刻的狀態(tài)表示為邏輯“0”,稱作顯性電平。一般此時(shí) CAN_H 的電平為 3.5V,而 CAN_L 的電平為 1.5V。
本次設(shè)計(jì)中使用的是 SN65HVD230 芯片,是TI公司生產(chǎn)的 3.3V 的 CAN 總線收發(fā)器,其具有差分收發(fā)能力,最高速率可達(dá) 1Mb/s,廣泛應(yīng)用于工業(yè)自動(dòng)化領(lǐng)域。具體的CAN 電路設(shè)計(jì)如圖3所示,在 CAN 總線終端并聯(lián)一個(gè)電阻,伺服系統(tǒng)并行連接到 CAN 總線上且可通過(guò)跳線帽選擇是否接入到網(wǎng)絡(luò)中。
圖3 CAN 收發(fā)器電路原理
由于轉(zhuǎn)換器分別連接 CAN 和 RS232,所以軟件設(shè)計(jì)的主要目的是數(shù)據(jù)在兩種協(xié)議之間的轉(zhuǎn)換,同時(shí)還要保證穩(wěn)定性和實(shí)時(shí)性。
為了與其他 CAN 接口能夠更好的兼容,本系統(tǒng)采用標(biāo)準(zhǔn) CAN2.0 協(xié)議。主程序的流程圖如圖4所示。
圖4 主程序流程圖
當(dāng)程序啟動(dòng)時(shí),首先進(jìn)行系統(tǒng)初始化,包括設(shè)置 CAN 接口通信波特率為 80kbs,USART 波特率為 9600kbs,同時(shí)設(shè)置 USART 優(yōu)先級(jí)低于 CAN 接口接收中斷優(yōu)先級(jí)。
while 死循環(huán)構(gòu)成整個(gè)程序的主循環(huán),首先判斷CAN 緩存區(qū)有無(wú)數(shù)據(jù),如有數(shù)據(jù)則進(jìn)入 CAN 接收中斷子程序,并將其轉(zhuǎn)換成 USART 格式,同時(shí)送至發(fā)送緩沖區(qū),確保其能用 USART 輸出;如無(wú)數(shù)據(jù)則先判斷 USART 緩存區(qū)有無(wú)數(shù)據(jù),如有數(shù)據(jù),則將其轉(zhuǎn)換成 CAN 格式,并送至發(fā)送緩沖區(qū),同時(shí)調(diào)用 CAN來(lái)發(fā)送服務(wù)程序,
服務(wù)程序?yàn)?CAN 主動(dòng)發(fā)送,首先按照制定好的通信協(xié)議將待發(fā)送數(shù)據(jù)有序地放入發(fā)送數(shù)組中,然后配置標(biāo)識(shí)符并選擇一個(gè)空的發(fā)送郵箱,最后再調(diào)用 CAN 發(fā)送子函數(shù)即可。
在諸多領(lǐng)域中,都有 RS232/CAN 轉(zhuǎn)換器的使用之處。實(shí)際應(yīng)用中將轉(zhuǎn)接器的 CAN_H 和 CAN_ L連接到外設(shè)通信設(shè)備的 CAN 接口上,并將轉(zhuǎn)換器的 RS232 串口線連接到上位機(jī)的串口。
實(shí)驗(yàn)證明,串口通信波特率一般在1200~38400bps,而CAN通信波特率正常范圍一般在 5~800kbps 之間。
本 設(shè) 計(jì) 選 用 STM32 作 為 CPU 來(lái) 設(shè) 計(jì) 一 款CAN/RS232 轉(zhuǎn) 換 器,SN65HVD230 芯 片 為 CAN總線收發(fā)器,MAX3232 實(shí)現(xiàn) RS232 的電平轉(zhuǎn)換,經(jīng)實(shí)驗(yàn)得出,本設(shè)計(jì)安全可靠且速度穩(wěn)定,擁有一定的實(shí)用價(jià)值。
[1]周緒貴,查風(fēng) . 基于 STM32F103 的 CAN/RS232 轉(zhuǎn)換板卡的設(shè)計(jì)與應(yīng)用 [J]. 工業(yè)控制計(jì)算機(jī),2014,27(5):49~51.
[2]王英志,楊佳 . 基于 STM32 的 RS232-CAN 通信協(xié)議轉(zhuǎn)換器的設(shè)計(jì) [J]. 制造業(yè)自動(dòng)化,2013,35(7):141~143.
[3]陳志旺 . STM32 嵌入式微控制器快速上手 [M]. 北京:電子工業(yè)出版社,2014:58~60.
[4]譚涯 . 一種網(wǎng)絡(luò)化智能儀器設(shè)計(jì)與實(shí)現(xiàn) [D]. 武漢 :武漢理工大學(xué),2013.
[5]黃 江 源 . 智 能 儀 器 儀 表 技 術(shù) 進(jìn) 展 及 前 瞻 [J]. 科 技 資 訊,2008,14(5):41.
[6]韓成浩,高曉紅 . CAN 總線技術(shù)及其應(yīng)用 [J]. 制造業(yè)自動(dòng)化 , 2010 (2):146~149.2.
TP336
A
1671-0711(2017)03(下)-0111-02