曾璐陽
(武漢理工大學自動化學院,湖北 武漢 430070)
基于 STM32 的 CAN 總線 /RS232 接口轉換器的設計
曾璐陽
(武漢理工大學自動化學院,湖北 武漢 430070)
RS232 接口和 CAN 總線等通信技術得到廣泛的應用,但是各有優缺點。RS232 的接口容易受損,而在一般上位機上并沒有CAN總線的接口。所以本設計主要提出了基于STM32的CAN總線/RS232接口的轉換器的設計,以SN65HVD230芯片為 CAN 總線收發器,MAX3232 實現 RS232 的電平轉換。
CAN/RS232 轉換器;STM32;SN65HVD230;MAX3232
在現代工業控制中,RS232 接口和 CAN 總線等通信技術得到廣泛的應用。RS232 適合用于短距離的傳輸,雖然成本低廉,但其接口容易受損。CAN 總線有著組網簡單、傳送距離遠、實時性好等優點,但是一般的上位機并沒有 CAN 接口。所以本文提出了一種基于 STM32 微控制器的 CAN/ RS232 轉換器的設計。
(1) 硬 件 方 案 設 計。 本 設 計 中,CPU 為STM32 芯片,CAN 總線的收發器為 SN65HVD230芯片,RS232 的電平轉換則用 MAX3232 實現。具體系統框圖如圖1所示。

圖1 系統框圖
(2)CPU 介紹。本設計選用的 CPU 是意法半導體公司的 STM32F103VC 芯片,其最高的工作頻率可達 72MHz,內部集成有 512KB 的閃存以及64KB 的靜態 隨機存取存儲器。具有 足夠的 I/O 口資源,且內嵌有 CAN2.0B 主動接口,可以滿足功能要求。STM32 與 CAN 收發器之間選用光電耦合器進行隔離,從而提高系統抗干擾性。
(3)RS232 電平轉換。STM32 內置有 USART模 塊, 完 全 支 持 RS-232 協 議。 但 是,STM32 的TTL 電 平 與 RS-232 電平 的 邏 輯 電 平 定義 不 同,兩者之間并不兼容,因此不能直接連接。所以,本 設計 選 用 電 平轉 換 芯 片 MAX3232DR 芯 片,實現 RS-232 電 平和 TTL 電 平 之間 的 相互 轉 換。MAX3232DR 芯片的功能與工業標準 MAX232 相兼容,并且相比于傳統的 MAX232 的 5V 供電,MAX3232DR 在 3.3V 電壓下就可以正常工作了,簡化了電路設計的復雜度,具體電路如圖2所示。

圖2 RS232 通新電路
在進行 RS-232 通訊時一般只需要 RxD、TxD以及地線即可,設計時簡化了其余的接口設計。芯片的外圍電路最少需要4個電容工作,其中包括一對浮動電容(C113,C114)和一對存儲電容(C115,C116)來產生 V+ 和 V-的電源。在實際應用中,由于芯片對電源的噪聲比較敏感,所以需要在 VCC上對地加上一個去耦電容(C117),所有電容都選用 0.1uf的電解電容。
(4)CAN 收 發 器 SN65HVD320。 一 般 CAN總線上被稱為 CAN_H 和 CAN_L 兩條信號線的信號均使用差分電壓進行傳送,這兩條信號線在靜態時電壓均為 2.5V 左右,該時刻的狀態表示為邏輯“1”,稱作隱性電平;當 CAN_H 的電平比 CAN_L的電平高的時候,該時刻的狀態表示為邏輯“0”,稱作顯性電平。一般此時 CAN_H 的電平為 3.5V,而 CAN_L 的電平為 1.5V。
本次設計中使用的是 SN65HVD230 芯片,是TI公司生產的 3.3V 的 CAN 總線收發器,其具有差分收發能力,最高速率可達 1Mb/s,廣泛應用于工業自動化領域。具體的CAN 電路設計如圖3所示,在 CAN 總線終端并聯一個電阻,伺服系統并行連接到 CAN 總線上且可通過跳線帽選擇是否接入到網絡中。

圖3 CAN 收發器電路原理
由于轉換器分別連接 CAN 和 RS232,所以軟件設計的主要目的是數據在兩種協議之間的轉換,同時還要保證穩定性和實時性。
為了與其他 CAN 接口能夠更好的兼容,本系統采用標準 CAN2.0 協議。主程序的流程圖如圖4所示。

圖4 主程序流程圖
當程序啟動時,首先進行系統初始化,包括設置 CAN 接口通信波特率為 80kbs,USART 波特率為 9600kbs,同時設置 USART 優先級低于 CAN 接口接收中斷優先級。
while 死循環構成整個程序的主循環,首先判斷CAN 緩存區有無數據,如有數據則進入 CAN 接收中斷子程序,并將其轉換成 USART 格式,同時送至發送緩沖區,確保其能用 USART 輸出;如無數據則先判斷 USART 緩存區有無數據,如有數據,則將其轉換成 CAN 格式,并送至發送緩沖區,同時調用 CAN來發送服務程序,
服務程序為 CAN 主動發送,首先按照制定好的通信協議將待發送數據有序地放入發送數組中,然后配置標識符并選擇一個空的發送郵箱,最后再調用 CAN 發送子函數即可。
在諸多領域中,都有 RS232/CAN 轉換器的使用之處。實際應用中將轉接器的 CAN_H 和 CAN_ L連接到外設通信設備的 CAN 接口上,并將轉換器的 RS232 串口線連接到上位機的串口。
實驗證明,串口通信波特率一般在1200~38400bps,而CAN通信波特率正常范圍一般在 5~800kbps 之間。
本 設 計 選 用 STM32 作 為 CPU 來 設 計 一 款CAN/RS232 轉 換 器,SN65HVD230 芯 片 為 CAN總線收發器,MAX3232 實現 RS232 的電平轉換,經實驗得出,本設計安全可靠且速度穩定,擁有一定的實用價值。
[1]周緒貴,查風 . 基于 STM32F103 的 CAN/RS232 轉換板卡的設計與應用 [J]. 工業控制計算機,2014,27(5):49~51.
[2]王英志,楊佳 . 基于 STM32 的 RS232-CAN 通信協議轉換器的設計 [J]. 制造業自動化,2013,35(7):141~143.
[3]陳志旺 . STM32 嵌入式微控制器快速上手 [M]. 北京:電子工業出版社,2014:58~60.
[4]譚涯 . 一種網絡化智能儀器設計與實現 [D]. 武漢 :武漢理工大學,2013.
[5]黃 江 源 . 智 能 儀 器 儀 表 技 術 進 展 及 前 瞻 [J]. 科 技 資 訊,2008,14(5):41.
[6]韓成浩,高曉紅 . CAN 總線技術及其應用 [J]. 制造業自動化 , 2010 (2):146~149.2.
TP336
A
1671-0711(2017)03(下)-0111-02