單片機串行通信全解析

1.什么是串行通信?

串行通信(英語:Serial communication)是指在計算機總線或其他數據通道上,每次傳輸一個位元數據,并連續進行以上單次過程的通信方式。與之對應的是并行通信,它在串行端口上通過一次同時傳輸若干位元數據的方式進行通信。

簡言之:串行通訊就是排成一隊走,并行就是排成一列走,如下圖

2.同步串行通信(Synchronous serial communication)和異步串行通信(Asynchronous serial communication)

1)發送端在發送串行數據的同時,提供一個時鐘信號,并按照一定的約定(例如在時鐘信號的上升沿的時候,將數據發送出去)發送數據,接收端根據發送端提供的時鐘信號,以及大家的約定,接收數據。這就是常說的同步串行通信(Synchronous serial communication),I2C、SPI等有時鐘信號的協議,都屬于這種通信方式。
2)發送端在數據發送之前和之后,通過特定形式的信號(例如START信號和STOP信號),告訴接收端,可以開始(或者停止)接收數據了。與此同時,收發兩方會約定一個數據發送的速度(就是大名鼎鼎的波特率),發送端在發送START信號之后,就按照固定的節奏發送串行數據,與此同時,接收端在收到START信號之后,也按照固定的節奏接收串行數據。這就是常說的異步串行通信(Asynchronous serial communication)。

3.單片機上常用的串行通訊接口

  • SPI:高速同步串行口。3~4線接口,收發獨立、可同步進行串行外圍設備接口,是Motorola公司推出的一種同步串行通訊方式,是一種三線同步總線,因其硬件功能很強,與SPI有關的軟件就相當簡單,使CPU有更多的時間處理其他事務。SPI通常有SCK時鐘,STB片選,DATA數據信號三個信號。 I2C通常有 SDA數據和SCL時鐘兩個信號。SPI總線真正實現了全雙工數據傳輸,SPI 有3線跟4線兩種,4線的話,就是多了一條叫SDC的線,用來告知從設備現在傳輸的是數據還是指令。這個接口較快,可以傳輸較連續的數據。SPI的速度要大于IIC,一般用在產品內部元件之間的高速數據通信上面,如大容量存儲器等。
  • UART:通用異步串行口,一般我們說的單片機上的“串口”大多是特指UART。可以全雙工通信,線數也比較少。數據是異步傳輸的,對雙方的時序要求比較嚴格,通信速度也不是很快。在多機(單片機與單片機之間)通信上面用的最多。
  • IIC:一種串行傳輸方式,三線制,網上可找到其通信協議和用法的,IIC 接口的協議里面包括設備地址信息,可以同一總線上連接多個從設備,通過應答來互通數據及命令。但是傳輸速率有限,標準模式下可達到100Kbps,快速模式下可達到400Kbps,高速模式下達到Mbps,不能實現全雙工,不適合傳輸很多的數據。
  • USB:這個肯定是很熟悉的了,幾乎每天都打交道。通用串行總線(英語:Universal Serial Bus,縮寫:USB)是連接計算機系統與外部設備的一種串口總線標準,也是一種輸入輸出接口的技術規范,被廣泛地應用于個人電腦和移動設備等信息通訊產品,并擴展至攝影器材、數字電視(機頂盒)、游戲機等其它相關領域。很多單片機上也帶有USB接口例如ST的STM32。

以上各種接口的通訊協議是不一樣的,如UART最簡單的協議是一個起始位一個終止位中間八個數據位,而USB的話通訊協議就復雜的多的多。

4.串行接口電氣標準。

TTL電平:TTL電平指的是低電平為0,高電平為1(+5V電平),大多數的單片機自帶的串口用的就是這種電平。一般用于芯片之間通信,TTL電平通信距離較短。

UART使用的是單片機自帶的電平,單片機是什么電平標準那么該單片機上的UART就是什么電平標準,例如51單片機的UART就是用的TTL電平。而這種電平是沒辦法用于遠程數據傳輸的,為了能讓串行數據能夠傳輸的更遠,我們需要更加強大的傳輸標準,于是就有了RS-232、RS-422、RS485等。

  • RS-232-C
