什么是串口通信協(xié)議?它主要有哪些收發(fā)過程?
本文中,小編將對(duì)通信協(xié)議串口通信協(xié)議予以介紹,如果你想對(duì)它的詳細(xì)情況有所認(rèn)識(shí),或者想要增進(jìn)對(duì)它的了解程度,不妨請(qǐng)看以下內(nèi)容哦。
一、串口通信協(xié)議
串口是顯控設(shè)備與信號(hào)處理板之間通信的主要接口,也是顯控設(shè)備與其他設(shè)備、設(shè)備與設(shè)備之間的協(xié)議數(shù)據(jù)幀通信傳輸?shù)闹匾涌?。串口通信指串口按?bit)發(fā)送和接收字節(jié)。盡管比特字節(jié)(byte)的串行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時(shí)用另一根線接收數(shù)據(jù)。串口通信協(xié)議是指規(guī)定了數(shù)據(jù)包的內(nèi)容,內(nèi)容包含了起始位、主體數(shù)據(jù)、校驗(yàn)位及停止位,雙方需要約定一致的數(shù)據(jù)包格式才能正常收發(fā)數(shù)據(jù)的有關(guān)規(guī)范。串口通信協(xié)議是基于串口使得通信雙方能夠相互溝通信息的一種約定,其定義了雙方遵循的協(xié)議數(shù)據(jù)幀格式和其傳輸方式。 在串口通信中,常用的協(xié)議包括RS-232、RS-422和RS-485。
串口在嵌入式系統(tǒng)當(dāng)中是一類重要的數(shù)據(jù)通信接口,其本質(zhì)功能是作為 CPU 和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從 CPU 經(jīng)過串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位;在接收數(shù)據(jù)時(shí),串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出資源申請(qǐng)要求(打開串口),通信完成后必須釋放資源(關(guān)閉串口)。典型地,串口用于 ASCII 碼字符的傳輸。通信使用3根線完成:(1)地線,(2)發(fā)送數(shù)據(jù)線,(3)接收數(shù)據(jù)線。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗(yàn)。對(duì)于兩個(gè)進(jìn)行通行的端口,這些參數(shù)必須匹配:波特率是一個(gè)衡量通信速度的參數(shù),它表示每秒鐘傳送的 bit 的個(gè)數(shù);數(shù)據(jù)位是衡量通信中實(shí)際數(shù)據(jù)位的參數(shù),當(dāng)計(jì)算機(jī)發(fā)送一個(gè)信息包,標(biāo)準(zhǔn)的值是 5,7 和 8 位。如何設(shè)置取決于你的需求;停止位用于表示單個(gè)包的最后一位,典型的值為 1,1.5和 2 位,停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計(jì)算機(jī)校正時(shí)鐘同步的機(jī)會(huì);奇偶校驗(yàn)位是串口通信中一種簡(jiǎn)單的檢錯(cuò)方式,有四種檢錯(cuò)方式——偶、奇、高和低,也可以沒有校驗(yàn)位。
二、串口通信協(xié)議收發(fā)過程
在異步通信中,接收端以接收時(shí)鐘和波特率因子決定每一位的時(shí)間長(zhǎng)度。下面以波特率因:等于16(接收時(shí)鐘每16個(gè)時(shí)鐘周期使接收移位寄存器移位一次)為例來進(jìn)行說明:
(1)開始通信,信號(hào)線為空閑 邏輯1),當(dāng)檢測(cè)到由1到0的跳變時(shí),開始對(duì)接收時(shí)鐘計(jì)
(2)當(dāng)計(jì)到8個(gè)時(shí)鐘的時(shí)候,對(duì)輸入信號(hào)進(jìn)行檢測(cè),若仍然為低電平,則確認(rèn)這是起始位而不是干擾信號(hào)(3)接收端檢測(cè)到起始位后,隔16個(gè)接收時(shí)鐘對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為DO立數(shù)據(jù)。
(4)再隔16個(gè)接收時(shí)鐘,對(duì)輸入信號(hào)檢測(cè)一次,把對(duì)應(yīng)的值作為D1位數(shù)據(jù),直到全部數(shù)居位都輸入。
(5) 檢驗(yàn)奇偶檢驗(yàn)位,以保證數(shù)據(jù)的正確性
(6)接收到規(guī)定的數(shù)據(jù)位個(gè)數(shù)和校驗(yàn)位之后,通信接口電路希望收到停止位 (邏輯1)此時(shí)未收到邏輯1,說明出現(xiàn)了錯(cuò)誤,在狀態(tài)寄存器中置”幀錯(cuò)誤”標(biāo)志;若沒有錯(cuò)誤,對(duì)全部數(shù)據(jù)位進(jìn)行奇偶校驗(yàn),無校驗(yàn)錯(cuò)時(shí),把數(shù)據(jù)位從移位寄存器中取出送至數(shù)據(jù)輸入寄存器,若驗(yàn)錯(cuò),在狀態(tài)寄存器中置”奇偶錯(cuò)”標(biāo)志(7) 本信息全部接收完,把線路上出現(xiàn)的高電平作為空閑位
(8)當(dāng)信號(hào)再次變?yōu)榈蜁r(shí),開始進(jìn)入下一幀的檢測(cè)。
以上就是異步通信中數(shù)據(jù)發(fā)送和接收的全過程了。
三、串口通信規(guī)定參數(shù)
波特率:
波特率表示信息傳送的速率,是計(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é)束。
以上便是小編此次帶來的有關(guān)串口通信協(xié)議的全部?jī)?nèi)容,十分感謝大家的耐心閱讀,想要了解更多相關(guān)內(nèi)容,或者更多精彩內(nèi)容,請(qǐng)一定關(guān)注我們網(wǎng)站哦。