一種基于C8051F310的UART擴(kuò)展實現(xiàn)
引言
本文引用地址:http://cafeforensic.com/article/109142.htmUART數(shù)據(jù)發(fā)送協(xié)議作為一種簡單的數(shù)據(jù)發(fā)送協(xié)議,被大量的使用在當(dāng)前各種數(shù)字外設(shè)的數(shù)據(jù)傳輸上。但是現(xiàn)在的PC機(jī)存在無UART接口或接口較少的問題,當(dāng)需要利用PC機(jī)對于多個數(shù)字設(shè)備同時處理問題時,就需要在PC機(jī)上進(jìn)行UART擴(kuò)展,這類問題在筆記本PC上尤為突出。通常這種問題的解決方法有以下幾種方法:(1)利用USB接口通過相應(yīng)的轉(zhuǎn)換設(shè)備進(jìn)行轉(zhuǎn)換。(2)利用PCI總線轉(zhuǎn)換卡獲得多個UART接口的擴(kuò)展。前者優(yōu)點在于實現(xiàn)簡單設(shè)備,成本低。后者優(yōu)點在于可以實現(xiàn)多個接口擴(kuò)展且功能完善。但在實際使用中發(fā)現(xiàn)兩者都存在一個共同的問題,即利用擴(kuò)展獲得UART接口其工作性能不夠穩(wěn)定,且存在不能完全實現(xiàn)多個UART接口的實時通訊。
為解決上述硬件方法在工程實現(xiàn)存在的不足,本文針對項目實際需要提出了一種利用C8051F310單片機(jī)實現(xiàn)多UART接口擴(kuò)展方法。通過單片機(jī)作為數(shù)據(jù)收發(fā)的中繼器,實現(xiàn)對于多個UART采集的需要。
UART數(shù)據(jù)發(fā)送
8位UART數(shù)據(jù)傳輸主要利用RX,TX信號線實現(xiàn)數(shù)據(jù)的雙向傳輸(如圖1)。
當(dāng)數(shù)據(jù)接收時,數(shù)據(jù)線RX首先處于接收準(zhǔn)備狀態(tài)即RX呈高電平,根據(jù)UART數(shù)據(jù)發(fā)送協(xié)議,如果RX線有數(shù)據(jù)接收時,RX線被置為低電平,接收起始位,在起始位后是為數(shù)據(jù)位,當(dāng)最后一幀數(shù)據(jù)接收完畢后,產(chǎn)生終止,終止位的作用為將RX線電平置高,是RX線處于等待狀態(tài)。
發(fā)送通過對于TX線上信號電平的操作實現(xiàn)對于數(shù)據(jù)的發(fā)送,發(fā)送初始狀態(tài)下TX線處于高電平,當(dāng)啟動發(fā)送后將TX線電平置低產(chǎn)生起始位,在一個波特率時鐘周期后將開始發(fā)送數(shù)據(jù),數(shù)據(jù)發(fā)送完畢后重新將TX電平置高使發(fā)送機(jī)處于等待狀態(tài)。
單個UART實現(xiàn)方法
本文利用C8051F310單片機(jī)作為軟件UART實現(xiàn)的平臺,主要方法是通過單片機(jī)的定時器產(chǎn)生波特率,根據(jù)波特率確定的位時間定時讀取(或發(fā)送)位數(shù)據(jù)信號,從而模擬了硬件UART的工作過程。具體的實現(xiàn)方法如下所述。
(1)硬件連接
在UART的軟件實現(xiàn)中主要是利用單片機(jī)模擬硬件UART的發(fā)送過程,因此我們利用C8051F310單片機(jī)中定時器T0工作的雙八位定時模式用于產(chǎn)生波特率,PC機(jī)A0工作在邊沿捕捉狀態(tài)以捕捉SW_RX端口的電平變化產(chǎn)生,判斷數(shù)據(jù)接收的初始和終止。具體的硬件連接如圖2。
評論