也稱標準串口,是目前最常用的一種串行通訊接口。它是在1970年由美國電子工業協會(EIA)聯合貝爾系統、 調制解調器廠家及計算機終端生產廠家共同制定的用于串行通訊的標準。它的全名是“數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進制數據交換接口技術標準”。傳統的RS-232-C接口標準有22根線,采用標準25芯D型插頭座。自IBM PC/AT開始使用簡化了的9芯D型插座。至今25芯插頭座現代應用中已經很少采用。電腦一般有兩個串行口:COM1和COM2,9針D形接口通常在計算機后面能看到。現在有很多手機數據線或者物流接收器都采用COM口與計算機相連。
  • RS-422
為改進RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mb/s,傳輸距離延長到4000英尺(速率低于100kb/s時),并允許在一條平衡總線上連接最多10個接收器。RS- 422是一種單機發送、多機接收的單向、平衡傳輸規范,被命名為TIA/EIA-422-A標準。
  • RS-485
為擴展應用范圍,EIA又于1983年在RS-422基礎上制定了RS-485 標準,增加了多點、雙向通信能力,即允許多個發送器連接到同一條總線上,同時增加了發送器的驅動能力和沖突保護特性,擴展了總線共模范圍,后命名為 TIA/EIA-485-A標準。

下圖是一般傳輸過程:單片機匹配電平到RS-232,通過RS-232傳輸,再從RS-232匹配到TTL再給另一個單片機。

?

5.其他

各種串行通訊是可以相互轉換的,如下圖中我們最經常使用的CH340芯片就能夠把USB轉成TTL電平的UART串口通訊

?

?

參考資料:

【1】http://blog.sina.com.cn/s/blog_62dd0b350100qyey.html

【2】http://www.cnblogs.com/lucky-apple/archive/2008/07/03/1234581.html

【3】http://www.wowotech.net/basic_tech/serial_intro.html

【4】http://www.ing10bbs.com/forum.php?mod=viewthread&tid=437

?

轉載于:https://www.cnblogs.com/feipeng8848/p/6877089.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372143.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372143.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372143.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java type 類型,java中的泛型類型與Type接口

假設我們定義了一個Room的類,表示一個房間public classRoom(){}由于我們建造好房間是,不知道房間以后的用途,他可能用來住人,也有可能用來放貨物,因此需要用到泛型。但是我們可能想獲取Room這個房間里面進來的的東西的…

centos7下操作防火墻

引言 最近使用centos7系統比較頻繁,在配置服務器的時候,總是遇到能夠ping通服務器,但是就是沒有辦法訪問80端口,這個時候我的直覺告訴我,肯定是防火墻的原因,但是使用iptables卻怎么都找不到命令&#xff0…

其他團隊對本團隊評價的總結

我們小組在看了其他小組的評價后,對自己的程序有了新的看法。轉載于:https://www.cnblogs.com/bk1246788/p/6879691.html

Java:使用Fork / Join框架的Mergesort

此項的目的是顯示一個Fork / Join RecursiveAction的簡單示例,而不是過多地研究合并合并的可能優化方法,或者比使用Exkutor / Join Pool優于現有的基于Java 6的現有實現(例如ExecutorService)的相對優勢。 以下是使用Java的自上而…

php的異常處理方式,php異常處理基本方法

當一個php腳本運行時,為了防止腳本運行崩潰,亦或是當php作為webserver,為了防止php程序出錯,拋出httpcode500錯誤,我們常常需要對php程序做異常處理。今天介紹的是最基本的異常處理方法:一般而言&#xff0…

關系型數據庫的三范式

第一范式:確保每列的原子性. 如果每列(或者每個屬性)都是不可再分的最小數據單元(也稱為最小的原子單元),則滿足第一范式. 例如:顧客表(姓名、編號、地址、……)其中"地址"列還可以細分為國家、省、市、區等。第二范式:在第一范式的基礎上更進一層,目標是確保表…

vray學習筆記(3)-多維子材質是個什么東西

多維子材質是個什么東西?為什么出現這個概念? 在3dsmax官方網站,我們可以看到它的定義: The Multi/Sub-Object material lets you assign different materials at the sub-object level of your geometry. 意思是多維子材質這個概…

Hello JavaFX 2.0:命令行介紹

我從博客文章Hello JavaFX 2.0:NetBeans 7.1 beta的介紹中,從NetBeans 7.1 beta的角度看了一個無處不在的Hello World示例的簡單JavaFX版本。 在本文中,我將介紹僅使用命令行工具通過JavaFX實現的Hello World版本。 JavaFX 2.0 API文檔包括ja…

