999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式系統應用中實現RS485的方向切換

2014-06-25 02:46:14吳麗萍戈志明
單片機與嵌入式系統應用 2014年4期
關鍵詞:方向信號能力

吳麗萍,戈志明

(蘇州工業園區職業技術學院,蘇州 215123)

吳麗萍(講師),主要研究方向為自動控制系統;戈志明(工程師),主要研究方向為嵌入式系統、軟件測試。

引 言

RS485總線是工業應用中非常成熟的技術,是現代通信技術的工業標準之一。RS485總線用于多站互連十分方便,用一對雙絞線即可實現,采用平衡發送和差分接收,即在發送端驅動器將TTL電平信號轉換成差分信號輸出,在接收端接收器將差分信號變成TTL電平,因此具有抗共模干擾的能力。根據RS-485標準,傳送數據速率達100kb/s時通信距離可達1200m[1]。

RS485在嵌入式系統中的應用非常廣泛。嵌入式系統可以通過RS485接口來控制終端設備。由于RS485是半雙工模式,因此發送和接收的方向切換需要我們的關注和研究。如果方向切換方式選擇不好可能會導致RS485驅動能力下降、軟件執行效率下降,甚至導致系統異常等問題[2]。

本文分別給出硬件實現RS485方向切換和軟件實現RS485方向切換兩種方式。兩種方式各有優點,硬件方式控制起來比較簡單。軟件方式的驅動能力更好,但是和嵌入式平臺關系比較密切,不同的平臺都需要調試和驗證。

1 硬件方式控制RS485方向

圖1所示為硬件控制RS485的電路圖。電路中使用2N7002LT1GMOS場效晶體管把UART_TXD_485這個MCU輸出的RS485發送信號邏輯取反后送給RS485芯片的RE/DE PIN腳。控制的原理是,當UART_TXD_485輸出低電平時RS485芯片的DE使能;輸出高電平時RE使能。默認情況下 UART_TXD_485是高電平,RS485芯片處于接收狀態。發送數據時,UART_TXD_485上面有高低電平信號變化,低電平信號通過RS485芯片SP3072EEN-L/TR直接輸出,高電平信號通過外部上下拉電阻來控制[3]。

這種方法的優點是控制簡單,軟件不需要做額外的工作,控制RS485像控制RS232一樣。但是這種方法的缺點是驅動能力可能不足,由于這種控制方法沒有完全發揮出RS485驅動芯片自身的驅動能力,輸出信號依賴于外部上下拉電阻,因此在復雜環境下,譬如很多負載需要控制時,就會存在驅動能力不足的問題。但是在一些簡單的環境或者軟件實現較復雜的平臺下,使用這種方法還是切實可行的。

圖1 硬件控制RS485電路圖

2 軟件方式控制RS485方向

2.1 驅動能力分析

在復雜的RS485控制環境下,用上面介紹的硬件方式來控制RS485的方向會存在比較突出的驅動能力不足的問題[4]。修改上述控制方法,將TTL這一側的2線控制改為3線控制,就是將收發控制信號不用當前的/TXD來控制,而從主控分出一根GPIO線來控制收發。

按照輸出電流計算,3線控制方式相對用2線控制的總線上下拉作為輸出的方式,其驅動能力提高了25~50倍(不同廠家不同型號有差異),如果輔以終端電阻靈活配置的措施,RS485的驅動能力將完全不是問題。表1是兩種控制方式驅動能力的對比。

2.2 軟硬件環境

軟件控制方法采用圖2的硬件設計,圖中很突出的修改是使用MCU的GPIO來控制RE和DE。RS485芯片的供電采用5V供電,提高驅動能力。RS485芯片的RE和DE控制使用MCU的GPIO輸出高低電平來控制。簡單來說就是,在RS485進行數據傳輸時,通過GPIO來控制傳輸方向。這里采用的MCU是TI公司的DM8168處理器來實現軟件的RS485切換功能。軟件版本使用UBoot-2010.06和linux-2.6.37。用軟件來實現 RS485的收發,盡量要保證執行效率;要達到上面的目的就需要對串口驅動進行調試,使用串口驅動用到的軟件資源和串口控制器本身的硬件資源來實現RS485的控制。

