精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

串行通信介紹

CHANBAEK ? 來源:IOput ? 作者:Bruno ? 2023-03-21 11:45 ? 次閱讀

串行通信 Serial Communication

介紹

嵌入式電子產品全部是關于互連電路(處理器或其他集成電路)以創建共生系統。 為了讓這些單獨的電路交換他們的信息,他們必須共享一個通用的通信協議。 已經定義了數百種通信協議來實現這種數據交換,并且通常每種協議都可以分為兩類:并行或串行。

并行與串行

并行接口同時傳輸多個位。 他們通常需要數據總線 - 通過八根,十六根或更多的電線進行傳輸。 數據以巨大的1和0的巨大沖擊波傳輸。

wKgaomQZKDGAMocsAACRvXkoAts455.jpg

一個8位數據總線,由一個時鐘控制,每個時鐘脈沖發送一個字節。 使用9根導線。

串行接口每次只傳輸一個數據。 這些接口可以在一根電線上工作,通常不會超過四根。

wKgZomQZKDGAFxItAABgSJC4HEQ774.jpg

串行接口示例,每個時鐘脈沖發送一位。 只需要2根電線!

將兩個接口想象成一串汽車:一個并行接口將是8+車道的大型高速公路,而串行接口更像是一條雙線農村鄉村公路。 在一段時間內,大型高速公路可能會讓更多的人到達目的地,但是這個雙向農村地區的服務宗旨和成本只是建立資金的一小部分。

并行通信當然有其好處。 它快速,簡單并且相對容易實施。 但它需要更多的輸入/輸出(I / O)線。 如果你曾經將一個項目從一個基本的Arduino Uno移動到一個Mega,那么你就知道微處理器上的I / O線可能很珍貴,而且很少。 所以,我們經常選擇串行通信,犧牲潛在的引腳傳輸速度。

異步串行

多年來,已經制作了數十種串行協議來滿足嵌入式系統的特殊需求。 USB(通用串行總線)和以太網是幾個更為人熟知的計算串行接口。其他非常常見的串行接口包括SPI,I2C和今天要討論的串行標準。每個串行接口都可以分為兩組:同步或異步。

同步串行接口總是將其數據線與時鐘信號配對,因此同步串行總線上的所有器件共享一個公共時鐘。這使得更簡單,通常更快的串行傳輸,但它也需要通信設備之間至少一個額外的電線。同步接口的例子包括SPI和I2C。

異步意味著數據在沒有外部時鐘信號支持的情況下傳輸。這種傳輸方式非常適合最小化所需的線路和I / O引腳,但這確實意味著我們需要付出一些額外的努力來可靠地傳輸和接收數據。這里討論的串行協議是異步傳輸的最常見形式。實際上,這是很常見的,當大多數人說“串行”時,他們正在談論這個協議。

無時鐘串行協議廣泛用于嵌入式電子產品中。

串行規則

異步串行協議有許多內置的規則機制,這些機制有助于確保健壯且無錯誤的數據傳輸。這些機制,我們用來避開外部時鐘信號,是:

數據位,

同步比特,

奇偶校驗位,

和波特率。

通過各種各樣的信號機制,您將發現沒有一種方法可以串行發送數據。該協議是高度可配置的。關鍵部分是確保串行總線上的兩個設備都配置為使用完全相同的協議。

波特率

波特率指定通過串行線路發送數據的速度。它通常以每秒比特數(bps)為單位表示。如果反轉波特率,則可以發現傳輸單個位需要多長時間。此值決定發送器將串行線路保持高/低電平的時間或接收設備采樣線路的時間。

波特率可以是任何合理的值。唯一的要求是兩臺設備的運行速度相同。最常見的波特率之一,特別是對于速度不重要的簡單工具,其波特率為9600 bps。其他“標準”波特率分別為1200,2400,4800,19200,38400,57600和115200。

波特率越高,發送/接收的數據越快,但數據傳輸的速度有限。你通??床坏剿俣瘸^115200--這對于大多數微控制器來說速度很快。太高了,你會在接收端看到錯誤,因為時鐘和采樣周期不能跟上。

構建數據

每個傳輸的數據塊(通常是一個字節)實際上是以一個數據包或一個比特幀發送的。 通過將同步和奇偶校驗位添加到我們的數據來創建幀。

wKgZomQZKDGAdP_aAAA6Z6Qjx58763.jpg

一個串行幀。 幀中的一些符號具有可配置的位大小。

我們來詳細介紹這些框架的每個部分。

數據塊

每個串行數據包的真正價值在于它攜帶的數據。 我們不明確地稱這塊數據為塊,因為它的大小沒有具體說明。 每個數據包中的數據量可以設置為5到9位。 當然,標準數據大小是您的基本8位字節,但其他大小有其用途。 7位數據塊可以比8更有效,特別是如果您只是傳輸7位ASCII字符。

