天天看點

RS232/485、UART及波特率相關

波特率描述了單片機或計算機在序列槽通信時的速率。如每秒鐘傳送960個字元,而每個字元格式包含10位(1個起始位,1個停止位,8個資料位),這時的波特率為960Bd,比特率為10位*960個/秒=9600bps。又比如每秒鐘傳送960個二進制位,這時的波特率為960Bd,比特率也是960bps。

波特率,可以通俗的了解為一個裝置在一秒鐘内發送(或接收)了多少碼元的資料。它是對符号傳輸速率的一種度量,1波特即指每秒傳輸1個碼元符号(通過不同的調制方式,可以在一個碼元符号上負載多個bit位資訊),1比特每秒是指每秒傳輸1比特(bit)。

解決波特率轉化的途徑有兩種。一是用單片機,接收時設定為跟上位PC機一緻的波特率進行接收。發送時再設定為跟下位系統相同的波特率發送資料;二是用FPGA,利用VHDL設計出異步串行通信電路,直接接收PC 機的資料,自行轉化為另一種波特率的資料再發送出去。

從某種意義上,可以說,線路上存在的僅僅是電流,RS232/RS485規定了這些電流在什麼樣的線路上流動和流動的樣式;在UART那裡,電流才被解釋群組裝成資料并變成CPU可直接讀寫的形式。

EIA-RS-232C對電氣特性、邏輯電平和各種信号線功能都作了規定。

在TxD和RxD上:

邏輯1(MARK)=-3V~-15V

邏輯0(SPACE)=+3~+15V

在RTS、CTS、DSR、DTR和DCD等控制線上:

信号有效(接通,ON狀态,正電壓)=+3V~+15V

信号無效(斷開,OFF狀态,負電壓)=-3V~-15V

RS-485的電氣特性:

邏輯“0”以兩線間的電壓差為+(2—6)V表示;

邏輯“1”以兩線間的電壓差為-(2—6)V表示。

接口信号電平比RS-232降低了,就不易損壞接口電路的晶片,且該電平與TTL電平相容,可友善與TTL電路連接配接。RS-485接口是采用平衡驅動器和差分接收器的組合,抗共模幹擾能力增強,即抗噪聲幹擾性好。資料最高傳輸速率為10Mbps。因為RS485接口組成的半雙工網絡,一般隻需二根連線(一般叫AB線),是以RS485接口均采用屏蔽雙絞線傳輸。

參考資料:UART和RS232/RS485的關系是什麼?

http://www.360doc.com/content/13/1119/18/13253385_330564821.shtml

說了這麼多,其實筆者,隻想弄明白一個問題,那就是Xilinx FPGA中的序列槽波特率支援動态修改嗎,在此過程中了解了一些關于波特率和UART的知識,特此分享給大家。

RS232/485、UART及波特率相關

UART(Universal AsynchronousReceiver/Transmitter,通用異步收發器)是用于控制CPU與串行裝置通信的晶片。常見UART主要有INS8250,PC16450和PCI6550,其中16550發送和接收都帶有16 B的FIFO,為協調發送、接收端的速率比對提供了更大的緩沖餘地,同時也可以提高CPU的使用效率,進而提高系統的整體性能。

UART16550的基本結構由CPU接口子產品、波特率發生器、FIFO控制器、發送/接收FIFO和發送/接收子產品共7個部分組成。

CPU通過UART的CPU接口子產品配置整個UART,波特率發生器在CPU寫入初始值後産生需要的波特率,控制發送和接收子產品在設定的波特率下工作。CPU通過接口子產品向發送FIFO内寫入需要發送的8位資料,同時發送子產品開始讀取FIFO中的資料,并加入起始位、奇偶校驗位和停止位後以串行發送的方式傳輸給串行接收裝置。接收子產品時刻監視串行輸入端口,發現有資料發送來的時候馬上啟動接收子產品開始接收資料并有效的判斷出奇偶校驗位來檢測資料的正确性,最後把剩下的8位資料放入接收FIFO,并通知CPU有資料進來進行接收。

在使用UART16550前,CPU必須要對控制寄存器進行配置,包括波特率、資料位數、奇偶校驗、停止位位數及FIFO的控制等。這也是16550差別于一般UART的具有可程式設計的特點。

UARTl6550在可程式設計邏輯器件FPGA上的實作,可以友善地用序列槽協定與PC機進行串行通信,而且擴充了闆級系統的接口功能。應用在可程式設計器件FPGA内部,可以很大程度地減少電路闆的使用面積,并提高系統的穩定性和可程式設計性。

繼續閱讀