張微 王韻琪 楊博云
【摘 要】RS-485是一種工業(yè)控制環(huán)境中常用的串口通信協(xié)議,它具有抗干擾能力強,傳輸距離遠的特點。本文利用RS-485實現(xiàn)上位機與STM32的數(shù)據(jù)發(fā)送與接收,并在不同環(huán)境下對其通信穩(wěn)定性進行了測試。
【關鍵詞】RS-485;STM32;數(shù)據(jù)通信
中圖分類號: TP334.3;TP368.1 文獻標識碼: A 文章編號: 2095-2457(2019)29-0094-002
DOI:10.19694/j.cnki.issn2095-2457.2019.29.043
Stability Analysis of RS485 Data Communication Based on STM32
ZHANG Wei WANG Yun-qi YANG Bo-yun
(College of Electornic & Information Engineering,Suzhou Vocational University,Suzhou Jiangsu 215021,China)
【Abstract】RS-485 is a communication protocol widely used in industrial control environment.It has the characteristics of strong anti-interference and long transmission distance.This paper introduce how to use RS485 to send and receive data between host computer and STM32,and analyse its communication stability in different harsh environments.
【Key words】RS-485;STM32;Date Commucation
0 引言
RS-485通信是由RS-232通信改進而來,其協(xié)議層不變,只是改進了物理層。與此同時,傳輸?shù)男盘栍蓡味诵盘柛臑椴罘中盘?,因此具有傳輸距離長,傳輸效率高,可適用于多機通訊的特點[1]。如今,其應用范圍已擴展到了機械工業(yè)、交通工業(yè)、醫(yī)療設備、建筑、環(huán)境控制等。本課題使用嵌入式微控制器STM32編寫程序,實現(xiàn)上位機與STM32的RS-485通訊,并在不同環(huán)境下對其通信穩(wěn)定性進行測試。
1 硬件線路設計
硬件部分結構圖如圖1,CPU類型為STM32F107VC,STM32F107VC是意法半導體公司推出的性能較強的全新STM32互連型系列微控制器,此芯片集成了各種高性能工業(yè)標準接口,工作溫度范圍–40~+105°C,最大工作頻率72MHz,為低功耗設計應用提供了一組完整的節(jié)電模式[2]。
Max3485是一種+3.3V低功耗半雙工收發(fā)器,它可以滿足RS-485串行協(xié)議通信要求。同時兼容工業(yè)標準規(guī)范,帶負載條件下數(shù)據(jù)傳輸速率高達10Mbs。自帶低功耗關斷模式,輸出短路保護功能。工作溫度范圍為-40℃-85℃。
如圖1所示,上位機通過RS-485串口調試軟件向STM32發(fā)送數(shù)據(jù),微處理控制器接收到數(shù)據(jù)后返回原數(shù)據(jù)到上位機,設置上位機串口調試軟件的參數(shù)為波特率為115200bit/s,8個數(shù)據(jù)位,1個停止位,偶校驗。上位機串口調試軟件顯示接收到的數(shù)據(jù)表示通信成功。通過在不同溫度,不同電磁干擾條件下不間斷發(fā)送數(shù)據(jù),測試數(shù)據(jù)傳輸?shù)姆€(wěn)定性。
圖1 RS-485通信硬件結構示意圖
2 軟件程序設計
軟件部分結構圖如圖2,軟件部分主要包括初始化、數(shù)據(jù)接收檢測和數(shù)據(jù)發(fā)送三部分。
圖2 RS-485通信軟件結構示意圖
初始化部分包括標識定義,時鐘使能,GPIO端口使能等等。主程序部分通過定義一個標識符RS485_REC_Flag代表是否接收到數(shù)據(jù),如果標識符為1,表示STM32接收到數(shù)據(jù),后通過數(shù)據(jù)發(fā)送程序將接收到的數(shù)據(jù)返回到上位機串口調試軟件。
通過恒溫箱分別在高溫45℃和低溫-25℃下進行實驗,自動發(fā)送10000條重復數(shù)據(jù),并計算誤差率,誤差率為0。通過EMI測試儀分別將RS-485通訊數(shù)據(jù)線放置在不同的噪聲環(huán)境中,自動發(fā)送10000條數(shù)據(jù),誤差率為0,可以看出采用差分信號傳輸?shù)腞S-485通信穩(wěn)定性很高[3]。部分主程序代碼如下:
int main(void)
{
...
while (1)
{
if(RS485_REC_Flag == 1)
{
RS485_REC_Flag = 0;
RS485_Send_Data(RS485_buff,RS485_rec_counter);
RS485_rec_counter = 0;
}
}
}
3 結束語
本文主要講述了利用RS-485實現(xiàn)上位機和STM32的數(shù)據(jù)接收與發(fā)送,并在不同實驗環(huán)境下測試了其通信穩(wěn)定性,測試結果表明采用差分信號傳輸?shù)腞S-485通信傳輸數(shù)據(jù)穩(wěn)定性較好,驗證了理論分析。學校在目前的《工業(yè)數(shù)據(jù)通信與控制網絡》課程教學過程中,有profibubus總線通訊實驗,CAN總線通訊實驗,本實驗為后續(xù)RS-485串口通訊實驗的開展打下了一定的基礎。
【參考文獻】
[1]吳皓月,淺談RS232與RS485串行通訊,《中國新通信》,2016.10.
[2]姚宇陽,基于SJA1000的雙CAN收發(fā)器通信實現(xiàn),《科技視界》,2019.4.
[3]姜傳彥,工業(yè)現(xiàn)場RS485通訊干擾問題處理,《科技創(chuàng)新與應用》,2019.2.