在達成字符長度之后,這兩種串行設備也必須同意其數據的字節順序。 數據最重要的位(msb)發送到最少,反之亦然? 如果沒有另外說明,通常可以假設數據首先傳輸最低有效位(LSB)。

同步位

同步位是每個數據塊傳輸的兩個或三個特殊位。 它們是起始位和停止位。 與其名稱一樣,這些位標記數據包的開始和結束。 始終只有一個起始位,但停止位的數量可以配置為一個或兩個(盡管它通常保持為一個)。

起始位總是由從1到0的空閑數據線指示,而停止位將通過將線保持為1轉換回空閑狀態。

奇偶位

奇偶校驗是一種非常簡單的低級錯誤檢查。 它有兩種:奇數或偶數。 為了產生奇偶校驗位,數據字節的所有5-9位被相加,并且和的均勻性決定該位是否被設置。 例如,假設奇偶校驗設置為偶數,并將其添加到數據字節(如奇數個1(5))的數據字節中,則奇偶校驗位將設置為1.相反,如果奇偶校驗模式設置為奇數 ,奇偶校驗位將為0。

奇偶校驗是可選的,不是非常廣泛的使用。 它可能有助于跨嘈雜的媒體進行傳輸,但它也會減慢數據傳輸的速度,并要求發送者和接收者都執行錯誤處理(通常,必須重新發送失敗的接收數據)。

9600 8N1(一個例子)

9600 8N1 - 9600波特,8個數據位,無奇偶校驗和1個停止位 - 是最常用的串行協議之一。 那么,一個或兩個9600 8N1數據會是什么樣子呢? 舉個例子吧!

傳輸ASCII字符'O'和'K'的設備必須創建兩個數據包。 O(大寫)的ASCII值為79,分解為8位二進制值01001111,而K的二進制值為01001011.剩下的就是追加同步位。

沒有具體說明,但是假定數據首先傳輸到最低位。 注意兩個字節在從右到左讀取時是如何發送的。

wKgaomQZKDGAWH4DAAB0hWdbIUM586.jpg

由于我們以9600bps的速度傳輸數據,因此將每個比特位保持在高位或低位的時間為每比特1 /(9600bps)或104μs。

對于發送的每個字節的數據,實際上有10位被發送:一個起始位,8個數據位和一個停止位。 所以,在9600bps時,我們實際上是每秒發送9600比特或每秒960(9600/10)字節。

現在您已經知道如何構建串行數據包了,我們可以轉到硬件部分。 在那里我們將看到1和0以及波特率如何在信號電平上實現!

布線和硬件

串行總線只包含兩條線 - 一條用于發送數據,另一條用于接收數據。 因此,串行設備應該有兩個串行引腳:接收器,RX和發送器TX。

wKgZomQZKDGAJRkkAACBUUdZuLg327.jpg

請注意,這些RX和TX標簽是與設備本身相關的。所以來自一個設備的RX應該到達另一個設備的TX,反之亦然。如果您習慣將VCC連接到VCC,GND連接到GND,MOSI連接到MOSI等,這很奇怪,但是如果您仔細想想,這很有意義。發射機應該與接收機通話,而不是與其他發射機通話。

兩個設備都可以發送和接收數據的串行接口是全雙工或半雙工。全雙工意味著兩個設備可以同時發送和接收。半雙工通信意味著串行設備必須輪流發送和接收。

一些串行總線可能只能通過發送和接收設備之間的單個連接而脫離。例如,我們的支持串行的液晶顯示屏都是耳朵,并且沒有任何數據可以傳輸回控制設備。這就是所謂的單工串行通信。所有你需要的是從主設備的TX到聽眾的RX線路的單線。

硬件實現

我們已經從概念方面介紹了異步串行。 我們知道我們需要哪些導線。 但是,串行通信如何在信號級實際實現? 實際上,它有多種方式。 串行信號有各種標準。 我們來看幾個更流行的串行:邏輯電平(TTL)和RS-232硬件實現。

微控制器和其他低電平集成電路進行串行通信時,他們通常以TTL(晶體管 - 晶體管邏輯)電平進行通信。 TTL串行信號存在于微控制器的電壓供應范圍之間 - 通常為0V至3.3V或5V。 處于VCC電平(3.3V,5V等)的信號表示空閑線路,值為1或停止位。 0V(GND)信號表示一個起始位或一個數值為0的數據位。

wKgaomQZKDGAWIVvAAAmjsKUAF8679.jpg