matlab空格會消失了,如何在Matlab中自動刪除保存的尾隨空格?

我有同樣的需求,并寫了一個小腳本來做一些接近的事情.將以下內容放在MATLAB desktop shortcut中.每當您單擊快捷方式按鈕時,它將從編輯器中的活動文件中刪除尾隨空格.不如在保存時自動執行它 – 你需要記住在保存之前按下按鈕 – 但差不多.測試在11b,12a和13b,但在12b也應該沒問…

object to 字符串json

1 package com.beijxing.TestMain;2 3 import com.beijxing.entity.Student;4 import com.google.gson.Gson;5 import com.google.gson.annotations.SerializedName;6 7 /** 8 * 9 * author 作者 : ywp 10 * version 創建時間:2016年10月30日 下午9:21:33 11 */ 12…

JS 對象(Object)和字符串(String)互轉

var jsObj {}; jsObj.testArray [1,2,3,4,5]; jsObj.name CSS3; jsObj.date 8 May, 2011; var str JSON.stringify(jsObj); var str1 JSON.parse(str); var str2 JSON.stringify(str1);alert(str);alert(str1); alert(str2);對象拷貝:var newObj JSON…

php 后退按鈕事件,php – 后退按鈕的會話問題

我在php文件中有這個代碼,它包含在我要共享的所有頁面中并保護我的頁面.session_name("login");session_start();if (!isset($_SESSION[UserId])) {if(!header("Location: https://subdomain.mywebsite.com/")){ die("Unauthorized access"); }}…

異常:java lang AbstractMethodError

通常在嘗試調用抽象方法時拋出此java.lang.AbstractMethodError。通常,此錯誤是在編譯時本身識別的,如果在運行時拋出此錯誤,則該類必須不兼容(與先前存在的類不兼容) )更改。因此,它是Incompat…

05.while循環的練習

練習1:namespace _05.while循環練習01{ class Program { static void Main(string[] args) { //打印100次"努力學習.net技術" int i 0; while (i < 100) //當i小于100就執行循環體的內容 { Console.WriteLine("{0}.努力學習.net技術",i); i; } Console…

oracle列分區,Oracle數據庫分區--實例

分區表通過對分區列進行判斷&#xff0c;把滿足不同條件的分區列對應的記錄保存在不同的分區中。一、何為分區表什么情況下會使用分區表&#xff1f;表中已有大量數據&#xff0c;或預計到表中將會保存大量的數據可以按照預期(月份、區域、dml)對表中的數據執行查詢和更新什么是…

ZK實際應用:MVVM –與ZK客戶端API一起使用

在之前的文章中&#xff0c;我們使用ZK的MVVM實現了以下功能&#xff1a; 將數據加載到表中 使用表單綁定保存數據 刪除條目并以編程方式更新視圖 ZK MVVM和ZK MVC實現方式之間的主要區別是&#xff0c;我們不直接在controller&#xff08;ViewModel&#xff09;類中訪問和操…

RPC框架Dubbo分析

1&#xff0c;背景隨著互聯網的發展&#xff0c;網站應用的規模不斷擴大&#xff0c;常規的垂直應用架構已無法應對&#xff0c;分布式服務架構以及流動計算架構勢在必行&#xff0c;亟需一個治理系統確保架構有條不紊的演進單一應用架構當網站流量很小時&#xff0c;只需一個應…

定時器、計時器。

//第一種 每一秒執行一次&#xff08;重復性&#xff09;double delayInSeconds 1.0;timer dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0));dispatch_source_set_timer(timer, DISPATCH_TIME_NO…

mybatis oracle trim,Mybatis trim標簽

trim代替where/set標簽trim是更靈活用來去處多余關鍵字的標簽&#xff0c;它可以用來實現where和set的效果。SELECT *FROM user uu.username LIKE CONCAT(CONCAT(%, #{username, jdbcTypeVARCHAR}),%)AND u.sex #{sex, jdbcTypeINTEGER}AND u.birthday #{birthday, jdbcTypeD…

自己初學時的隨筆記錄

如果富文本編輯器 jsp....文件可以找到但是就是顯示不出來&#xff0c;可能是Controller控制器中RequestMapping后邊沒有寫路徑 ---------------------------------------------------------------------------------------------------------------------------- iframe框架內…