大家好,我是老耿,高職青椒一枚,一直從事單片機、嵌入式、物聯(lián)網(wǎng)等課程的教學。對于高職的學生層次,同行應該都懂的,老師在課堂上教學幾乎是沒什么成就感的。正是如此,才有了借助頭條平臺尋求認同感和成就感的想法。在這里,我準備陸續(xù)把自己花了很多心思設計的教學課件分享出來,如果您正是一名單片機愛好者或是一名同行,歡迎點贊 關注,各位的支持是本人持續(xù)輸出的動力,多謝多謝!#30天學會STM32##單片機#
通信,按照傳統(tǒng)的理解就是信息的傳輸與交換。對于像STM32這樣的單片機來說,通信則與傳感器、存儲芯片、外圍控制芯片等技術(shù)緊密結(jié)合,成為整個單片機系統(tǒng)的“神經(jīng)中樞”。沒有通信,單片機所實現(xiàn)的功能僅僅局限于單片機本身,就無法通過其它設備獲得有用信息,也無法將自己產(chǎn)生的信息告訴其它設備。如果單片機通信沒處理好的話,它和外圍器件的合作程度就受到限制,最終整個系統(tǒng)也無法完成強大的功能,由此可見單片機通信技術(shù)的重要性。UART(Universal Asynchronous Receiver/Transmitter,即通用異步收發(fā)器)串行通信是單片機最常用的一種通信技術(shù),通常用于單片機和電腦之間、單片機和單片機之間、單片機與外圍器件的通信。
【學習目標】
- 知道通信基本概念的含義;
- 理解通信機制中物理層和協(xié)議層分離的理念;
- 學會配置STM32的串口功能;
- 了解printf()函數(shù)“打印”至串口的實現(xiàn)過程;
- 掌握使用串口調(diào)試軟件對單片機的調(diào)試方法。
STM32串口通信涉及的知識較多,為了不讓篇幅太長,本章打算分五個部分來講解,本文是第一部分。
一、通信的一些必備知識
1.1 并行通信與串行通信
這兩種通信方式的示意如圖1所示。并行通信一般是指使用8、16、32及64根或更多的數(shù)據(jù)線進行傳輸?shù)耐ㄓ嵎绞?。并行通信就像多個車道的公路,可以同時傳輸多個數(shù)據(jù)位的數(shù)據(jù)。串行通信是指設備之間通過少量數(shù)據(jù)信號線(一般是8根以下)、地線以及控制信號線,按數(shù)據(jù)位形式一位一位地傳輸數(shù)據(jù)的通訊方式。串行通信就像單個車道的公路,同一時刻只能傳輸一個數(shù)據(jù)位。
圖1 并行通信與串行通信示意
由于并行傳輸對同步要求較高,且隨著通訊速率的提高,信號干擾的問題會顯著影響通訊性能,現(xiàn)在隨著技術(shù)的發(fā)展,越來越多的應用場合采用高速率的串行差分傳輸。
1.2 全雙工、半雙工、單工通信
全雙工通信是指在同一時刻,兩個設備之間可以同時收發(fā)數(shù)據(jù)。就好比一個雙向車道,兩個方向上的車流互不相干。打電話就是一種全雙工通信。
半雙工通信是指兩個設備可以收發(fā)數(shù)據(jù),但不能在同一時刻進行。就像鄉(xiāng)間小道那樣,同一時刻只能讓一輛小車通過,另一方向的來車只能等待道路空出來時才能經(jīng)過。對講機就是一種半雙工通信。
單工通信是指在任何時刻都只能進行一個方向的通信,即一個固定為發(fā)送設備,另一個固定為接收設備。就像單行道,另一方向的車輛完全禁止通行。這三種通信方式的特點可以用圖2來表示。
圖2 三種通信方式示意
1.3 同步通信與異步通信
如圖3所示,在同步通信中,收發(fā)設備雙方會使用一根信號線表示時鐘信號,在時鐘信號的驅(qū)動下雙方進行協(xié)調(diào),同步數(shù)據(jù)。通訊中通常雙方會統(tǒng)一規(guī)定在時鐘信號的上升沿或下降沿對數(shù)據(jù)線進行采樣。
圖3 同步通信示意
如圖4所示,在異步通訊中,不使用時鐘信號進行數(shù)據(jù)同步,它們直接在數(shù)據(jù)信號中穿插一些同步用的信號位,或者把主體數(shù)據(jù)進行打包,以數(shù)據(jù)幀的格式傳輸數(shù)據(jù),某些通訊中還需要雙方約定數(shù)據(jù)的傳輸速率,以便更好地同步。
圖4 異步通信示意
在同步通信中,數(shù)據(jù)信號所傳輸?shù)膬?nèi)容絕大部分就是有效數(shù)據(jù),而異步通信中會包含有幀的各種標識符,所以同步通信的效率更高,但是同步通信雙方的時鐘允許誤差較小,而異步通信雙方的時鐘允許誤差較大。
1.4 通信速率
衡量通信性能的一個非常重要的參數(shù)就是通信速率,通常以比特率(bitrate)來表示,即每秒鐘傳輸?shù)亩M制位數(shù),單位為比特每秒(bit/s)。
容易與比特率混淆的概念是波特率(baudrate),它表示每秒鐘傳輸了多少個碼元。而碼元是通訊信號調(diào)制的概念,通訊中常用時間間隔相同的符號來表示一個二進制數(shù)字,這樣的信號稱為碼元。
很多常見的通信中,一個碼元就是一個二進制位,這種情況下比特率等于波特率。人們常常直接以波特率來表示比特率,大多數(shù)情況下是沒什么問題的,這里只是希望了解一下它們的區(qū)別。
(第一部分完,共五部分)