RS-232可以在一些更古老的計算機和外圍設備上找到,就像TTL系列的頭部翻轉一樣。 RS-232信號通常介于-13V和13V之間,但該規范允許+/- 3V至+/- 25V之間的任何值。 在這些信號上,低電壓(-5V,-13V等)表示空閑線路,停止位或值為1的數據位。高RS-232信號表示啟動位或0- 值數據位。 這與TTL系列相反。

wKgaomQZKDGACokXAAAyYWVb8h0877.jpg

在兩種串行信號標準之間,TTL更容易實現到嵌入式電路中。 然而,低電壓水平在長傳輸線上更容易損失。 RS-232或更復雜的標準如RS-485,更適合長距離串行傳輸。

將兩個串行設備連接在一起時,確保其信號電壓匹配很重要。 您不能直接將TTL串行設備與RS-232總線連接。 你必須改變這些信號!

接下來,我們將探討微控制器用于在串行接口上并行總線上轉換數據的工具。UART!

UART

這個串行謎題的最后一部分是找到一些東西來創建串行數據包并控制這些物理硬件線路。 輸入UART。

通用異步接收器/發送器(UART)是負責實現串行通信的電路塊。 本質上,UART充當并行和串行接口之間的媒介。 在UART的一端是一條八線左右的數據線(加上一些控制引腳),另一端是兩條串行線 - RX和TX。

wKgaomQZKDGAGjW-AABxeY66ghU902.jpg

超簡化的UART接口。 一端并行,另一端串行。

UART確實作為獨立IC存在,但它們更常見于微控制器內部。 你必須檢查你的微控制器的數據表,看它是否有任何UART。 有些沒有,有的有一個,有的有很多。 例如,基于“老忠實”ATmega328的Arduino Uno只有一個UART,而基于ATmega2560的Arduino Mega則有四個UART。

由于首字母縮寫詞中的R和T指示,UART負責發送和接收串行數據。 在發送端,UART必須創建數據包(附加同步和奇偶校驗位),并將該數據包以精確定時(根據設置的波特率)從TX線路發出。 在接收端,UART必須根據預期的波特率對RX線進行采樣,挑出同步位并將數據吐出。

wKgZomQZKDGAQQvrAACGAhYUos0971.jpg

內部UART框圖(由Exar ST16C550數據表提供)

更高級的UART可能會將其接收到的數據放入緩沖區,直到微控制器獲得它。 UART通常會以先進先出(FIFO)的方式釋放其緩沖數據。 緩沖區可以小至幾位,或者可以大至數千字節。

軟件UART

如果一個微控制器沒有UART(或者沒有足夠的),串行接口可能會被比特沖突 - 直接由處理器控制。 這就是SoftwareSerial所采用的Arduino庫。 比特沖突是處理器密集型的,通常不像UART那么精確,但它在一個緊湊的環境中工作。

常見的陷阱

這就是關于串行通信的一切。 留下幾個常見的錯誤,這對任何經驗級別的工程師來說都很容易:

RX到TX,TX到RX

似乎很簡單。 盡可能多地希望他們的標簽匹配,請務必跨越串行設備之間的RX和TX線路。

FTDI Basic編程Pro Mini。 注意RX和TX交叉!

波特率不匹配

波特率就像串行通信的語言。如果兩個設備不能以相同的速度說話,數據可能會被誤解,或者完全被忽略。如果所有接收設備在接收線上看到的都是垃圾,請檢查確保波特率匹配。

wKgZomQZKDGAWd1fAAEE0wUq594720.jpg

數據以9600 bps傳輸,但以19200 bps傳輸。 波特不匹配=垃圾。

主線爭奪

串行通信旨在允許只有兩個設備通過一條串行總線進行通信。 如果多個設備試圖在同一條串行線路上傳輸,則可能會遇到總線爭用。 敦敦敦...

例如,如果您將GPS模塊連接至Arduino,則可以將該模塊的TX線連接至Arduino的RX線。 但是,Arduino RX引腳已連接到USB至串行轉換器的TX引腳,無論何時您編程Arduino或使用串行監視器時都會使用該引腳。 這就設定了GPS模塊和FTDI芯片同時嘗試在同一條線路上傳輸的潛在情況。

wKgZomQZKDGAAxhqAABVmHWO5-U675.jpg

兩個發送器發送給一個接收器會導致總線爭用的可能性。

試圖在同一行上同時傳輸數據的兩臺設備很糟糕! 在“最好”的情況下,這兩款設備都不會發送數據。 在最壞的情況下,這兩款器件的發射線路都工作(盡管這很罕見,并且通常受到保護)。

將多個接收設備連接到單個傳輸設備可能是安全的。 沒有真正的規格,但它會起作用。 例如,如果將串行LCD連接到Arduino,最簡單的方法可能是將LCD模塊的RX線連接到Arduino的TX線。 Arduino的TX已連接到USB編程器的RX線,但仍然只剩下一個設備控制傳輸線。