圖2 軟件控制方法中的硬件設計

表1 軟件和硬件控制方式驅動能力的對比

2.3 U-Boot代碼修改

需要修改的文件:

其中UART_LSR_TEMT表示發送BUF和移位寄存器為空。默認情況下RS485是接收狀態,一旦要發送數據,就把RS485切換為發送狀態。發送完數據后,等待發送BUF和移位寄存器為空,然后切換回接收狀態,這里無需使用timeout。

2.4 Linux代碼修改

需要修改的文件:

①arch/arm/mach-omap2/bord-ti8168evm.c

② drivers/serial/omap-serial.c

③include/linux/serial_core.h

serial_core.h文件,uart_port結構體中增加set_rs485_direction函數指針,用于執行RS485的方向切換void(*set_rs485_direction)(int rs485_dir);原本考慮在uart_ops結構體中增加的,但是這個結構體是常量類型,對它不作改動,因此加到了uart_port結構體中。在該文件中添加相關宏定義和函數指針類型用于函數注冊:

omap-serial.c文件主要做了如下幾點改動:

① 添加omap_rs485_dir_fun全局的函數指針。static set_rs485_direction_t omap_rs485_dir_fun[OMAP_MAX_HSUART_PORTS]= {NULL,NULL,NULL,NULL,NULL,NULL}

② 外部驅動利用omap_rs485_dir_fun_reg注冊函數對omap_rs485_dir_fun進行賦值。

④ 默認情況下RS485處于接收狀態。

⑤serial_omap_enable_ier_thri函數中把 RS485切換為發送狀態。

⑦transmit_chars更改一下,原先的代碼是當沒有更多的字符要發送(環形緩沖為空)時需要關閉發送中斷,這時串口控制器發送BUF和移位寄存器中還是有數據的,這些數據串口控制器自動發送完成后才算結束,由于已經關閉了發送中斷,因此發送結束后就沒有中斷產生了。但是RS485切換方向需要等到完全發送完成后才能進行。因此對transmit_chars函數做了修改。調用serial_omap_stop_tx函數前判斷發送BUF和移位寄存器是否為空,如果為空就可以切換方向了。簡而言之,延后了發送中斷的關閉時間。

⑧arch/arm/mach-omap2/board-ti8168evm.c文件在ti8168_evm_init函數中調用omap_rs485_dir_fun_reg函數注冊RS485切換函數。

2.5 實驗結果分析

上述軟件修改有如下幾個優點:不增加硬件開銷;不增加和使用任何硬件資源;不增加軟件開銷;不影響軟件執行效率;硬件控制是電信號控制,方向切換和TX綁定;軟件控制是整個發送緩沖區完成發送后再進行方向切換,控制實現上更加合理。

對軟件切換RS485做了基本的測試,情況如下:

①控制臺操作。整個啟動打印信息正常。U-Boot和Kernel下控制效果和硬件控制一樣,可以很流暢地進行命令的輸入和回顯,串口終端增加輸入字符間的延時后可以進行配置的粘貼。內核在115 200和38 400下分別進行測試OK。

②內核下加大負責進行大數據量的發送。增加負載,開多個ping包進程(產生大量中斷)、Nand Flash的操作、CPU占有率接近100%條件下,通過RS485輸出大量數據,沒有亂碼,校驗OK。

③ 極高的實時性。由于本文給出的軟件實現方式是基于Linux內核實現的,因此很好地保證了方向控制的實時性。實際結果顯示,DM8168數據發送完成到產生方向控制信號之間的時間在25μs左右,幾乎可以忽略不計。而有些設計在用戶空間使用應用程序進行方向切換的方法會導致20ms以上的延時,導致了一系列異常問題的產生。

結 語

