單片機與外圍設備,單片機與單片機之間進行通信,通俗點說就是數據傳輸,數據傳輸的方式有多種,我們經常用到的就有串口通信、IIC通信、RS232,485,CAN總線等等。目前在中小學實驗室中,學生們操作開源硬件,用到的通信方式以IIC,串口通信居多。今天咱們就先來聊聊串口通信。
單片機的CPU和外界通信時采用的是并行模式,為什么采用并行模式?大家只要稍微一思考就能想出答案。并行通信指的是數據(以8位為基數)在傳輸時一次同時發送8個位,打個比方,這就像8個人同時去打水,每人提一個水桶,那怎樣才能在最短的時間內將8個水桶裝滿水呢?那當然是用8個水龍頭同時為8個水桶裝水,每個水龍頭裝一個桶,8個水龍頭相互之間各不影響。單片機的接口與外部設備進行通信時則是采用串行通信模式,所謂串行通信模式,就是數據按照順序一位一位的傳輸,數據的傳輸具有時間上的先后順序。同樣打個比方,8個人去提水,只有一個水龍頭,這8個人就要一個一個排隊,裝滿一個水桶再裝下一個水桶。很顯然,并行通信比串行通信速度更快。
采用并行通信,由于在同一時間內需要同時發送或接收8個位的數據,每個數據占據一個數據位,就需要8條數據線來進行數據傳送與接收,在提高傳輸速度的同時犧牲了硬件資源;而采用串行通信,數據是一個位一個位的按順序發送或接收,那就只需要兩條數據線就夠了,一條用于發送數據,一條用于接收數據。數據傳輸的速度比不上并行通信,但是節省了大量的硬件資源。
至此,也許你已經對串口通信有了初步認識,但是,還沒結束。我們在應用串口通信時還會遇到一些專業術語知識,下面我再給大家簡單介紹一下:
1、串口連接。單片機進行串口通信時總是要求實現數據的雙向傳輸,即發送數據和接收數據。在我們的單片機上你會找到串口通信接口,TXD(Transmit Data)數據發送端口和RXD(Receive Data)數據接收端口。單片機在進行串行通信連接時,一方的TX數據發送端要接另一方的RX數據接收端;RX數據接收端接另一方的TX數據發送端。即你發我收,我發你收。當然還要為單片機提供電源,這個就不用多說了吧!
2、波特率(bps)。bits per second,比特/秒。也叫做比特率,只是音譯上的區別而已。它反應的是每秒進行通訊的位數。我們經常看到電腦網絡連接速度XXMbps,即是指每秒鐘處理數據的個數為XX兆位。
3、數據模式。這里就要為大家介紹下數據位、停止位、校驗位的概念。
數據位是衡量通信中實際數據位的參數。當計算機發送一個信息包時,實際的數據不一定全是8位的,標準的值是5、6、7和8位。究竟是幾位取決于實際傳送的信息。我們都知道一個字節是8個位。標準的ASCII碼是0~127(7位)。而擴展的ASCII碼則是0~255(8位)。如果數據使用標準 ASCII碼,那么每個數據包就是7個數據位。每個數據包是指一個字節,包括開始/停止位,數據位和校驗位。由于實際數據位取決于通信協議的選取,術語“包”指任何通信的情況。
停止位用于表示一個包的最后一位。典型的值為1,1.5和2位。由于數據是在傳輸線上定時的,并且每一個設備有其自己的時鐘,很可能在通信中兩臺設備間出現了小小的時差,導致不同步。因此停止位不僅僅是表示傳輸的結束,它還提供計算機校正時鐘同步的機會。停止位的位數越多,時鐘校正的程度越大,數據傳輸率同時也越慢。
檢驗位是串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。也可以沒有校驗位。對于偶和奇校驗的情況,串口會設置校驗位(數據位后面的一位),用一個值確保傳輸的數據有偶數個或者奇數個邏輯1。例如,如果數據是011,那么對于偶校驗,校驗位為0,保證邏輯1的位數是偶數個。如果是奇校驗,校驗位為1,這樣就有3個邏輯1位。高位和低位不是真正的檢查數據,簡單置位邏輯高或者邏輯低校驗。這樣使得接收設備能夠知道一個位的狀態,判斷通信是否受到干擾或者傳輸和接收數據是否同步。
一般在默認的情況下為“8N1”模式,即8位數據位,無(None)校驗,1位停止位。
相信通過以上介紹,你已經對串口通信又有了更深的理解。真正掌握串口通信原理還需要在實踐中不斷探索。
編輯:hfy
-
cpu
+關注
關注
68文章
10858瀏覽量
211644 -
串口通信
+關注
關注
34文章
1624瀏覽量
55516 -
并行通信
+關注
關注
1文章
31瀏覽量
10824
發布評論請先 登錄
相關推薦
評論