wKgaomQZKDGAUBQ0AABr6uESjj0014.jpg

像這樣分配TX線路從固件的角度來看仍然是危險的,因為你不能挑選哪個設備聽到什么傳輸。 液晶顯示器最終會收到不適合它的數據,這可能會命令它進入未知狀態。

一般情況下 - 一個串行總線,兩個串行設備!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 集成電路
    +關注

    關注

    5367

    文章

    11162

    瀏覽量

    358379
  • 通信協議
    +關注

    關注

    28

    文章

    810

    瀏覽量

    40120
  • 并行接口
    +關注

    關注

    0

    文章

    31

    瀏覽量

    15232
  • 總線
    +關注

    關注

    10

    文章

    2817

    瀏覽量

    87707
  • 串行通信
    +關注

    關注

    4

    文章

    555

    瀏覽量

    35165
收藏 人收藏

    評論

    相關推薦

    介紹一下串行通信的原理

    和并行兩種方法,各有優缺點,也不再這里贅述了,使用到的是串行通信的方法,簡單介紹一下串行通信的原理,上圖兩個設備,一根互傳線,每次傳一組數據
    發表于 11-17 07:23

    什么是串行通信

    11.13.5.STC51的串行通信相關寄存器21.13.6.STC51的串行通信實戰11.13.7.STC51的串行
    發表于 11-22 08:13

    什么是并行通信串行通信

    基礎知識介紹什么是并行通信串行通信串行通信串行
    發表于 01-13 06:09

    基于AT89C51應用系統的串行通信設計

    基于AT89C51應用系統的串行通信設計:介紹了基于AT89C51應用系統中的串行通信軟硬件設計方法和實現過程,在基于紅外成像技術的電力設備
    發表于 11-13 23:06 ?94次下載

    實現FPGA與PC的串行通信

    摘    要:本文主要介紹了基于FPGA技術實現與PC串行通信的過程,給出了各個模塊的具體實現方法,分析了實現結果,驗證了串行
    發表于 03-24 13:31 ?4766次閱讀
    實現FPGA與PC的<b class='flag-5'>串行</b><b class='flag-5'>通信</b>

    基于MATLAB的MCU串行通信

    本文介紹了利用MATLAB儀器實現MCU串行通信的方法:
    發表于 02-20 16:41 ?56次下載
    基于MATLAB的MCU<b class='flag-5'>串行</b><b class='flag-5'>通信</b>

    點對點串行通信介紹

    新編單片機原理與應用實驗第9章,喜歡的朋友可以下載來學習。
    發表于 01-07 17:12 ?0次下載

    多機串行通信介紹

    新編單片機原理與應用實驗第10章,喜歡的朋友可以下載來學習。
    發表于 01-07 17:11 ?0次下載

    計算機串行通信基礎介紹

    51單片機串口通信。希望大家能夠好好學習,我這里還有好多資料
    發表于 01-19 17:41 ?0次下載

    一文了解串行通信的特點及優缺點

    本文首先介紹串行通信的分類,其次介紹串行通信的的特點及優缺點,最后闡述了
    發表于 04-24 09:32 ?2.3w次閱讀

    串行通信介紹串行通信的應用說明

    串行是與并行想對應的,并行通信是指數據的各位同時被傳送。串行通信是將要傳送的數據一位位的依次順序發送。串行
    發表于 04-17 17:28 ?1次下載
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>的<b class='flag-5'>介紹</b>及<b class='flag-5'>串行</b><b class='flag-5'>通信</b>的應用說明

    51單片機——串行通信

    本文首先介紹了并行通信串行通信的概念,然后對串行通信進行詳細的
    發表于 11-22 13:51 ?35次下載
    51單片機——<b class='flag-5'>串行</b><b class='flag-5'>通信</b>

    51單片機串口通信

    串行通信基本介紹波特率通信校驗內部結構并行通信串行通信
    發表于 11-22 16:36 ?9次下載
    51單片機串口<b class='flag-5'>通信</b>篇

    51單片機筆記第一篇(串行通信一)

    51單片機筆記第一篇(串行通信一)一、串行通信介紹       
    發表于 11-23 16:22 ?0次下載
    51單片機筆記第一篇(<b class='flag-5'>串行</b><b class='flag-5'>通信</b>一)

    串行通信技術介紹

    串行通信指數據是一位一位按順序傳送的通信方式,相對于并行通信,其突出優點是只需要一對傳輸線,缺點是傳輸速度較 低。串行
    發表于 05-18 11:33 ?0次下載
    <b class='flag-5'>串行</b><b class='flag-5'>通信</b>技術<b class='flag-5'>介紹</b>