本文詳細描述了RS485方向控制的硬件和軟件兩種實現方式。兩種控制方式各有特點,硬件控制方式實現簡單,不需要軟件干預,對軟件而言RS485串口收發就像RS232一樣簡單。軟件控制方式可以極大地提高整個RS485線路的驅動能力,本文給出的基于Linux內核的控制方法又很好地保證了RS485方向切換的實時性,滿足了實用性要求。這兩種方式在很多場合已經得到了很好的應用和驗證。特別是軟件實現方式,可以擴展到更多的應用場合,譬如復雜的多主、多從的RS485使用環境,軟件控制可以根據自己的需求來實現整個RS485線路不同的數據流向,可以規避某個設備對RS485鏈路上異常信號的干擾,給實際應用帶來了很多的便利性。

[1]TI.RS-422and RS-485Standards Overview and System Configurations,2010.

[2]TI.GPIO User′s Guide,2011.

[3]魏永明,耿岳,鐘書毅.LINUX設備驅動程序[M].北京:中國電力出版社,2010.

[4]劉剛,趙建川.LINUX系統移植[M].北京:清華大學出版社,2011.

猜你喜歡
方向信號能力
消防安全四個能力
2022年組稿方向
計算機應用(2022年2期)2022-03-01 12:33:42
2021年組稿方向
計算機應用(2021年4期)2021-04-20 14:06:36
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
2021年組稿方向
計算機應用(2021年1期)2021-01-21 03:22:38
完形填空二則
大興學習之風 提升履職能力
人大建設(2018年6期)2018-08-16 07:23:10
基于FPGA的多功能信號發生器的設計
電子制作(2018年11期)2018-08-04 03:25:42
你的換位思考能力如何
基于LabVIEW的力加載信號采集與PID控制
主站蜘蛛池模板: 成年av福利永久免费观看| 久久一色本道亚洲| 成人综合网址| 国产毛片不卡| 欧美一区日韩一区中文字幕页| 国产精品成人免费综合| 成人国产精品一级毛片天堂| 国产成人综合亚洲欧美在| 亚洲综合精品香蕉久久网| 国产一区成人| 欧美日韩在线国产| 国产超薄肉色丝袜网站| 欧洲极品无码一区二区三区| 国产午夜无码片在线观看网站 | 一本大道在线一本久道| 丁香婷婷综合激情| 成人国产精品网站在线看| 国产精品无码AⅤ在线观看播放| 日本午夜视频在线观看| 手机在线看片不卡中文字幕| 欧美成人精品高清在线下载| 97狠狠操| 岛国精品一区免费视频在线观看| 欧洲亚洲一区| 久久www视频| 国产丝袜啪啪| 特级做a爰片毛片免费69| 99er精品视频| 精品欧美日韩国产日漫一区不卡| 国产欧美日韩综合在线第一| 广东一级毛片| 亚洲成年人网| 伊人狠狠丁香婷婷综合色| 一级毛片免费高清视频| 国产日韩欧美中文| 亚洲中文无码av永久伊人| 免费又爽又刺激高潮网址| 农村乱人伦一区二区| 九九热视频在线免费观看| 91精品国产自产91精品资源| 中国精品久久| 99国产精品一区二区| 色婷婷亚洲综合五月| 伊大人香蕉久久网欧美| 无码不卡的中文字幕视频| 亚洲毛片一级带毛片基地| 国产探花在线视频| 91午夜福利在线观看| 国产永久在线观看| 国产精品手机在线观看你懂的| 福利片91| 亚洲美女一级毛片| 国产成人av一区二区三区| 国产午夜福利在线小视频| 尤物亚洲最大AV无码网站| 国产一级无码不卡视频| 欧美一区二区三区欧美日韩亚洲| 亚洲精品视频免费看| Jizz国产色系免费| 欧美三级不卡在线观看视频| 国产乱人视频免费观看| 天天躁狠狠躁| 国产免费久久精品99re不卡| 免费看av在线网站网址| 欧美精品xx| 日日拍夜夜嗷嗷叫国产| 亚洲乱码在线播放| 色天堂无毒不卡| 亚洲香蕉在线| 91九色最新地址| 国内精品久久久久久久久久影视| 久久这里只有精品66| 欧美笫一页| 天天综合网色| 日韩av无码精品专区| av天堂最新版在线| 国产综合日韩另类一区二区| 视频在线观看一区二区| 日本黄色a视频| 国产亚洲第一页| 日本免费一区视频| 在线99视频|