串口通信的原理是什么?Uart串口與RS232串口有什么區(qū)別?
串口通信的原理是采用串行異步通信協(xié)議,以字符幀作為數(shù)據(jù)傳輸單位,通過串口按位依次傳輸字符幀的每個(gè)位,完成數(shù)據(jù)的傳輸。在串口通信中,字符幀由起始位、數(shù)據(jù)位、可選的校驗(yàn)位和停止位組成。起始位用于標(biāo)識(shí)字符幀的開始,占1位;數(shù)據(jù)位用于傳輸信息,可配置為5~8位;校驗(yàn)位用于校驗(yàn)數(shù)據(jù)位的正確性,可配置為奇校驗(yàn)、偶校驗(yàn)或無校驗(yàn),占1位;停止位用于標(biāo)識(shí)字符幀的結(jié)束,占1/1.5/2位。串口通信使用3根線完成傳輸:地線、發(fā)送和接收。由于串口通信是異步的,因此端口能夠在同一時(shí)間間隔內(nèi)用一根線發(fā)送數(shù)據(jù)同時(shí)在另一根線上接收數(shù)據(jù)。常用的波特率如9600、115200,指的是字符幀中數(shù)據(jù)位的傳輸速率,通信雙方需要使用相同的波特率才能正常通信。同時(shí),串口通信協(xié)議也廣泛應(yīng)用于儀器儀表設(shè)備通用的通信協(xié)議以及獲取遠(yuǎn)程采集設(shè)備的數(shù)據(jù)。
串口通信規(guī)定參數(shù)是計(jì)算機(jī)與外設(shè)設(shè)備(比如單片機(jī)、傳感器等)進(jìn)行串口通信時(shí)所必須遵循的一系列參數(shù)規(guī)定,其中包括波特率、數(shù)據(jù)位數(shù)、校驗(yàn)位和停止位等。以下是這些規(guī)定參數(shù)的詳細(xì)介紹:
波特率:
波特率表示信息傳送的速率,是計(jì)算機(jī)與外設(shè)設(shè)備進(jìn)行通信的重要參數(shù)。通俗地說,波特率描述的是單位時(shí)間內(nèi)傳輸?shù)谋忍財(cái)?shù)。波特率一般用“bps”來表示,它的單位為位/秒。串口常用的波特率有9600、115200、38400等,常用于MCU與計(jì)算機(jī)之間的通信。通信設(shè)備使用串口通信時(shí),波特率必須相同,否則會(huì)導(dǎo)致數(shù)據(jù)傳輸出錯(cuò)。
數(shù)據(jù)位數(shù):
數(shù)據(jù)位數(shù)表示接收和發(fā)送的數(shù)據(jù)字節(jié)數(shù)。一般情況下,常用的數(shù)據(jù)位數(shù)為7位或8位,而在通常的情況下默認(rèn)使用8位數(shù)據(jù)位數(shù)。數(shù)據(jù)位數(shù)的選擇取決于所傳輸?shù)臄?shù)據(jù)格式以及傳輸需要的準(zhǔn)確度和速度。
校驗(yàn)位:
校驗(yàn)位是為了保證接收到的數(shù)據(jù)的準(zhǔn)確性而設(shè)置的一個(gè)位。校驗(yàn)位主要有三種方式,分別為奇校驗(yàn)、偶校驗(yàn)和無校驗(yàn)。奇校驗(yàn)是指在數(shù)據(jù)位數(shù)上奇數(shù)的傳輸信息完成后,將其全部加起來,如果結(jié)果為奇數(shù)則校驗(yàn)位為0,否則為1。偶校驗(yàn)則是將其全部加起來,如果結(jié)果為偶數(shù),則校驗(yàn)位為0,否則為1。無校驗(yàn)是指在數(shù)據(jù)傳輸后不對(duì)數(shù)據(jù)進(jìn)行任何的校驗(yàn)位檢驗(yàn)。
停止位:
停止位指的是數(shù)據(jù)傳輸完成后發(fā)送器發(fā)送的一位信號(hào)。其目的是告訴接收器,本次數(shù)據(jù)傳輸已經(jīng)結(jié)束。例如,對(duì)于8位數(shù)據(jù)加一位停止位,停止位為1,這樣就能夠表示出本次的數(shù)據(jù)傳輸已經(jīng)結(jié)束。
UART和RS232雖然都是串行通信協(xié)議,但是在細(xì)節(jié)上存在一些差異。
UART是一種異步串行通信的方式,沒有具體的物理接口形式(硬件),只是一種電路實(shí)現(xiàn)。它使用TTL電平進(jìn)行通信,有4個(gè)引腳(VCC、GND、RX、TX),使用的是相對(duì)較低的電平標(biāo)準(zhǔn),比如0V代表0,3.3V或以上代表1。
RS232則是一種物理層的電氣接口要求,與UART不同,它有具體的接口形式(硬件)。RS232也使用串行通信方式,但它使用的是一種不同的電平標(biāo)準(zhǔn)。例如,RS232規(guī)定電壓在-3V到+3V之間表示0,在+3V到+12V之間表示1。
也就是說,盡管它們都是在兩個(gè)設(shè)備之間通過一條數(shù)據(jù)線逐比特地發(fā)送數(shù)據(jù),但UART更注重電路和信號(hào)的實(shí)現(xiàn),而RS232更關(guān)注接口和連接。
UART和RS232在信號(hào)傳輸速度方面的主要區(qū)別如下:UART是一種以固定的速率(例如1200bps,9600bps,115200bps等)進(jìn)行串行傳輸?shù)姆椒?。它每次只能傳輸一個(gè)比特位(因此被稱為串行傳輸),并且通信雙方必須以約定的通信協(xié)議和通信速率進(jìn)行通信。
而RS232接口標(biāo)準(zhǔn)由于出現(xiàn)較早,其傳輸速率較低,大約為20Kbps,傳輸距離也較短,大約為15米左右。UART和RS232在信號(hào)傳輸速度方面因不同的使用環(huán)境和要求而有區(qū)別。